3 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先shuffling是將數(shù)據(jù)從映射器傳輸?shù)胶?jiǎn)化器的過(guò)程,所以我認(rèn)為對(duì)于簡(jiǎn)化器來(lái)說(shuō)很明顯是必要的,因?yàn)榉駝t,它們將無(wú)法獲得任何輸入(或每個(gè)映射器的輸入) 。改組甚至可以在地圖階段完成之前開(kāi)始,以節(jié)省一些時(shí)間。因此,當(dāng)?shù)貓D狀態(tài)尚未達(dá)到100%時(shí),您會(huì)看到縮小狀態(tài)大于0%(但小于33%)。
Sorting為減速器節(jié)省時(shí)間,幫助它輕松區(qū)分何時(shí)應(yīng)開(kāi)始新的減速任務(wù)。簡(jiǎn)單地說(shuō),當(dāng)排序后的輸入數(shù)據(jù)中的下一個(gè)鍵與上一個(gè)鍵不同時(shí),它只是啟動(dòng)一個(gè)新的reduce任務(wù)。每個(gè)reduce任務(wù)都會(huì)獲取一個(gè)鍵值對(duì)列表,但是它必須調(diào)用reduce()方法,該方法接受一個(gè)key-list(value)輸入,因此必須按鍵對(duì)值進(jìn)行分組。如果在映射階段對(duì)輸入數(shù)據(jù)進(jìn)行了預(yù)排序(本地),而在歸約階段簡(jiǎn)單地進(jìn)行了歸并排序(因?yàn)闅w約器從許多映射器獲取數(shù)據(jù)),則這樣做很容易。
Partitioning您在其中一個(gè)答案中提到的,是一個(gè)不同的過(guò)程。它確定映射相位的輸出(鍵,值)對(duì)將發(fā)送到哪個(gè)減速器。默認(rèn)的分區(qū)程序在鍵上使用哈希將其分配給reduce任務(wù),但是您可以覆蓋它并使用自己的自定義分區(qū)程序。
這些步驟的重要信息來(lái)源是此Yahoo教程。
下面是一個(gè)很好的圖形表示形式(在此圖中,混洗稱(chēng)為“復(fù)制”):
請(qǐng)注意,如果您指定零個(gè)減速器(setNumReduceTasks(0))shuffling,sorting則根本不會(huì)執(zhí)行和。然后,MapReduce作業(yè)在地圖階段停止,并且地圖階段不包括任何種類(lèi)的排序(因此,即使地圖階段也更快)。
更新:由于您正在尋找更正式的東西,因此您也可以閱讀Tom White的書(shū)“ Hadoop:權(quán)威指南”。這是您問(wèn)題的有趣部分。
Tom White自2007年2月以來(lái)一直是Apache Hadoop的提交者,并且是Apache Software Foundation的成員,因此我認(rèn)為它是相當(dāng)可信且正式的...

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊
讓我們回顧一下Mapreduce程序的關(guān)鍵階段。
該地圖相由映射器來(lái)完成。映射器在未排序的輸入鍵/值對(duì)上運(yùn)行。每個(gè)映射器為每個(gè)輸入鍵/值對(duì)發(fā)出零個(gè),一個(gè)或多個(gè)輸出鍵/值對(duì)。
該組合相由合成器來(lái)完成。該組合應(yīng)結(jié)合鍵/值對(duì)具有相同的密鑰。每個(gè)組合器可以運(yùn)行零次,一次或多次。
在洗牌和排序階段是由框架來(lái)完成。來(lái)自所有映射器的數(shù)據(jù)按鍵分組,在化簡(jiǎn)器中拆分,然后按鍵排序。每個(gè)化簡(jiǎn)器獲得與同一鍵關(guān)聯(lián)的所有值。程序員可以提供用于排序的自定義比較功能,以及用于數(shù)據(jù)拆分的分區(qū)程序。
該分區(qū)決定哪些減速會(huì)得到一個(gè)特定的鍵值對(duì)。
該減速器取得排序鍵/ [值列表]對(duì),排序由所述密鑰。值列表包含由映射器生成的具有相同鍵的所有值。每個(gè)縮減器為每個(gè)輸入鍵/值對(duì)發(fā)出零,一個(gè)或多個(gè)輸出鍵/值對(duì)。
看看這個(gè)javacodegeeks 文章由瑪麗亞Jurcovicova和mssqltips由達(dá)塔為了更好的理解文章

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
我想到的只是添加以上答案中缺少的幾點(diǎn)。從這里獲取的這張圖清楚地說(shuō)明了實(shí)際情況。
如果我再說(shuō)一遍的真正目的
拆分:通過(guò)在不同節(jié)點(diǎn)(映射程序)之間分配處理負(fù)載來(lái)改善并行處理,這將節(jié)省總體處理時(shí)間。
合并:縮小每個(gè)Mapper的輸出。這樣可以節(jié)省將數(shù)據(jù)從一個(gè)節(jié)點(diǎn)移動(dòng)到另一個(gè)節(jié)點(diǎn)的時(shí)間。
排序(隨機(jī)排序):使運(yùn)行時(shí)可以輕松地計(jì)劃(生成/啟動(dòng))新的reducer,在瀏覽排序項(xiàng)目列表時(shí),只要當(dāng)前鍵與先前的鍵不同,就可以生成一個(gè)新的reducer 。
- 3 回答
- 0 關(guān)注
- 694 瀏覽
添加回答
舉報(bào)