1. YARN基本組成結構
-
RM=排程器+應用程式管理器ASM
排程器:純排程器,不做與具體應用程式相關的工作,可插拔,使用者可以設計新的排程器
ASM:負責整個系統中所有的應用程式,包括應用程式送出、與排程器協商資源以啟動AM,監控AM運作狀态并在失敗時重新開機
- AM:每一個應用程式都要有一個AM,功能:與RM排程器協商擷取資源(用container表示);将得到的任務進一步配置設定給内部的任務;與NM通信以啟動/停止任務;監控所有任務運作狀态,并在任務運作失敗時重新為任務申請資源以重新開機
- NM:定時向RM彙報本節點上資源使用情況和container運作狀态;接收并處理來自AM的container啟動/停止要求
- Container:資源抽象,封裝了某個節點上的多元度資源,如記憶體、CPU、磁盤、網絡等。動态資源劃分機關(與MR1中slot差別)
2. YARN通信協定
- Client-RM: ApplicationClientProtocol
- Admin-RM: ResourceManagerAdministrationProtocol
- AM-RM: ApplicationMasterProtocol
- AM-NM: ContainerManagementProtocol
- NM-RM: ResourceTracker
3. YARN工作流程
- 使用者向yarn送出應用程式,包括AM程式、啟動AM指令、使用者程式
- RM為應用程式配置設定第一個container,并與對應的NM通信,要求它在這個container啟動應用程式的AM
- AM首先向RM注冊,使使用者可以直接通過RM檢視應用程式運作狀态,然後它為各個任務申請資源,監控運作狀态,直到結束
- AM采用輪詢的方式通過RPC協定向RM申請和領取資源
- 一旦AM申請到資源,與對應NM通信,要求它啟動任務
- NM為任務設定好運作環境(環境變量、jar、二進制程式etc),将任務啟動指令寫到一個腳本,通過運作腳本啟動任務
- 各個任務通過RPC協定向AM彙報自己狀态和進度,使用者可随時通過RPC向AM查詢應用程式目前運作狀态資訊
- 運作完成後,AM向RM登出并關閉自己。
4. YARN分布式緩存
- Yarn分布式緩存工作流程:
- client将應用程式需要的檔案資源(外部字典、jar、二進制檔案)送出到hdfs;
- client将應用程式送出到resourcemanager
- RM與某個NM通信, NM收到指令後,從hdfs下載下傳檔案緩存,啟動AM
- AM與RM通信,以請求和擷取計算資源
- AM收到新配置設定的計算資源後,與對應的NM通信,以啟動任務
- 如果該應用程式第一次在該節點上啟動任務,則NM首先從hdfs下載下傳檔案緩存到本地,然後啟動任務
- NM後續收到啟動任務請求後,如果檔案已在本地緩存,則直接運作任務,否則等等檔案緩存完再啟動