yarn的執行流程
1) 使用者向YARN 中提交應用程式, 其中包括ApplicationMaster 程式、啟動ApplicationMaster 的命令、使用者程式等。
2) ResourceManager 為該應用程式分配第一個Container, 並與對應的NodeManager 通訊,要求它在這個Container 中啟動應用程式的ApplicationMaster。
3) ApplicationMaster 首先向ResourceManager 註冊, 這樣使用者可以直接通過ResourceManage 檢視應用程式的執行狀態,然後它將為各個任務申請資源,並監控它的執行狀態,直到執行結束,即重複步驟4~7。
4) ApplicationMaster 採用輪詢的方式通過RPC 協議向ResourceManager 申請和領取資源。
5) 一旦ApplicationMaster 申請到資源後,便與對應的NodeManager 通訊,要求它啟動任務。
6) NodeManager 為任務設定好執行環境(包括環境變數、JAR 包、二進位制程式等)後,將任務啟動命令寫到一個指令碼中,並通過執行該指令碼啟動任務。
7) 各個任務通過某個RPC 協議向ApplicationMaster 彙報自己的狀態和進度,以讓ApplicationMaster 隨時掌握各個任務的執行狀態,從而可以在任務失敗時重新啟動任務。在應用程式執行過程中,使用者可隨時通過RPC 向ApplicationMaster 查詢應用程式的當前執行狀態。
8) 應用程式執行完成後,ApplicationMaster 向ResourceManager 登出並關閉自己。