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運作情況
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登出并關閉自己