一、YarnClient
二、YarnCluster
三、詳細描述
- 客戶端(Client)通過YARN的ResourceManager提交應用程序。在此過程中,客戶端進行權限驗證,生成Job
ID和資源上傳路徑,并將這些信息返回給客戶端。 - 客戶端將jar包、配置文件、第三方包等文件上傳到指定的HDFS路徑。完成后,客戶端再次向ResourceManager提交作業執行請求。
- ResourceManager收到請求后,將其封裝為一個任務,并將其插入Scheduler的任務隊列中,等待空閑資源。
- 一旦集群中有空閑資源,Scheduler將任務分配給NodeManager,NodeManager創建容器,并啟動ApplicationMaster。
- ApplicationMaster啟動后,從HDFS中拉取jar包,解析數據流(DAG),根據數據流生成階段(Stage),確定任務的并發度,并向ResourceManager申請資源。
- ResourceManager接收到請求后,將任務封裝為Task,并將其插入任務隊列。
- 一旦集群中有空閑資源,ResourceManager將任務分配給NodeManager,NodeManager啟動容器,并與ApplicationMaster通信,以在容器中啟動Executor進程。
- Executor向ApplicationMaster注冊,并申請任務。ApplicationMaster對任務進行解析,并將Task發送到Executor上。
- Executor執行Task,并將執行結果或狀態報告給ApplicationMaster。
- 當所有任務執行完畢時,ApplicationMaster通知ResourceManager注銷應用,回收資源。至此,整個作業的提交流程結束。