《Hadoop MapReduce实战手册》一1.4 给WordCount MapReduce程序增加combiner步骤
本節(jié)書(shū)摘來(lái)異步社區(qū)《Hadoop MapReduce實(shí)戰(zhàn)手冊(cè)》一書(shū)中的第1章,第1.4節(jié),作者: 【美】Srinath Perera , Thilina Gunarathne 譯者: 楊卓犖 責(zé)編: 楊海玲,更多章節(jié)內(nèi)容可以訪問(wèn)云棲社區(qū)“異步社區(qū)”公眾號(hào)查看。
1.4 給WordCount MapReduce程序增加combiner步驟
Hadoop MapReduce實(shí)戰(zhàn)手冊(cè)
運(yùn)行map函數(shù)后,如果有許多鍵值對(duì)使用相同的鍵,那么Hadoop必須將所有這些值傳送到reduce函數(shù)。這可能會(huì)產(chǎn)生一個(gè)非常顯著的開(kāi)銷。為了優(yōu)化這樣的場(chǎng)景,Hadoop支持一個(gè)專門的函數(shù)——combiner。如果配置了combiner,Hadoop會(huì)在運(yùn)行完成mapper之后、調(diào)用reducer之前,在map節(jié)點(diǎn)所在的那個(gè)節(jié)點(diǎn)調(diào)用combiner。這可以顯著地減少傳輸?shù)絩educe步驟的數(shù)據(jù)量。
本節(jié)將說(shuō)明如何在1.3節(jié)介紹的WordCount示例程序中使用combiner。
操作步驟
現(xiàn)在,讓我們加入combiner配置來(lái)運(yùn)行MapReduce作業(yè)。
1. combiner必須和reduce函數(shù)具有相同的接口。對(duì)于WordCount示例程序,我們將會(huì)復(fù)用
reduce函數(shù)作為combiner。
2. 為了讓MapReduce作業(yè)使用combiner,需要在示例程序中取消//job.setCombinerClass.
(IntSumReducer.class);這行的注釋,然后重新編譯代碼。
3. 將hadoop-cookbook-chapter1.jar文件復(fù)制到HADOOP_HOME目錄,并且用前一節(jié)介紹的方式運(yùn)行WordCount。確保運(yùn)行作業(yè)之前刪除了舊的輸出目錄。
4. 最終結(jié)果會(huì)放在output目錄下。
工作原理
要激活combiner,用戶應(yīng)該提供mapper、reducer和combiner作為MapReduce作業(yè)的輸入。在該環(huán)境中,一旦mapper函數(shù)執(zhí)行完成,Hadoop就在mapper函數(shù)所在的節(jié)點(diǎn)上執(zhí)行combiner。使用這種方法,combiner可以預(yù)先處理mapper所產(chǎn)生的數(shù)據(jù),然后再將結(jié)果發(fā)送給reducer,從而減少轉(zhuǎn)移的數(shù)據(jù)量。
例如,WordCount示例,combiner從map步驟接收多個(gè)(word, 1)對(duì)作為輸入,并輸出一個(gè)(word, N)對(duì)。例如,如果輸入文檔中單詞“the”出現(xiàn)了10 000次,那么mapper將產(chǎn)生10 000個(gè)(the, 1)對(duì),而combiner將只產(chǎn)生一個(gè)(the, 10,000),從而減少傳輸給reduce任務(wù)的數(shù)據(jù)量。
然而,combiner只適用于滿足代數(shù)交換律和結(jié)合律的函數(shù)。例如,同樣的思路對(duì)計(jì)算平均值就會(huì)無(wú)效。由于平均值是不滿足交換律和結(jié)合律的,在這種情況下,combiner將會(huì)得到一個(gè)錯(cuò)誤的結(jié)果。
更多參考
雖然在示例程序中,我們是復(fù)用reduce函數(shù)實(shí)現(xiàn)的combiner功能,你也可以寫(xiě)自己的combiner函數(shù),就像我們?cè)谇耙还?jié)中介紹的map和reduce函數(shù)。然而,combiner函數(shù)的簽名必須與reduce函數(shù)的簽名完全一致。
在本地配置Hadoop的情況下,使用combiner不會(huì)產(chǎn)生顯著的收益。然而,如1.8節(jié)所述,在分布式的集群環(huán)境中,combiner可以提供顯著的收益。
總結(jié)
以上是生活随笔為你收集整理的《Hadoop MapReduce实战手册》一1.4 给WordCount MapReduce程序增加combiner步骤的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《Android安全技术揭秘与防范》—第
- 下一篇: 《深入理解Elasticsearch(原