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
(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實現。