1. 程式人生 > >YARN的工作原理

YARN的工作原理

一、YARN的組成

ResourceManagerNodeManagerJobHistoryServerContainersApplication MasterjobTaskClient組成。

ResourceManager:一個Cluster只有一個,負責資源排程、資源分配等工作。

NodeManager:執行在DataNode節點,負責啟動Application和對資源的管理。

JobHistoryServer:負責查詢job執行進度及元資料管理。

Containers:Container通過ResourceManager分配。包括容器的CPU、記憶體等資源。

Application Master:

ResourceManager將任務給Application Master,然後Application Master再將任務給NodeManager。每個Application只有一個Application Master,執行在Node Manager節點,Application Master是由ResourceManager指派的。

job:是需要執行的一個工作單元:它包括輸入資料、MapReduce程式和配置資訊。job也可以叫作Application。

task:一個具體做Mapper或Reducer的獨立的工作單元。task執行在NodeManager的Container中。

Client:

一個提交給ResourceManager的一個Application程式。


二、一個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。


任務完成!