1,spark源码分析-spark-submit启动

运行脚本

按照一般的场景下,我们使用spark自带的例子进行dubug的分析。

spark-submit --conf spark.eventLog.dir=hdfs://cluster/logs/spark   --conf spark.yarn.stagingDir=/data/spark/ --master yarn --deploy-mode cluster --executor-memory 2G --executor-cores 2 --queue root.default --class org.apache.spark.examples.SparkPi spark-examples_2.11-2.2.2.jar 1000

spark-submit

exec "${SPARK_HOME}"/bin/spark-class org.apache.spark.deploy.SparkSubmit "$@"

spark-class

运行堆内存=128m,由此可以计算并发度
"$RUNNER" -Xmx128m -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "$@"

Main

org.apache.spark.launcher.Main
执行新的shell命令 main-class org.apache.spark.deploy.SparkSubmit

设置环境变量 SPARK_PRINT_LAUNCH_COMMAND=true可以查看命令

SparkSubmit

设置verbose可以查看参数

一般而言,提交用户和执行用户是不一致的,在这个地方使用ugi创建代理用户去真正的执行。而真正的用户可以在spark内部传递用来记录读写记录,权限等。
 val proxyUser = UserGroupInformation.createProxyUser(args.proxyUser,
          UserGroupInformation.getCurrentUser())

YarnClusterApplication

org.apache.spark.deploy.yarn.YarnClusterApplication

在这里插入图片描述

在这里插入图片描述

Client

org.apache.spark.deploy.yarn.Client
在这里插入图片描述
一些重要的配置

appStagingDirPath

所有的配置和环境信息,都打包到这个目录,后续分发给executor.
spark.yarn.stagingDir /spark-stage/
结构如下:
在这里插入图片描述
在这里插入图片描述

spark.driver.memory/cores

applicationMaster的资源和driver的资源是一致的。
applicationMaster所需要的内存= amMemory + amMemoryOverhead,具体需要多少内存,后面再说。
spark.driver.memory 7g
spark.driver.cores 2

spark.driver.memoryOverhead

spark.driver.extraLibraryPath

指定启动driver的JVM时用到的库路径/,比如一些native函数(压缩类文件等)

spark.driver.extraJavaOptions

传递给driver的JVM选项字符串(包括GC,日志设置,或者其他的扩展javaagent)

Djava.io.tmpdir
具体发送到driver的命令如下
LD_LIBRARY_PATH="/Hadoop-2.8.3/hadoop/lib/native:$LD_LIBRARY_PATH" {{JAVA_HOME}}/bin/java -server -Xmx7168m -Djava.io.tmpdir={{PWD}}/tmp '-XX:+UseConcMarkSweepGC' '-Dfile.encoding=utf-8' '-XX:CICompilerCount=2' '-XX:ParallelGCThreads=16' -Dspark.yarn.app.container.log.dir=<LOG_DIR> org.apache.spark.deploy.yarn.ApplicationMaster --class 'org.apache.spark.examples.SparkPi' --jar file:/spark/examples/jars/spark-examples_2.11-2.2.2-mrs-1.9.0.jar --arg '1000' --properties-file {{PWD}}/__spark_conf__/__spark_conf__.properties 1> <LOG_DIR>/stdout 2> <LOG_DIR>/stderr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值