Spark-Submit 常用命令

时间:2024-03-30 14:52:06

一个Spark任务好不容易开发完成了,终于要上集群跑了,就差万里长征的最后一步了:通过Spark-Submit命令上集群运行,这时候需要做哪些常规与优化工作呢。

这里贴一个常用的SparkSubmit提交脚本

脚本名称:submitHelperLabel.sh

脚本内容:

spark-submit \
--master yarn \
--name helper-label-count \
--deploy-mode cluster \
--supervise \
--num-executors 4 \
--executor-cores 2 \
--executor-memory 4g \
--driver-memory 1g \
--conf spark.driver.extraJavaOptions="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" \
--conf spark.executor.extraJavaOptions="-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/tmp/logs/spark/gc.log" \
--conf spark.yarn.executor.memoryOverhead=2048 \
--conf spark.shuffle.memoryFraction=0.4 \
--conf spark.shuffle.file.buffer=128kb \
--conf spark.core.connection.ack.wait.timeout=300 \
--conf spark.sql.inMemoryColumnStorage.compressed=true \
--conf spark.default.parallelism=12 \
--files /home/hadoop/codejar/online/helper-label/commons.xml \
--class com.code2144.spark.helperLabel.HelperLabelCount \
/home/hadoop/codejar/online/helper-label/helper-label.jar

脚本解读

执行脚本首先会执行Spark_HOME/bin下面的SparkSubmit脚本,接着传入一系列参数:

--master master地址standalone模式用spark://host:port, 或者 yarn模式等等。

--name 应用的名称,在webui可以看到每个任务的名称,如果没有默认以主类作为名称。如下:helper-label-count就是应用名,com.js.ipflow.flash.typeclient.ClientHandle就是主类名。

Spark-Submit 常用命令

--deploy-mode 这里用yarn下的cluster模式

--supervise 任务失败会重启几次

--num-executors 4 
--executor-cores 2 
--executor-memory 4g 
--driver-memory 1g 

这几个参数一起说:4个executor,每个executor2个核,4g内存,driver内存为1g(默认值)

--conf spark.driver.extraJavaOptions="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" \
--conf spark.executor.extraJavaOptions="-XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:/tmp/logs/spark/gc.log" \

需要加的一些配置,这里在driver和executor加了一些GC日志,并且executor日志保存在/tmp/logs/spark/gc.log位置,不确定在哪一个节点上哦。

--conf spark.yarn.executor.memoryOverhead=2048 \
--conf spark.shuffle.memoryFraction=0.4 \
--conf spark.shuffle.file.buffer=128kb \
--conf spark.core.connection.ack.wait.timeout=300 \
--conf spark.sql.inMemoryColumnStorage.compressed=true \
--conf spark.default.parallelism=12 \

这里是一些内存调优,堆外内存,shuffle内存占比,buffer,超时时间,sql压缩,并行度的参数优化。

--files /home/hadoop/codejar/online/helper-label/commons.xml \
--class com.code2144.spark.helperLabel.HelperLabelCount \
/home/hadoop/codejar/online/helper-label/helper-label.jar

--file 是添加的文件,通常是一些配置文件(数据库链接,日志配置文件等)

--class 是应用入口,main函数

最后就是jar包完整名

 

还有很多其它参数,可以参加官网:http://spark.apache.org/docs/latest/configuration.html#dynamically-loading-spark-properties