YARN的工作原理
一、YARN的組成
由ResourceManager、NodeManager、JobHistoryServer、Containers、Application Master、job、Task、Client組成。
ResourceManager:一個Cluster只有一個,負責資源排程、資源分配等工作。
NodeManager:執行在DataNode節點,負責啟動Application和對資源的管理。
JobHistoryServer:負責查詢job執行進度及元資料管理。
Containers:Container通過ResourceManager分配。包括容器的CPU、記憶體等資源。
Application Master:
job:是需要執行的一個工作單元:它包括輸入資料、MapReduce程式和配置資訊。job也可以叫作Application。
task:一個具體做Mapper或Reducer的獨立的工作單元。task執行在NodeManager的Container中。
Client:
二、一個job執行處理的整體流程
使用者向YARN中提交作業,其中包括Application Master啟動、Application Master的命令及使用者程式等;ResourceManager為作業分配第一個Container,並與對應的NodeManager通訊,要求它在這個Container中啟動該作業的Application
Master;Application Master首先向ResourceManager註冊,這樣使用者可以直接通過ResourceManager查詢作業的執行狀態,然後它將為各個任務申請資源並監控任務的執行狀態,直到任務結束。Application通過RPC請求想ResourceManager申請和領取資源。
然後ApplicationMaster要求指定的NodeManager節點啟動任務。
啟動之後,去幹ResoucrceManager指定的Map task。
等Map task幹完之後,通知Application Master。然後Application Master去告知Resource Manager。接下來Resource Manager分配新的資源給Application Master,讓它找人去幹其他的活。
接下來Application Master通知NodeManager啟動新的Container準備幹新的活,該活的輸入是Map task的輸出。
開始幹Reduce task任務。
等各個節點的Reduce task都幹好了,將幹活的NodeManager的任務結果進行同步。做最後的Reduce任務。
等計算完了,最後將最終的結果輸出到HDFS。
任務完成!