1. 程式人生 > 實用技巧 >新一代mapreduce體系架構介紹-YARN

新一代mapreduce體系架構介紹-YARN

>>> hot3.png

最近研究了下新一代的mapreduce框架YARN,這裡先對YARN框架的引入和架構做個介紹,後續針對每一塊做深入分析

從Hadoop0.23版本開始對於mapduce計算框架,就完全是新的架構了(YARN)。老的版本MRv1Jobtracker中存在單點,功能比較多的問題,負責資源管理排程和job的生命週期管理(task排程,跟蹤task過程狀態,task處理容錯),這樣當大量的任務需要處理時,單個的jobtracker無論在記憶體還是其他資源方面總存在瓶頸,在伸縮性、資源利用率、執行除mapreduce的其他任務等方面都會有限制。

MRv2Yarn框架把資源排程和

task管理監控分離開來,由資源管理器NodeManager負責資源排程,每一個application(job)由一個AppMaster負責對task進行排程管理監控,並且可以監控AppMaster的狀態,有問題可以在其他節點重啟。

MRv1mapreduce框架使用slot做資源表示單位,並且mapslotreduceslot分離的,這樣資源不能共享,資源利用率不高,yarn使用節點的cpu、記憶體等資源作為資源表示單位,大大提高了資源利用率。

MRv1只支援批量的mapreduce計算,MRv2yarn框架提供ApplicationMaster外掛式的框架庫,支援除了mapreduce

外的其他的計算,如實時近實時的流處理,MPI等等,使得hadoop成為一個資源和資料共享的基礎計算框架,減少叢集運維成本,提高資源利用率。

MRv2JobHistoryJobTracker中分離出來,減輕JobTracker的壓力。

上圖是yarn的架構,主要包括以下這幾種角色

ResourceManager(RM):主要接收客戶端任務請求,接收和監控NodeManager(NM)的資源情況彙報,負責資源的分配與排程,啟動和監控ApplicationMaster(AM)

NodeManager:主要是節點上的資源管理,啟動Container執行task計算,上報資源、

container情況給RM和任務處理情況給AM

ApplicationMaster:主要是單個Application(Job)task管理和排程,向RM進行資源的申請,向NM發出launchContainer指令,接收NMtask處理狀態資訊。

下面簡單介紹一下提交一個job的處理過程,

1、clientsubmit一個jobRM,進入RM中的Scheduler佇列供排程

2、RM根據NM彙報的資源情況(NM會定時彙報資源和container使用情況),請求一個合適的NMlaunchcontainer,以啟動執行AM

3、AM啟動後,註冊到RM上,以使client可以查到AM的資訊,便於client直接和AM通訊

4、AM啟動後,根據Job相關的splittask情況,會和RM協商申請container資源

5、RM分配給AMcontainer資源後,根據container的資訊,向對應的NM請求launchcontainer

6、NM啟動container執行task,執行過程中向AM彙報進度狀態資訊,類似於MRv1task的彙報;同時NM也會定時的向RM彙報container的使用情況。

7、在application(job)執行過程中,client可以和AM通訊,獲取application相關的進度和狀態資訊。

8、在application(job)完成後,AM通知RMclear自己的相關資訊,並關閉,釋放自己佔用的container

轉載於:https://my.oschina.net/psuyun/blog/304664