YARNlinux
概述:
是hadoop2.x版本引入的資源管理系統
直接從MR1演化而來
新的hadoop資源管理器,通用的資源管理器
可爲上層應用提供統一的資源管理和調度,它的引入爲集羣在利用率,資源統一管理和數據共享等方面帶來了巨大的好處
核心思想:
將MapReduce1中的JobTracker的資源管理和做業調度兩個功能分開,分別由
ResourceManager和ApplicationMaster進程來實現
ResourceManager:負責整個集羣的資源管理和調度
ApplicationMaster:負責應用程序相關的事務,好比任務調度,任務監控和容錯等編程
YARN的出現可使得多個計算框架運行在一個集羣當中
每一個應用程序對應一個ApplicatonMaster
目前能夠支持多種計算框架運行在YARN上,好比MapReduce,Strom,Spark,Flink,網絡
YARN與MapReduce關係:架構
YARN是一個資源管理系統,負責資源管理和調度
MapReduce只是運行在YARN上的一個應用程序
若是把YARN看做androd,則mapreduce只是一個app
mapreduce1.0是一個獨立系統,直接運行在linux上
mapreduce2.0則是運行在YARN上的框架,且能夠與多種框架一塊兒運行在YARN上app
YARN 系統架構:框架
ResourceManager
負責集羣中全部資源的統一管理和分配,它接受來自各個節點的NodeManager的資源彙報信息,並把這些信息按照必定的策略分配給各個應用程序,是整個YARN集羣中最重要的組件之一,他的設計直接決定了系統的可擴展性,可用性和容錯性,它的功能較多,包括ApplicationMaster管理,NodeManager管理,Application管理,狀態機管理等oop
主要有如下幾個功能:
1.與客戶端交互,處理來自客戶端的請求
2.啓動和管理ApplicationMaster,
而且在它失敗時從新啓動它
3.管理NodeManager,接受來自NodeManager的資源彙報信息,下達管理指令
4.資源管理和調度,接受來自ApplicationMaster的資源申請請求並向讓NodeManager爲之分配資源spa
Nodemanager
是運行在單個節點上的代理,管理hadoop集羣中單個計算節點,他須要與相應用程序的ApplicationMaster和集羣管理者ResourceManager交互
1.從ApplicationMaster上接收有關Contioner的命令並執行
2.向ResourceManager彙報各個container運行狀態和節點健康情況,並領取有關的Container的命令並執行設計
ApplicationMaster
與應用程序相關的組件
1.負責數據切分,把每份數據分配給對應的Map Task
2.爲應用程序申請資源並進一步分配給內部的任務。好比從ResourceManager獲取分配的資源,而後分配給Task任務
3.任務的監控與容錯。一旦一個任務掛掉以後,他能夠從新向ResourceManager申請資源代理
Container
Container是YARN中的資源抽象,它封裝了某個節點上的多維度資源,如內存,CPU,磁盤,網絡等。當AM向RM申請資源時,RM爲AM返回的資源即是用Container表示的。
YARN會爲每一個任務分配一個Container,且該任務只能使用該Container中描述的資源。須要注意的是,Container不一樣於MR(mapreduce)v1中的slot(也是資源分配單位),他是一個動態資源劃分單位,是根據應用程序的需求動態生成的
MapReduce on YARN
運行在YARN上的應用程序分爲兩類:短應用程序和長應用程序
短應用程序:是指在必定時間內能夠運行完成並正常退出的應用程序,不如MapReduce做業 離線計算
長應用程序:
是指不出意外,永不中止的應用程序,一般是一些服務
好比Strom Service(主要包括Nimbus和Supervisor兩類服務)
HBase Service(包括Hmaste:和RegionServer兩類服務)等,而他們自己做爲一個框架提供了編程接口供用戶使用 spark 實時計算
當用戶向YARN中提交一個應用程序後,YARN將分爲兩個階段運行該應用程序:
第一個階段是啓動ApplicationMaster
第二個階段是由ApplicationMater建立應用程序,,爲它申請資源,並監控它的整個運行過程,直到運行完成
YARN 高可用:
yarn裏面的zkfc和ResourceManager是在一塊的 不一樣於HDFS
MasterHADaemon:與Master服務運行在同一個進程中,能夠接收外部RPC命令,以控制Master服務的啓動和中止
SharedStorage:共享存儲系統,Active Master將信息寫入共享存儲系統,而Standby Master則讀取該信息以保持與Active Master的同步
ZKFailoverController:基於Zookeeper實現的切換控制器,主要由ActiveStandbyElector和HealthMonitor兩個核心組件構成。
ActiveStandbyElector:負責與Zookeeper集羣交互經過嘗試獲取全局鎖,以判斷所管理的Master是進入Active仍是進入Standby狀態
HealthMonitor:監控各個活動Master的狀態,以根據他們的狀態進行狀態切換
Zookeeper:核心功能是經過維護一把全局鎖控制整個集羣有且僅有一個Active Master。固然,若是Sharedstorge採用了Zookeeper,則還會記錄一些其餘狀態和運行時信息。