随后会实行spark-class命令,以SparkSubmit类为参数进行任务向Spark程序的提交,而Spark-class的shell脚本紧张是实行以下几个步骤:
(1)加载spark环境参数,从conf中获取
(2)载入java,jar包等

(3)调用org.apache.spark.launcher中的Main进行参数注入
(4)shell脚本监测任务实行状态,是否完成或者退出任务,通过实行返回值,判断是否结束
2.任务检测及提交任务到Spark
检测实行模式(class or submit)构建cmd,在submit中进行参数的检讨(SparkSubmitOptionParser),构建命令行并且打印回spark-class中,末了调用exec实行spark命令行提交任务。通过组装而成cmd内容如下所示:
3.SparkSubmit函数的实行
(1)Spark任务在提交之后会实行SparkSubmit中的main方法
(2)doSubmit()对log进行初始化,添加spark任务参数,通过参数类型实行任务:
SUBMIT:利用供应的参数提交application
KILL(Standalone and Mesos cluster mode only):通过REST协议终止任务
REQUEST_STATUS(Standalone and Mesos cluster mode only):通过REST协议要求已经提交任务的状态
PRINT_VERSION:对log输出版本信息
(3)调用submit函数:
doRunMain为集群调用子main class准备参数,然后调用runMain()实行任务invoke main
4.总结Spark在作业提交中会采取多种不同的参数及模式,都会根据不同的参数选择不同的分支实行,因此在末了提交的runMain中会将所须要的参数通报给实行函数。
本文分享自华为云社区《Spark内核解析之Spark-submit》,原文作者:笨熊爱喝cola。
点击关注,第一韶光理解华为云新鲜技能~