1. 程式人生 > >YARN工作流程(MapReduce提交應用程式)

YARN工作流程(MapReduce提交應用程式)

首先說工作流程

1:使用者向YARN中提交應用程式,其中包括ApplicationMaster程式、啟動ApplicationMaster的命令、使用者程式等。

2:ResourceManager為該應用程式分配第一個Container,並與對應的Node-Manager通訊,要求它在這個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登出並關閉自己。

當用戶向 YARN 中提交一個應用程式後, YARN 將分兩個階段執行該應用程式:

    a. 第一個階段是啟動ApplicationMaster;

    b. 第二個階段是由ApplicationMaster建立應用程式,為它申請資源,並監控它的整個執行過程,直到執行完成。

下面是流程圖

流程圖看起來比較複雜,需要配合流程找圖中對應的位置,這個工作流程是面試的時候經常問到的,需要慢慢理解