新一代mapreduce體系架構介紹-YARN
最近研究了下新一代的mapreduce框架YARN,這裡先對YARN框架的引入和架構做個介紹,後續針對每一塊做深入分析
從Hadoop0.23版本開始對於mapduce計算框架,就完全是新的架構了(YARN)。老的版本MRv1Jobtracker中存在單點,功能比較多的問題,負責資源管理排程和job的生命週期管理(task排程,跟蹤task過程狀態,task處理容錯),這樣當大量的任務需要處理時,單個的jobtracker無論在記憶體還是其他資源方面總存在瓶頸,在伸縮性、資源利用率、執行除mapreduce的其他任務等方面都會有限制。
MRv2Yarn框架把資源排程和
MRv1mapreduce框架使用slot做資源表示單位,並且mapslot和reduceslot分離的,這樣資源不能共享,資源利用率不高,yarn使用節點的cpu、記憶體等資源作為資源表示單位,大大提高了資源利用率。
MRv1只支援批量的mapreduce計算,MRv2yarn框架提供ApplicationMaster外掛式的框架庫,支援除了mapreduce
MRv2JobHistory從JobTracker中分離出來,減輕JobTracker的壓力。
上圖是yarn的架構,主要包括以下這幾種角色
ResourceManager(RM):主要接收客戶端任務請求,接收和監控NodeManager(NM)的資源情況彙報,負責資源的分配與排程,啟動和監控ApplicationMaster(AM)。
NodeManager:主要是節點上的資源管理,啟動Container執行task計算,上報資源、
ApplicationMaster:主要是單個Application(Job)的task管理和排程,向RM進行資源的申請,向NM發出launchContainer指令,接收NM的task處理狀態資訊。
下面簡單介紹一下提交一個job的處理過程,
1、clientsubmit一個job到RM,進入RM中的Scheduler佇列供排程
2、RM根據NM彙報的資源情況(NM會定時彙報資源和container使用情況),請求一個合適的NMlaunchcontainer,以啟動執行AM
3、AM啟動後,註冊到RM上,以使client可以查到AM的資訊,便於client直接和AM通訊
4、AM啟動後,根據Job相關的split的task情況,會和RM協商申請container資源
5、RM分配給AMcontainer資源後,根據container的資訊,向對應的NM請求launchcontainer
6、NM啟動container執行task,執行過程中向AM彙報進度狀態資訊,類似於MRv1中task的彙報;同時NM也會定時的向RM彙報container的使用情況。
7、在application(job)執行過程中,client可以和AM通訊,獲取application相關的進度和狀態資訊。
8、在application(job)完成後,AM通知RMclear自己的相關資訊,並關閉,釋放自己佔用的container。
轉載於:https://my.oschina.net/psuyun/blog/304664