Mapreduce的combiner

每一個map都可能會產生大量的本地輸出,Combiner的作用就是對map端的輸出先做一次合併,以減少在map和reduce節點之間的數據傳輸量,以提高網絡IO性能,是MapReduce的一種優化手段之一。
l combiner是MR程序中Mapper和Reducer之外的一種組件
l combiner組件的父類就是Reducer
l combiner和reducer的區別在於運行的位置:
Combiner是在每一個maptask所在的節點運行
Reducer是接收全局所有Mapper的輸出結果;
l combiner的意義就是對每一個maptask的輸出進行局部彙總,以減小網絡傳輸量
l 具體實現步驟:
1、 自定義一個combiner繼承Reducer,重寫reduce方法
2、 在job中設置: job.setCombinerClass(CustomCombiner.class)
l combiner能夠應用的前提是不能影響最終的業務邏輯,而且,combiner的輸出kv應該跟reducer的輸入kv類型要對應起來
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章