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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

本節書摘來異步社區《Hadoop MapReduce實戰手冊》一書中的第1章,第1.4節,作者: 【美】Srinath Perera , Thilina Gunarathne 譯者: 楊卓犖 責編: 楊海玲,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。

1.4 給WordCount MapReduce程序增加combiner步驟

Hadoop MapReduce實戰手冊
運行map函數后,如果有許多鍵值對使用相同的鍵,那么Hadoop必須將所有這些值傳送到reduce函數。這可能會產生一個非常顯著的開銷。為了優化這樣的場景,Hadoop支持一個專門的函數——combiner。如果配置了combiner,Hadoop會在運行完成mapper之后、調用reducer之前,在map節點所在的那個節點調用combiner。這可以顯著地減少傳輸到reduce步驟的數據量。

本節將說明如何在1.3節介紹的WordCount示例程序中使用combiner。

操作步驟
現在,讓我們加入combiner配置來運行MapReduce作業。

1. combiner必須和reduce函數具有相同的接口。對于WordCount示例程序,我們將會復用
reduce函數作為combiner。

2. 為了讓MapReduce作業使用combiner,需要在示例程序中取消//job.setCombinerClass.
(IntSumReducer.class);這行的注釋,然后重新編譯代碼。

3. 將hadoop-cookbook-chapter1.jar文件復制到HADOOP_HOME目錄,并且用前一節介紹的方式運行WordCount。確保運行作業之前刪除了舊的輸出目錄。

4. 最終結果會放在output目錄下。

工作原理
要激活combiner,用戶應該提供mapper、reducer和combiner作為MapReduce作業的輸入。在該環境中,一旦mapper函數執行完成,Hadoop就在mapper函數所在的節點上執行combiner。使用這種方法,combiner可以預先處理mapper所產生的數據,然后再將結果發送給reducer,從而減少轉移的數據量。

例如,WordCount示例,combiner從map步驟接收多個(word, 1)對作為輸入,并輸出一個(word, N)對。例如,如果輸入文檔中單詞“the”出現了10 000次,那么mapper將產生10 000個(the, 1)對,而combiner將只產生一個(the, 10,000),從而減少傳輸給reduce任務的數據量。

然而,combiner只適用于滿足代數交換律和結合律的函數。例如,同樣的思路對計算平均值就會無效。由于平均值是不滿足交換律和結合律的,在這種情況下,combiner將會得到一個錯誤的結果。

更多參考
雖然在示例程序中,我們是復用reduce函數實現的combiner功能,你也可以寫自己的combiner函數,就像我們在前一節中介紹的map和reduce函數。然而,combiner函數的簽名必須與reduce函數的簽名完全一致。

在本地配置Hadoop的情況下,使用combiner不會產生顯著的收益。然而,如1.8節所述,在分布式的集群環境中,combiner可以提供顯著的收益。

總結

以上是生活随笔為你收集整理的《Hadoop MapReduce实战手册》一1.4 给WordCount MapReduce程序增加combiner步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。