yarn的初步理解
查考site: http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-site/YARN.html
yarn結構圖如下:
1、yarn
下一代的MapReduce系統框架,也稱為MRv2(MapReduce version 2), 它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度。
YARN的基本思想是將JobTracker的兩個主要功能(資源管理和作業調度/監控)分離,主要方法是創建一個全局的ResourceManager(RM)
和若干個針對應用程序的ApplicationMaster(AM)。這里的應用程序是指傳統的MapReduce作業或作業的DAG。
2、ResourceManager(RM)
RM和與NM(NodeManager每個節點一個)共同組成整個數據計算框架,RM是系統中將資源分配給各個應用的最終決策者。
RM有兩個組件組成:
調度器(Scheduler)
應用管理器(ApplicationsManager,ASM)
調度器根據容量、隊列等限制條件(如每個隊列分配一定的資源,最多執行一定數量的作業等),將系統中的資源分配給各個正在運行的應用程序。
需要注意的是,該調度器是一個“純調度器”,它不再從事任何與具體應用程序相關的工作,比如不負責監控或者跟蹤應用的執行狀態等,也不負責重新啟動
因應用執行失敗或者硬件故障而產生的失敗任務,這些均交由應用程序相關的ApplicationMaster完成。調度器僅根據各個應用程序的資源需求進行資源分配,
而資源分配單位用一個抽象概念“資源容器”(Resource Container,簡稱Container)表示,Container是一個動態資源分配單位,它將內存、CPU、磁盤、網絡等資源封裝在一起,
從而限定每個任務使用的資源量。此外,該調度器是一個可插拔的組件,用戶可根據自己的需要設計新的調度器,YARN提供了多種直接可用的調度器,比如Fair Scheduler和Capacity Scheduler等。
3、NodeManager(NM)
NM是每個節點上的資源和任務管理器,一方面,它會定時地向RM匯報本節點上的資源使用情況和各個Container的運行狀態;另一方面,它接收并處理來自AM的Container啟動/停止等各種請求。
4、ApplicationsManager(ASM)
ASM主要負責接收作業,協商獲取第一個容器用于執行AM和提供重啟失敗AM container的服務。
5、ApplicationMaster(AM)
AM實際上是一個具體的框架庫,它的任務是【與RM協商獲取應用所需資源】和【與NM合作,以完成執行和監控task的任務】。
注:RM只負責監控AM,在AM運行失敗時候啟動它,RM并不負責AM內部任務的容錯,這由AM來完成。
6、Container
Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,RM為AM返回的資源便是用Container表示。
YARN會為每個任務分配一個Container,且該任務只能使用該Container中描述的資源。