我们都知道MapReduce是通过读取文件产生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的数据量,减少网络带宽。
领取专属 10元无门槛券
私享最新 技术干货