本篇主要记录看源码的一个执行过程路径,简要记录,方便以后理清思路,或者给正在看源码的提供一个思路。还是对着源码看看相信会有很大的收获。
入口
spark 提交的任务入口都是SparkSubmit,从SparkSubmit.scala main class开始
main
==>
submit(appArgs)
==>
prepareSubmitEnvironment
准备提交环境变量等,主要是判断是那种语言,java python R ,判断master是yarn 还是 mesos, 判断那种执行模式 client 还是cluster ,会解析得到不同的mainCalss. 这里on yarn Cluster的 main class是org.apache.spark.deploy.yarn.Client 。 on yarn client模式 的main class就是用户指定的 --class 参数
duRunMain -->
runMain //得到main class , main method 然后调用反射mainMethod.invoke 开始执行
yarn-cluster模式
从org.apache.spark.deploy.yarn.Client类的main class开始执行
main ==>
run ===>
submitApplication
val containerContext = createContainerLaunchContext(newAppResponse)//构建启动APPmaster的 command
val appContext = createApplicationSubmissionCont