Spark源码走读(一) —— Spark应用提交流程

  • Spark应用是使用spark-submit脚本提交,脚本内容如下,可知该脚本把SparkSubmit类作为参数传给spark-class脚本
    Spark源码走读(一) —— Spark应用提交流程_第1张图片

  • 略去spark-class脚本上面的加载配置等步骤,发现这里使用launcher.Main启动SparkSubmit的执行从而启动应用。
    Spark源码走读(一) —— Spark应用提交流程_第2张图片

  • SparkSubmit中的main函数,主要是解析参数,根据参数执行不同行为。
    Spark源码走读(一) —— Spark应用提交流程_第3张图片
  • submit函数主要分两步:
    • 1、为提交的应用准备环境
    • 2、用这个环境调用child main class的main方法
  • PrepareSubmitEnvironment方法就是为提交的应用准备环境,其中会设置cluster manger,有三种YARN,MESOS和STANDALONE;部署模式,分client和cluster;等。
    Spark源码走读(一) —— Spark应用提交流程_第4张图片
    Spark源码走读(一) —— Spark应用提交流程_第5张图片
  • 可以看出执行了doRunMain –> runMain方法。如果deploymode是client或者clustermanager是yarn且deploymode是cluster,则这里的childMainClass就是所提交应用的类名。下面是runMain方法中部分代码:
    Spark源码走读(一) —— Spark应用提交流程_第6张图片
  • 可知通过反射调用了所提交应用的类中的main方法,之后便是实际的程序执行,涉及到job调度了。

你可能感兴趣的:(Spark)