Yarn源码剖析(二) --- spark-submit

本文深入探讨了如何通过spark-submit将任务提交到YARN。从spark-submit的参数解析开始,详细阐述了任务提交过程,包括YarnClusterApplication、Client对象的创建,向ResourceManager提交ApplicationMaster,AM的启动及Executor的分配和启动。文章总结了Spark任务提交的整个流程,并预告了接下来将分析YARN中ApplicationMaster的启动和资源调度。
摘要由CSDN通过智能技术生成

spark-submit

前言

上文Yarn源码剖析(一) --- RM与NM服务启动以及心跳通信介绍了yarn是如何启动的,本文将介绍在yarn正常启动后,任务是如何通过spark-submit提交到yarn上的。

spark-submit脚本

1. 先来观察一下任务提交时的spark-submit脚本中各个参数的含义(并没列举所有,只列举了关键的几个参数)

/spark/bin/spark-submit \
--master yarn \ //提交模式,显而易见我们是提交到yarn上
--deploy-mode cluster \ //运行的模式,还有一种client模式,但大多用于调试,此处使用cluster模式
--class org.apache.spark.test \ //提交的任务
--name "test" \ //任务名字
--queue root.default \ //提交的队列
--driver-memory 3g \ //为driver申请的内存
--num-executors 1 \ //executors的数量,对应yarn中的Container个数
--executor-memory 6g \ //为每一个executor申请的内存
--executor-cores 4 \ //为每一个executor申请的core
--conf spark.yarn.driver.memoryOverhead=1g \ //driver可使用的非堆内存,这些内存用于如VM,字符 串常量池以及其他额外本地开销等
--conf spark.yarn.executor.memoryOverhead=2g \ //每个executor可使用的非堆内存,这些内存用于如 VM,字符串常量池以及其他额外本地开销等

2. 用户按照自己的需求提交了该脚本,然后进入到任务提交阶段,实现类是org.apache.spark.deploy.SparkSubmit:

从main方法中可以看到这段代码,如果是SUBMIT,则调用submit 
调用顺序:main--> submit(appArgs)->runMain(childArgs, childClasspath,sysProps,hildMainCl
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值