MapReduce架構(gòu)原理、執(zhí)行過(guò)程詳解

MapReduce架構(gòu)組成

Hadoop1.x版本架構(gòu)組成的 JobTracker/TaskTracker 機(jī)制需要大規(guī)模的調(diào)整來(lái)修復(fù)它在可擴(kuò)展性,內(nèi)存消耗嚴(yán)重,可靠性和性能上都有缺陷。所以引進(jìn)了新的Hadoop2.x的架構(gòu)--基于Yarn的架構(gòu)


image.png

術(shù)語(yǔ)解讀

  • ResourceManager:Yarn的資源管理器,負(fù)責(zé)管理和分配集群的資源,如內(nèi)存、cpu、磁盤等
  • NodeManager:Yarn的節(jié)點(diǎn)管理器,負(fù)責(zé)管理和監(jiān)控每個(gè)節(jié)點(diǎn)的計(jì)算容器(Container),管理Container的生命周期、監(jiān)控每一個(gè)Container的資源使用情況、追蹤節(jié)點(diǎn)健康狀況,與ResourceManager保持通信。
  • ApplicationMaster:應(yīng)用管理器,負(fù)責(zé)監(jiān)控單個(gè)作業(yè)整個(gè)生命周期的任務(wù)進(jìn)度和狀況,向resourcemanager發(fā)送心跳檢查。
  • Hdfs:分布式文件系統(tǒng),用與上述不同實(shí)體之間文件的共享

MapReduce基本執(zhí)行過(guò)程

執(zhí)行過(guò)程大致是以下幾步:1、作業(yè)的提交(圖中1~4步驟) 2、作業(yè)的初始化(圖5~7) 3、作業(yè)的分配(圖8~10) 4、作業(yè)的執(zhí)行(圖11) 5、作業(yè)進(jìn)度的更新 6、作業(yè)的完成或者失敗


mapreduce.png

圖片上我都說(shuō)的比較清楚了,再補(bǔ)充幾點(diǎn):

  • 檢查作業(yè)說(shuō)明是指輸出目錄是否存在,如果存在那么久不提交,會(huì)報(bào)錯(cuò)
  • 計(jì)算輸入分片是根據(jù)block塊的大小決定的,如1G文件,而HDFS設(shè)置中block size是128M,那么久分為8個(gè)輸入分片,每個(gè)分片是一個(gè)單獨(dú)的Map任務(wù)。
  • Uber作業(yè)是指比較小的作業(yè),這種作業(yè),就和自己在同一個(gè)容器中就可以了,map reduce都在同一個(gè)容器,而如果是比較大的作業(yè),是要申請(qǐng)資源的,首先為map申請(qǐng),map達(dá)到百分之5的時(shí)候?yàn)閞educe申請(qǐng)。
  • 任務(wù)是一個(gè)java應(yīng)用 main class是YarnChild

MapReduce Shuffle


無(wú)標(biāo)題3.png

MapReduce Combiner
每一個(gè)map可能會(huì)產(chǎn)生大量的輸出,combiner的作用就是在map端對(duì)輸出先做一次合并,以減少傳輸?shù)絩educer的數(shù)據(jù)量。
combiner最基本是實(shí)現(xiàn)本地key的歸并,combiner具有類似本地的reduce功能。
如果不用combiner,那么,所有的結(jié)果都是reduce完成,效率會(huì)相對(duì)低下。使用combiner,先完成的map會(huì)在本地聚合,提升速度。
注意:Combiner的輸出是Reducer的輸入,Combiner絕不能改變最終的計(jì)算結(jié)果。所以從我的想法來(lái)看,Combiner只應(yīng)該用于那 種Reduce的輸入key/value與輸出key/value類型完全一致,且不影響最終結(jié)果的場(chǎng)景。比如累加,最大值等。

解釋一下

問(wèn):為什么使用Combiner?
21 * 答:Combiner發(fā)生在Map端,對(duì)數(shù)據(jù)進(jìn)行規(guī)約處理,數(shù)據(jù)量變小了,傳送到reduce端的數(shù)據(jù)量變小了,傳輸時(shí)間變短,作業(yè)的整體時(shí)間變短。
22 *
23 * 問(wèn):為什么Combiner不作為MR運(yùn)行的標(biāo)配,而是可選步驟哪?
24 * 答:因?yàn)椴皇撬械乃惴ǘ歼m合使用Combiner處理,例如求平均數(shù)。
25 *
26 * 問(wèn):Combiner本身已經(jīng)執(zhí)行了reduce操作,為什么在Reducer階段還要執(zhí)行reduce操作哪?
27 * 答:combiner操作發(fā)生在map端的,處理一個(gè)任務(wù)所接收的文件中的數(shù)據(jù),不能跨map任務(wù)執(zhí)行;只有reduce可以接收多個(gè)map任務(wù)處理的數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容