spark-submit提交任務時執行流程(簡單版)

瑾明达發表於2024-07-12

yarn cluster模式提交spark任務

(1)執行指令碼提交任務,實際是啟動一個SparkSubmit的JVM程序。

(2)SparkSubmit類中的main方法反射呼叫YarnClusterApplication的main方法。

(3)YarnClusterApplication建立Yarn客戶端,然後向yarn伺服器傳送執行指令:bin/java ApplicationMaster。

(4)Yarn(Resource Manager)收到指令後會在指定的NameNode中啟動Spark的ApplicationMaster。

(5)ApplicationMaster啟動Driver執行緒,執行使用者的作業。

(6)ApplicationMaster向ResourceManager註冊,申請資源。

(7)ResourceManager啟動NameNode,NameNode向ApplicationMaster註冊。

(8)ApplicationMaster向NameNode傳送指令,bin/java YarnCoarseGrainedExecutorBackend。啟動Executor後端程序。

(9)CoarseGrainedExecutorExecutorBackend程序會和driver通訊,啟動計算物件Executor等待接收任務,註冊已經啟動的Executor。

(10)driver執行緒繼續執行完成作業的排程和分配,自身任務的執行和監控任務的執行。

注:SparkSubmit是執行在提交命令的伺服器,和ApplicationMaster和CoarseGrainedExecutorBackend是獨立的程序。

Driver是執行在ApplicationMaster上的執行緒。Executor和YarnClusterApplication是物件。

參考:尚矽谷《Spark核心文件》。

相關文章