日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《Hadoop MapReduce实战手册》一1.4 给WordCount MapReduce程序增加combiner步骤

發(fā)布時(shí)間:2024/1/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Hadoop MapReduce实战手册》一1.4 给WordCount MapReduce程序增加combiner步骤 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本節(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。