2018-06-22 14:58:03 1388瀏覽
本篇文章扣丁學(xué)堂大數(shù)據(jù)培訓(xùn)小編和大家分享一下Hadoop2運(yùn)行機(jī)制,文章中會(huì)有代碼列出供大家參考。對(duì)大數(shù)據(jù)感興趣的小伙伴現(xiàn)在就隨扣丁學(xué)堂的小編一起來(lái)了解一下吧。
1、Resource Manager,Application Master 和 Node Manager
在Hadoop2中將JobTracker兩個(gè)主要的功能分離成單獨(dú)的組件,這兩個(gè)功能是資源管理(Resource Manager)和任務(wù)調(diào)度/監(jiān)控(Application Master)。
新的資源管理器全局管理所有應(yīng)用程序計(jì)算資源的分配,每一個(gè)應(yīng)用的 ApplicationMaster 負(fù)責(zé)相應(yīng)的調(diào)度和協(xié)調(diào)。一個(gè)應(yīng)用程序無(wú)非是一個(gè)單獨(dú)的傳統(tǒng)的 MapReduce 任務(wù)或者是一個(gè) DAG( 有向無(wú)環(huán)圖 ) 任務(wù)。
事實(shí)上,每一個(gè)應(yīng)用的ApplicationMaster是一個(gè)詳細(xì)的框架庫(kù),它結(jié)合從ResourceManager獲得的資源和 NodeManager 協(xié)同工作來(lái)運(yùn)行和監(jiān)控任務(wù)。
在上圖中ResourceManager支持分層級(jí)的應(yīng)用隊(duì)列,這些隊(duì)列享有集群一定比例的資源。從某種意義上講它就是一個(gè)純粹的調(diào)度器,它在執(zhí)行過(guò)程中不對(duì)應(yīng)用進(jìn)行監(jiān)控和狀態(tài)跟蹤。同樣,它也不能重啟因應(yīng)用失敗或者硬件錯(cuò)誤而運(yùn)行失敗的任務(wù)。
ResourceManager 是基于應(yīng)用程序?qū)Y源的需求進(jìn)行調(diào)度的 ; 每一個(gè)應(yīng)用程序需要不同類型的資源因此就需要不同的容器。資源包括:內(nèi)存,CPU,磁盤,網(wǎng)絡(luò)等等。可以看出,這同現(xiàn) Mapreduce 固定類型的資源使用模型有顯著區(qū)別,它給集群的使用帶來(lái)負(fù)面的影響。資源管理器提供一個(gè)調(diào)度策略的插件,它負(fù)責(zé)將集群資源分配給多個(gè)隊(duì)列和應(yīng)用程序。調(diào)度插件可以基于現(xiàn)有的能力調(diào)度和公平調(diào)度模型。
在上圖中 NodeManager 是每一臺(tái)機(jī)器框架的代理,是執(zhí)行應(yīng)用程序的容器,監(jiān)控應(yīng)用程序的資源使用情況 (CPU,內(nèi)存,硬盤,網(wǎng)絡(luò) ) 并且向調(diào)度器匯報(bào)。
在上圖中,每一個(gè)應(yīng)用的 ApplicationMaster的職責(zé)有:向調(diào)度器索要適當(dāng)?shù)馁Y源容器,運(yùn)行任務(wù),跟蹤應(yīng)用程序的狀態(tài)和監(jiān)控它們的進(jìn)程,處理任務(wù)的失敗原因。
2、調(diào)用順序呢
(1)客戶端的Map Reduce程序通過(guò)hadoop shell提交到hadoop的集群中。
(2)程序會(huì)通過(guò)RPC通信將打成jar包的程序的有關(guān)信息傳遞給Hadoop集群中RM(ResourceManager),可稱為領(lǐng)取Job ID的過(guò)程。
(3)RM將提交上來(lái)的任務(wù)分配一個(gè)唯一的ID,同時(shí)會(huì)將run.jar的在HDFS上的存儲(chǔ)路徑發(fā)送給客戶端。
(4)客戶端得到那個(gè)存儲(chǔ)路徑之后,會(huì)相應(yīng)的拼接出最終的存放路徑目錄,然后將run.jar分多份存儲(chǔ)在HDFS目錄中,默認(rèn)情況下備份數(shù)量為10份.可配置。
(5)客戶端提交一些配置信息,例如:最終存儲(chǔ)路徑,Job ID等給RM。
(6)RM會(huì)將這些配置信息放入一個(gè)隊(duì)列當(dāng)中,供調(diào)度器調(diào)用.至于調(diào)度的算法,不必深究。
(7)NM(NodeManager)和RM是通過(guò)心跳機(jī)制保持著通信的,NM會(huì)定期的向RM去領(lǐng)取任務(wù)。
(8)RM會(huì)在任意的一臺(tái)或多臺(tái)的NM中,啟動(dòng)任務(wù)監(jiān)控的進(jìn)程Application Master.用來(lái)監(jiān)控其他NM中YARN Child的執(zhí)行的情況。。
(9)NM在領(lǐng)取到任務(wù)之后,得到信息,會(huì)去HDFS的下載run.jar.然后在本地的機(jī)器上啟動(dòng)YARN Child進(jìn)程來(lái)執(zhí)行map或者reduce函數(shù).map函數(shù)的處理之后的中間結(jié)果數(shù)據(jù)會(huì)放在本地文件系統(tǒng)中的。
(10)在結(jié)束程序之后,將結(jié)果數(shù)據(jù)寫會(huì)HDFS中。
一個(gè)Job從提交到執(zhí)行的過(guò)程差不多如上所述。
以上就是扣丁學(xué)堂大數(shù)據(jù)在線學(xué)習(xí)小編給大家分享的Hadoop2運(yùn)行機(jī)制簡(jiǎn)介,希望對(duì)小伙伴們有所幫助。想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢,扣丁學(xué)堂是專業(yè)的大數(shù)據(jù)培訓(xùn)機(jī)構(gòu),不僅有專業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的大數(shù)據(jù)在線視頻供學(xué)員觀看學(xué)習(xí)。喜歡大數(shù)據(jù)開發(fā)想要學(xué)習(xí)的小伙伴快快行動(dòng)吧。扣丁學(xué)堂大數(shù)據(jù)學(xué)習(xí)群:209080834。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“大數(shù)據(jù)培訓(xùn)資訊”的相關(guān)文章>>