天天看點

YARN

YARN的基本組成:

ResourceManager(RM)
全局的資料總管,負責整個系統的資源管理和配置設定,由排程器(ResourceScheduler)和應用管理器(Applications Master ,ASM)組成

排程器(ResourceScheduler)
排程器根據容量,隊列等限制條件,将系統中的資源配置設定給各個正在運作的應用程式.排程器不參與任何應用程式的具體工作,僅根據應用程式的資源需求進行資源配置設定.排程器是個可拔插的元件,使用者可根據自己的需要設計新的排程器.
2.應用程式管理器(ASM)
應用程式管理器負責整個系統中所有應用程式,包括應用程式的送出,與排程器協商資源以啟動ApplicationMaster(AM),監控AM運作狀态并在失敗時重新開機它

ApplicationMaster(AM)
使用者送出的每個應用程式均包含一個AM,主要功能包括:
1.與RM排程器協商以擷取資源
2.将得到的資源進一步配置設定給内部的任務
3.與NodeManager(NM)通信,以啟動\停止任務
4.監控所有任務運作狀态,并在任務運作失敗時重新為任務申請資源以重新開機任務
目前YARN自帶兩個AM實作:
1.用于示範AM編寫方法的執行個體程式distributedshell,它可以申請一定數目的Container以運作一個shell指令或shell腳本
2.運作MapReduce應用程式的AM-MRAppMaster

NodeManager(NM)
NM是每個節點上的資源和任務管理器.一方面,它會定時的向RM彙報本節點上的資源使用情況和各個Container的運作狀态;另一方面,它接收并處理來自AM的Container啟動\停止等請求

Container
YARN中的資源抽象,它封裝了某個節點上的多元資源,當AM向RM申請資源時,RM為AM傳回的資源便是使用Container表示的.YARN會為每個任務配置設定一個Container,且該任務隻能使用該Container中描述的資源.Container是一個動态資源劃分機關,是根據應用程式的需求動态生成的.

YARN 的通信協定:

YARN的通信協定使用RPC協定,該協定是遠端過程調用協定,是一種通過網絡從遠端計算機程式上請求服務,而不需要了解底層網絡技術的協定.在YARN中,任何兩個需要互相通信的元件之間僅有一個RPC協定,而對于任何一個RPC協定,通信雙方有一端是Client,另一端是Server,且Client總是主動連接配接Server的,是以,YARN實際上采用的是拉式通信模型.YARN内部涉及主要的RPC協定,分别是ApplicationClientProtocol,ApplicationMasterProtocol,ContainerManagementProtocol,ResourceManagerAdministrationProtocol和ResourceTracker

ApplicationClientProtocol
JobClient(作業送出用戶端)與RM之間的協定,JobClient通過此RPC協定送出應用程式,查詢應用程式

ApplicationMasterProtocol
AM與RM之間的協定,AM通過該協定向RM注冊和撤銷自己,并為各個任務申請資源

ContainerManagementProtocol
AM與NM之間的協定,AM通過該協定要求NM啟動或停止Container,擷取各個Container的使用狀态等資訊

ResourceManagerAdministrationProtocol
Admin(管理者)與RM之間的通信協定,Admin通過該協定更新系統的配置檔案,比如節點黑白名單,使用者隊列權限等

ResourceTracker
NM與RM之間的協定,NM通過該協定向RM注冊,并定時發送心跳資訊彙報目前節點的資源使用情況和Container運作情況

YARN
YARN

1.使用者向YARN送出應用程式

2.RM(其中的排程器)為該應用程式配置設定第一個Container,(ASM)與對應的NM通信,要求它在這個Container中啟動應用程式的AM

3.AM首先向RM(其中的ASM)注冊,這樣使用者可以直接通過RM檢視應用程式的運作狀況,然後AM會為各個任務申請資源,并監控任務的運作狀态直至任務完成,運作結束.在任務未完成時,4-7步是會循環運作的

4.AM采用輪詢的方式通過RPC協定向RM(其中的排程器)申請和領取資源

5.AM申請到資源後與對應NM通信,要求啟動任務

6.NM為任務設定好運作環境後,将任務啟動指令寫到一個腳本中,并通過運作該腳本啟動任務.

7.各個任務通過RPC協定向AM彙報自己的狀态和進度,讓AM随時掌握各個任務的運作狀态,進而可以在任務失敗時重新啟動任務

在應用程式運作過程中,使用者可随時通過RPC向AM查詢應用程式的目前狀況

8.應用程式運作完成後,AM向RM登出并關閉自己

繼續閱讀