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核心文件》。