1. 程式人生 > >Spark原始碼走讀(一) —— Spark應用提交流程

Spark原始碼走讀(一) —— Spark應用提交流程

  • Spark應用是使用spark-submit指令碼提交,指令碼內容如下,可知該指令碼把SparkSubmit類作為引數傳給spark-class指令碼
    spark-submit指令碼

  • 略去spark-class指令碼上面的載入配置等步驟,發現這裡使用launcher.Main啟動SparkSubmit的執行從而啟動應用。
    spark-class指令碼

  • 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排程了。