1. 程式人生 > >Mapreduce的combiner

Mapreduce的combiner

輸出結果 父類 設置 .class 提高 邏輯 每一個 job mapred

每一個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類型要對應起來

Mapreduce的combiner