spark-submit 主要参数详细说明及Standalone集群最佳实践

本文主要是介绍spark-submit 主要参数详细说明及Standalone集群最佳实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 前言
  • 2. 参数说明
  • 3. Standalone集群最佳实践


1. 前言

部署提交应用到 spark 集群,可能会用到 spark-submit 工具,鉴于网上的博客质量残差不齐,且有很多完全是无效且错误的配置,没有搞明白诸如--total-executor-cores--executor-cores--num-executors的关系和区别。因此有必要结合官网文档 submitting-applications 详细记录一下参数的含义。

2. 参数说明

一般的用法是:spark-submit [option] xx.jar/xx.py
详细说明如下:

Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
Usage: spark-submit --kill [submission ID] --master [spark://...]
Usage: spark-submit --status [submission ID] --master [spark://...]
Usage: spark-submit run-example [options] example-class [example args]Options:--master MASTER_URL         spark://host:port, mesos://host:port, yarn,k8s://https://host:port, or local (Default: local[*]).--deploy-mode DEPLOY_MODE   Whether to launch the driver program locally ("client") oron one of the worker machines inside the cluster ("cluster")(Default: client).--class CLASS_NAME          Your application's main class (for Java / Scala apps).--name NAME                 A name of your application.--jars JARS                 Comma-separated list of jars to include on the driverand executor classpaths.--packages                  Comma-separated list of maven coordinates of jars to includeon the driver and executor classpaths. Will search the localmaven repo, then maven central and any additional remoterepositories given by --repositories. The format for thecoordinates should be groupId:artifactId:version.--exclude-packages          Comma-separated list of groupId:artifactId, to exclude whileresolving the dependencies provided in --packages to avoiddependency conflicts.--repositories              Comma-separated list of additional remote repositories tosearch for the maven coordinates given with --packages.--py-files PY_FILES         Comma-separated list of .zip, .egg, or .py files to placeon the PYTHONPATH for Python apps.--files FILES               Comma-separated list of files to be placed in the workingdirectory of each executor. File paths of these filesin executors can be accessed via SparkFiles.get(fileName).--archives ARCHIVES         Comma-separated list of archives to be extracted into theworking directory of each executor.--conf, -c PROP=VALUE       Arbitrary Spark configuration property.--properties-file FILE      Path to a file from which to load extra properties. If notspecified, this will look for conf/spark-defaults.conf.--driver-memory MEM         Memory for driver (e.g. 1000M, 2G) (Default: 1024M).--driver-java-options       Extra Java options to pass to the driver.--driver-library-path       Extra library path entries to pass to the driver.--driver-class-path         Extra class path entries to pass to the driver. Note thatjars added with --jars are automatically included in theclasspath.--executor-memory MEM       Memory per executor (e.g. 1000M, 2G) (Default: 1G).--proxy-user NAME           User to impersonate when submitting the application.This argument does not work with --principal / --keytab.--help, -h                  Show this help message and exit.--verbose, -v               Print additional debug output.--version,                  Print the version of current Spark.Spark Connect only:--remote CONNECT_URL       URL to connect to the server for Spark Connect, e.g.,sc://host:port. --master and --deploy-mode cannot be settogether with this option. This option is experimental, andmight change between minor releases.Cluster deploy mode only:--driver-cores NUM          Number of cores used by the driver, only in cluster mode(Default: 1).Spark standalone or Mesos with cluster deploy mode only:--supervise                 If given, restarts the driver on failure.Spark standalone, Mesos or K8s with cluster deploy mode only:--kill SUBMISSION_ID        If given, kills the driver specified.--status SUBMISSION_ID      If given, requests the status of the driver specified.Spark standalone and Mesos only:--total-executor-cores NUM  Total cores for all executors.Spark standalone, YARN and Kubernetes only:--executor-cores NUM        Number of cores used by each executor. (Default: 1 inYARN and K8S modes, or all available cores on the workerin standalone mode).Spark on YARN and Kubernetes only:--num-executors NUM         Number of executors to launch (Default: 2).If dynamic allocation is enabled, the initial number ofexecutors will be at least NUM.--principal PRINCIPAL       Principal to be used to login to KDC.--keytab KEYTAB             The full path to the file that contains the keytab for theprincipal specified above.Spark on YARN only:--queue QUEUE_NAME          The YARN queue to submit to (Default: "default").

我把一些主要的参数列举一下:

  • --master MASTER_URL ,其中 MASTER_URL 可选如下:
    • local,启1个work线程本地运行应用程序
    • local[K],启K个work线程本地运行应用程序
    • local[K,F],启K个work线程本地运行应用程序,且运行中最大容忍F次失败次数
    • local[*],尽可能多启动cpu逻辑线程本地运行应用程序
    • local[*,F],尽可能多启动cpu逻辑线程本地运行应用程序,且运行中最大容忍F次失败次数
    • local-cluster[N,C,M],仅用于单元测试,它在一个JVM中模拟一个分布式集群,其中有N个工作线程,每个工作线程有C个内核,每个工作进程有M MiB的内存。
    • spark://host:port,连接standalone集群的master节点,端口默认7077
    • spark://HOST1:PORT1,HOST2:PORT2,连接带有Zookeeper备份的standalone集群的master节点。该列表必须使用Zookeeper设置高可用性集群中的所有主主机,端口默认7077。
    • mesos://host:port,连接 Mesos 集群,端口默认5050
    • yarn,连接 YARN 集群,此外--deploy-mode参数决定了是client还是cluster模式
    • k8s://https://host:port 连接 K8s 集群,此外--deploy-mode参数决定了是client还是cluster模式
  • --deploy-mode 可选cluster及client。cluster:在work节点上部署driver。client:作为外部client在本地部署driver,默认是client
  • --driver-memory MEM 分配driver的内存,默认1024M
  • --executor-memory MEM 分配每个executor的内存,默认1G
  • --driver-cores NUM driver 可以使用的核数,默认1。注意仅在cluster模式下有效
  • --total-executor-cores NUM 所有的executor总共的核数。注意仅在Spark standalone 以及 Mesos下生效
  • --executor-cores NUM 每个executor可以使用的核数,默认1。注意仅在 Spark standalone, YARN以及Kubernetes下生效
  • --num-executors NUM executor启动的数量,默认2。注意仅在Spark on YARN 以及 Kubernetes下生效

3. Standalone集群最佳实践

因为Spark Standalone集群下--num-executors NUM 参数不生效,而且如果你没有用--deploy-mode=cluster,那么--driver-cores NUM 参数也是不生效的,那么一种可行的提交参数:

spark-submit 
--master spark://master:7077 
--name spark-app
--total-executor-cores={集群机器数}*{一台机器的逻辑核数-1}
--executor-cores={一台机器的逻辑核数-1}
--executor-memory={一台机器的内存-3GB}
xxx.py

例如,Spark Standalone集群有3台机器,每台机器cpu核数是16,每台机器的内存是16GB,那么可以如下提交:

spark-submit 
--master spark://master:7077 
--name spark-app
--total-executor-cores=45
--executor-cores=15
--executor-memory=13GB
xxx.py

当然,--executor-memory 可以根据实际情况去调整,先大致看一下有多少空闲的内存:

free -h

然后再调整大小~

欢迎关注本人,我是喜欢搞事的程序猿; 一起进步,一起学习;

欢迎关注知乎:SmallerFL;

也欢迎关注我的wx公众号:一个比特定乾坤

这篇关于spark-submit 主要参数详细说明及Standalone集群最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852251

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满