spark-submit参数

1、简介

本文主要讲述spark-submit/spark-shell等spark启动指令的参数机器作用。
参数调用方式:-- 参数key 参数value。

2、参数说明

2.1 通用参数(java,scala,python等程序)

  • master master
    这个master_url可以是如下几种:
spark://host:port   #standalone
mesos://host:port
yarn
yarn-cluster
yarn-client
local
  • deploy-mode deploy-mode
    Driver 程序的运行模式,client或者cluster,client表示master就是本地机器作为master,使用cluster表示使用有yarn从集群中选择机器作为master。建议使用client,使用client可以从本地关闭进程,即方便控制程序。

  • class class_name
    应用程序的入口点,main函数所在的类。主类的名称,包括完整的包路径,可借助pwd+相对路径,

  • name name
    spark application的名字,即该spark任务的名称

  • queue queue_name
    提交应用程序给哪个yarn队列, 默认的队列是default队列, 仅限与spark on yarn模式。

  • properties-file file
    设置应用程序属性的文件路径,默认是$SPARK_HOME/conf/spark-defaults.conf。

executor运行(内存/线程)参数:

  • executor-memory
    每个执行程序进程使用的内存量,e.g. 2g/2G
  • executor-cores num
    单个executor运行使用的核数,即开多少线程来并发执行task,默认为1, 仅限于spark on yarn模式。
  • num-executors num
    executor运行个数,即执行节点的个数,默认为2, 仅限于spark on yarn模式。
  • total-executor-cores num
    executor的运行使用的总核数,仅限与standalone和spark on mesos。

spark 任务中的最高并发的 task 数量为:

注意:所有核共用Executor的内存,所以要在内存和核数之间做好平衡$

driver 参数:

  • driver-memory mem
    Driver 程序运行时需要的内存, 默认为1g。该参数一般使用默认的即可,如果使用到了collect操作或者任务的平行度变大,可以将该参数变大一点;

  • driver-cores num
    Driver的运行核数,默认为1个,仅限于standalone模式。

  • conf:Key = value格式的任意Spark配置属性。对于包含空格的值,用引号括起“key = value”,eg:
    --conf spark.driver.maxResultSize=0

总结

在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种 JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。
spark-shuffle中的read和write操所需要的内存主要是在exector中的堆内内存中运行。

2.2 java参数介绍

  • driver-library-path path
    Driver程序依赖的第三方jar包。

  • driver-java-options
    Driver应用程序运行时的一些java配置选项,例如GC的相关信息等。

  • jars jars
    加入到Driver和集群executor的类路径中的jar包列表,以逗号进行分隔,可以是本地列表

  • packages package1,package2
    项目所需要包,集群模式下该参数需要跟repositories参数一起使用

  • repositories remoteAdress
    maven格式的远程存储库列表,如果不给定,则会使用机器安装的默认源,package指定的包也从这里下载。

spark 应用程序第三方jar文件依赖解决方法
1、将第三方jar文件打包到最终形成的spark应用程序jar文件中,适应于第三方jar文件比较小
2、使用spark-submit提交的参数:--jars,适应于spark-submit命令的机器上存在对应的jar文件
3、使用spark-submit提交命令的参数:--package,适应于远程仓库中的jar包

2.3 python参数介绍

  • py-files py-files
    使用逗号分隔的放置在python应用程序PYTHONPATH 上的.zip, .egg, .py的文件列表。

3、conf常用参数

3.1 使用方法

--conf key=value

3.2 常用key

  • spark.driver.maxResultSize
    每个Spark操作(例如,收集)的所有分区的序列化结果的总大小限制(以字节为单位)。 应至少为1M,或0为无限制。 如果总大小超过此限制,则将中止作业。 具有高限制可能会导致驱动程序中出现内存不足错误(取决于spark.driver.memory和JVM中对象的内存开销)。 设置适当的限制可以保护驱动程序免受内存不足错误的影响。但常用0,可以以此来查程序中bug

  • spark.network.timeout
    所有网络的交互间隔时间,如果超过这个时间executor将停止

  • spark.executor.heartbeatInterval
    executor给driver发送心跳的时间间隔,在任务执行的过程中,executot需要一直给driver发送心跳,如果超过该间隔,driver认为任务执行失败。单位ms,另外该值需要远小于spark.network.timeout

  • spark.executor.extraJavaOptions
    要传递给executors的一串额外JVM选项。 例如,GC设置或其他日志记录。

你可能感兴趣的:(spark-submit参数)