MapReduce階段的kv變化
MapReduce是通過inputformat類讀取文件產生K1,V1,map階段讀取數據,產生K2,V2;而Reduce階段通過拉取map階段的數據進行處理產生新的K3,V3
在map階段讀取數據產生K2,V2之後,我們可以通過使用combiner規約來將map階段的k2進行合併,V2生成集合,也就是從而減少生成文件的大小,減少reduce讀取map階段文件的網絡傳輸。也就是本該在reduce階段進行相同key合併,value形成新的集合的這個過程在map階段通過使用規約提前完成了
注意
我們如果不使用規約(combiner),所有的結果都要在reduce階段完成,效率就會相對低下。使用combiner的話,就會在map端做本地聚合,提升效率
combiner是在每一個maptask所在的節點運行,Reducer是接收全局所有Mapper的輸出結果
規約的好處
通過規約,可以減少map最終的數據量,也就減少傳輸到reduce的數據量,減少網絡帶寬