MapReduce的具體執(zhí)行過程!看看你CGFT知識(shí)是不是掌握了?

CGFT考試科目中是有《大數(shù)據(jù)技術(shù)原理及應(yīng)用》,今天-就跟著小編一起看看MapReduce的具體執(zhí)行過程!看看你是不是掌握了呢?沒有的話,那更要看看了!

對(duì)于WordCount程序任務(wù),整個(gè)MapReduce過程實(shí)際的執(zhí)行順序如下。


①執(zhí)行WordCount的用戶程序(采用MapReduce編寫),會(huì)被系統(tǒng)分發(fā)部署到集群中的多臺(tái)機(jī)器上,其中一個(gè)機(jī)器作為Master,負(fù)責(zé)協(xié)調(diào)調(diào)度作業(yè)的執(zhí)行,其余機(jī)需法,可以執(zhí)行MapReduce任務(wù)。

②系統(tǒng)分配一部分Worker執(zhí)行Map任務(wù),一部分Worker執(zhí)行Reduce任務(wù);MapReduce將輸入文件切分成M個(gè)分片,MasterM個(gè)分片分給處于空閑狀態(tài)的N個(gè)Worker來(lái)處理;

③執(zhí)行Map任務(wù)的Worker讀取輸入數(shù)據(jù),執(zhí)行Map操作,生成一系列《key,value》形式的中間結(jié)果,并將中間結(jié)果保存在內(nèi)存的緩沖區(qū)中。

④緩沖區(qū)中的中間結(jié)果會(huì)被定期刷寫到本地磁盤上,并被劃分為R個(gè)分區(qū),這R個(gè)分區(qū)會(huì)被分發(fā)給R個(gè)執(zhí)行Reduce任務(wù)的Worker進(jìn)行處理:Master會(huì)記錄這R個(gè)分區(qū)在磁盤上的存儲(chǔ)位置,并通知R個(gè)執(zhí)行Reduce任務(wù)的Worker來(lái)“領(lǐng)取”屬于自己處理的那些分區(qū)的數(shù)據(jù)。

⑤執(zhí)行Reduce任務(wù)的Worker收到Master的通知后,就到相應(yīng)的Map機(jī)器上“領(lǐng)回”屬于自己處理的分區(qū),需要注意的是,正如之前在Shuffle過程闡述的那樣,可能會(huì)有多個(gè)Map機(jī)器通知某個(gè)Reduce機(jī)器來(lái)領(lǐng)取數(shù)據(jù),因此,一個(gè)執(zhí)行Reduce任務(wù)的Worker,可能會(huì)從多個(gè)Map機(jī)器上領(lǐng)取數(shù)據(jù)。當(dāng)位于所有Map機(jī)器上的、屬于自己處理的數(shù)據(jù),都已經(jīng)領(lǐng)取回來(lái)以后,這個(gè)執(zhí)行Reduce任務(wù)的Worker,會(huì)對(duì)領(lǐng)取到的鍵值對(duì)進(jìn)行排序(如果內(nèi)存中放不下需要用到外部排序),使得具有相同key的鍵值對(duì)聚集在一起,然后就可以開始執(zhí)行具體的Reduce操作了。

⑥執(zhí)行Reduce任務(wù)的Worker通歷中間數(shù)據(jù),對(duì)每一個(gè)*key,執(zhí)行Reduce函數(shù),結(jié)果寫入到輸出文件中;執(zhí)行完畢后,喚醒用戶程序,返回結(jié)果。