簡述hadoop 2.x Yarn組件協做過程

系統結構

hadoop2.x主要包括三個核心部分:node

(1) hdfs-分佈式存儲組件編程

hadoop用於存儲數據的基礎組件。分佈式的,跨網絡交互的hdfs集羣。網絡

(2) yarn-資源管理、任務調度組件框架

hadoop用於資源管理、任務調度的基礎組件。yarn使hadoop成爲分佈式處理數據的通用平臺,支持MapReduce v二、Tez、Hoya等多種計算框架。分佈式

(3) processing framework-分佈式計算框架oop

有不少針對不一樣計算模型的計算框架,好比進行批量處理的MapReduce v2,圖像處理的Giraph,流數據處理的Storm等。spa

(4) API-應用編程接口命令行

用戶與hadoop交互的並行計算編程接口。orm


Yarn組件

(1) Resource Managerblog

Resource Manager資源管理器是yarn的核心組件,它管理hadoop集羣全部的數據處理資源。Resource Manager的任務是維護一個全局的hadoop集羣的資源視圖,處理資源請求,調度請求和分配資源給發起請求的應用程序。Resource Manager本質上是一個給發起請求的應用程序分配資源的專用調度器,可是它依賴執行實際調度邏輯的調度模塊。

Resource Manager對應用程序和計算框架是不可知的,yarn的Resource Manager沒有map task或reduce task的概念,不跟蹤job工做和task任務的進程,也不處理故障。Resource Manager惟一的任務就是調度工做負載。高度的職責分離,使yarn更易擴展,可以對應用程序提供一個更通用的hadoop平臺,也使yarn支持多租戶hadoop集羣。

(2) Node Manager

每一個salve節點都有一個Node Manager守護進程,這個守護進程做爲Resource Manager的slave。每一個slave node都有一個服務,它關聯到使hadoop成爲分佈式系統的處理服務和存儲服務。每一個Node Manager跟蹤本節點可用的數據處理資源的狀況,並按期向Resource Manager發送報告。

hadoop集羣中處理資源是以container的形式被消費的,一個container是運行一個應用必要資源的集合,包括 CPU cores,內存,網絡帶寬和磁盤空間。一個已部署的container是做爲一個獨立的進程運行在hadoop集羣一個節點上的。運行在slave節點上的全部container進程在最初被slave節點的Node Manager守護進程配置、監控和跟蹤。

提示:hadoop2的container概念和hadoop1的slot概念相似,可是存在不少不一樣的地方:1)slot是爲運行map或reduce任務而定義的;而container是通用的,能夠容許任何應用程序邏輯。2)container能夠用自定義的資源數量來請求,只要請求的資源數量在一個container包含的資源範圍以內皆可;可是,請求slot資源,都是分配一個徹底的slot資源。

(3) Application Master

運行在hadoop集羣中的每一個應用程序都有它本身的專用Application Master實例,事實上這個實例運行在節點的container進程裏。在這個Application Master實例整個生命週期,它都給Resource Manager發送心跳信息,告之Resource Manager資源管理器Application Master示例的狀態和應用程序對資源須要的狀況。基於Resource Manager資源管理器調度的結果,資源管理器會給某個特定slave節點的Application Master實例分配container資源租用權-提早預約資源container的須要。

Application Master監督應用程序的整個生命週期,包括從Resource Manager請求資源container到向Node Manager提交container資源租用請求。

提示:每一個應用程計算框架都必須有本身的Application Master實現。好比,MapReduce有一個專門用來執行map和reduce任務的Application Maser實現。

發佈一個基於Yarn應用程序,瞭解Yarn組件協做的過程

  • 1)客戶端應用向Resource Manager提交請求。
  • 2)Resource Manager向Node Manager提交Application Master Instance建立請求。
  • 3)Node Manager獲取可用container,並啓動container進程。
  • 4)Application Master在container進程中進行初始化,並註冊到Resource Manager。
  • 5)Application Master向NameNode提交請求,獲取文件的名稱、位置和應用程序須要處理的數據塊,並計算處理完這些數據塊須要多少map和reduce任務。
  • 6)Application Master向Resource Manager發送心跳信息(帶有請求資源和狀態變化的清單),請求獲取應用程序運行所必要的資源。
  • 7)Resouce Manager接受資源請求,並把這個請求放在請求待調度的隊列裏,等待被調度。當請求的資源在slave節點有可用的,Resource Manager授予Application Master實例container資源的租用權。
  • 8)Application Master向Node Manager發送CLC(包含應用程序任務須要的一切:環境變量、受權token、運行時的本地資源、開啓實際進程的命令行信息),請求Resource Manager分配的container。而後Node Manager建立container進程,並啓動進程。
  • 9)當container進程開啓時,應用程序開始執行。Application Master會監督應用程序的進程。
  • 10)當應用的全部任務完成,Application Master發送結果集給客戶端,通知Resource Manager應用完成並從Resource Manager撤銷,關閉自身實例。
相關文章
相關標籤/搜索