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,可以以此来查程序中bugspark.network.timeout
所有网络的交互间隔时间,如果超过这个时间executor将停止spark.executor.heartbeatInterval
executor给driver发送心跳的时间间隔,在任务执行的过程中,executot需要一直给driver发送心跳,如果超过该间隔,driver认为任务执行失败。单位ms,另外该值需要远小于spark.network.timeoutspark.executor.extraJavaOptions
要传递给executors的一串额外JVM选项。 例如,GC设置或其他日志记录。