YARN-MapReduce的做業提交流程

YARN分佈式資源管理系統

組成:

  ResourceManagerYARN的資源管理器,主節點,經過NodeManager管理集羣中全部的資源node

  NodeManager:YARN的節點管理器,從節點,經過container管理資源,一個dataNode對應一個NodeManagerapp

  Container:包裝資源,CPU/內存/IO分佈式

  容器:最小的資源單位,1GB內存,一個虛擬核心spa

  Master:協調MapReduce做業中任務的運行blog

 

Application Master和MapReduce任務運行於容器中,這些容器由ResourceManager調度,由nodemanager管理隊列

 

yarn工做流程

  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會通知客戶端做業完成。內存

 

 

相關文章
相關標籤/搜索