Spark源码走读(一) —— Spark应用提交流程
Spark应用是使用spark-submit脚本提交,脚本内容如下,可知该脚本把SparkSubmit类作为参数传给spark-class脚本
略去spark-class脚本上面的加载配置等步骤,发现这里使用launcher.Main启动SparkSubmit的执行从而启动应用。
- SparkSubmit中的main函数,主要是解析参数,根据参数执行不同行为。
- submit函数主要分两步:
- 1、为提交的应用准备环境
- 2、用这个环境调用child main class的main方法
- PrepareSubmitEnvironment方法就是为提交的应用准备环境,其中会设置cluster manger,有三种YARN,MESOS和STANDALONE;部署模式,分client和cluster;等。
- 可以看出执行了doRunMain –> runMain方法。如果deploymode是client或者clustermanager是yarn且deploymode是cluster,则这里的childMainClass就是所提交应用的类名。下面是runMain方法中部分代码:
- 可知通过反射调用了所提交应用的类中的main方法,之后便是实际的程序执行,涉及到job调度了。