yarn

1.1           yarn(分佈式資源管理器)

1.1.1     yarn是什麼?

yarn是MapReduce第二代,將jobtracker重構呈功能分離成單獨的組件。Yarn能夠看做一個集羣操做系統,他爲應用程序提供了基本的服務來更好的利用大的、動態的、並行的基礎設施資源。用任何語言編寫的應用程序都能順利用任意規模的Hadoop集羣的計算和存儲資源。node

yarn是一種分層的集羣架構,分層的本質是resourcemanager—RM。網絡

  1. 控制整個集羣並管理應用程序向基礎計算資源分配;
  2. 將各資源(計算、內存、寬帶等)進行安排給基礎nodemanager(yarn的媒節點代理)

1.1.2     yarn主要架構

yarn由三個組件組成:ResourceManager(RM)、Applications Manager—ASM、NodeManager(NM)。架構

1.1.2.1               ResourceManager

ResourceManager(RM)是一個全局的資源管理器,負責整個系統的資源管理和分配,簡稱RM。app

RM構成:框架

  1. Scheduler--調度器:根據容量、隊列等限制條件(如每一個隊列分配必定的資源,最多執行必定數量的做業等),將系統中的資源分配給各個正在運行的應用程序,該調度器是一個可插拔的組件,用戶可根據本身的須要設計新的調度器。
  2. Applications Manager--ASM 應用程序管理器:負責管理整個系統中全部應用程序,包括應用程序提交、與調度器協商資源以啓動ApplicationMaster、監控ApplicationMaster運行狀態並在失敗時從新啓動它等。

1.1.2.2               ApplicationMaster

ApplicationMaster是應用程序管理器,簡稱AM。分佈式

       AM是每一個用戶做業的主進程,負責管理做業生命週期,包括動態的增長或減小資源使用(container)、管理執行流程(map任務和reduce任務),處理故障和計算誤差以及執行其餘的本地優化。oop

AM的功能優化

  1.                  i.            與RM調度器協商以獲取資源--用Container表示;
  2.                ii.            將獲得的任務進一步分配給內部的任務(資源的二次分配);
  3.              iii.            與NM通訊以執行和監控任務;
  4.               iv.            監控全部任務運行狀態,並在任務運行失敗時從新爲任務申請資源以重啓任務。

1.1.2.3               NodeManager(NM)

NM是hadoop每一個節點上的資源和任務管理器,一方面,它會定時地向RM彙報本節點上的資源使用狀況和各個Container的運行狀態;另外一方面,它接收並處理來自AM的Container啓動/中止等各類請求。操作系統

 

1.1.2.4               Container

Container(容器)是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,YARN會爲每一個任務分配一個Container,且該任務只能使用該Container中描述的資源。設計

單個節點上能夠有多個Container。系統中的每一個節點能夠認爲是有內存和CPU的最小容量的多個

Container組成。AM能夠請求任何Container來佔據最小容量的整數倍的資源。

註釋:Container是綁定到特定集羣節點的一組資源邏輯組合,能夠理解爲一個容器。

1.1.3     RM與NM的關係

RM與NM經過心跳通訊,RM與每一個節點上的NM進程交互。NM負責本地資源的監控,故障報告以及container生命週期的管理(如啓動和殺死做業)。RM依賴NM來維護集羣的全局視圖。

在啓動時,NM向RM註冊,而後發送包含自身狀態的心跳,並等待來自RM的指令。NM的主要目標是管理RM分配給他的應用Container。

1.1.4     Yarn的做業流程

AM與RM、NM是經過可擴展網絡協議進行通訊的,AM向RM發出資源請求(包括本地化偏好—HDFS的使用、container屬性等),當一個資源被調度給一個AM時,RM爲該資源生成一個租約,供AM經過心跳獲取。Container經過特定協議與AM通訊來報告狀態和健康信息以及接受框架特定的指令。以下圖所示yarn的做業流程

客戶端提交做業申請

  1. 客戶端向ResourceManager(後續簡稱RM)提交做業申請。
  2. RM根據申請內容返回相關的信息(例如根據input的路徑,返回對應的文件元數據,還有做業資源的提交路徑)。
  3. 客戶端根據RM返回的信息生成資源文件(job.split、job.xml、app.jar)並將資源文件提交至提交路徑(通常存放在hdfs上)
  4. 資源文件提交完畢,向RM申請運行applicationMaster(後續簡稱AM)。

2)RM處理用戶請求

RM將用戶的請求打包爲task,放置調度隊列,根據當前yarn的調度模式進行調度(YARN提供的三種任務調度策略:FIFO Scheduler,Capacity Scheduler 和 Fair Scheduler)。

3)NodeManager從隊列中獲取task。

建立contianer容器啓動AM和下載資源文件。

4)AM向RM申請運行mapTask容器,RM將請求再打包爲task放置調度隊列。

其它NM獲取到task後會再建立contianer容器並下載資源文件,contianer中的mapTask任務由AM負責監控和調度。

5)AM向maptask發送程序啓動命令。

6)contianer運行mapTask

7)當各節點mapTask運行完畢後,AM重複4的步驟(此次申請運行reduceTask)。

程序運行完成後,AM向RM註銷本身。

Hadoop1與Hadoop yarn的區別

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息