ResourceManager:YARN的資源管理器,主節點,經過NodeManager管理集羣中全部的資源node
NodeManager:YARN的節點管理器,從節點,經過container管理資源,一個dataNode對應一個NodeManagerapp
Container:包裝資源,CPU/內存/IO分佈式
容器:最小的資源單位,1GB內存,一個虛擬核心spa
Master:協調MapReduce做業中任務的運行blog
Application Master和MapReduce任務運行於容器中,這些容器由ResourceManager調度,由nodemanager管理隊列
1.client端向ResourceManager提交應用程序, 也就是client端會將 jar包,配置文件,切片等數據上傳到hdfs上的某路徑下;
2. resourceManager將此應用程序添加到任務隊列中;
3. 等待資源充沛時, resourceManager爲該應用程序分配第一個container,在這個container中啓動應用程序的ApplicationMaster;
4. ApplicationMaster首先向ResourceManager註冊,用戶能夠直接經過ResourceManager查看應用程序的運行狀態, 還會進行分片等工做, 以後向ResourceManager申請運行任務所需的資源;
5. ApplicationMaster採用輪詢的方式經過RPC協議向ResourceManager申請和領取資源, 發送命令讓NodeManager建立container, 以後執行task;
6. ApplicationMaster監控job執行做業, 必要時候進行容錯處理, 直到ApplicationMaster檢測到job完成後, 向ResourceManager通知, 註銷本身進程
1.取號,向resourcemanager申請一個新的application ID,用於MapReduce做業的ID
2.檢查做業的輸出,若是沒有指定輸出或者路徑已經存在(路徑存在時會覆蓋),則不提交做業,而且拋出異常
3.檢查做業的輸入並計算輸入切片,若是不能計算切片(如:輸入路徑不存在等),不提交做業,拋出異常
4.拷貝jar包,配置文件,計算好的切片到共享文件系統的以做業ID命名的目錄中,做業的jar包默認副本數量爲10,nademanager若是運行做業中的任務時,會有不少副本能夠訪問
5.調用resourcemanager的submitApplication方法提交做業
6.resourcemanager挑選一臺NodeManager,該NodeManager分配容器(Container)並在此容器上啓動application master進程,讀取客戶端上傳的資源,並計算須要多少map任務和reduce任務,向resourceManager爲map任務申請資源
reduce任務能夠運行於集羣中的任意位置,而map任務會有本地讀取數據的限制。
7.當map任務的完成度達到百分之五的時候,再向resourceManager爲reduce任務申請資源
8.全部的reduce任務運行完成以後,MRAppMaster會通知客戶端做業完成。內存