MapReduce的combiner (经典实例wordcount带你get combiner, 此文绝对精辟...)

一个MapReduce的job,在map之后,reduce之前,会有一个数据聚集的过程,即map完的数据会按照key聚集在一起,会有一个shuffle的过程,然后再进入reduce。

combiner好处:

  1. 降低shuffle write写磁盘的数据量。
  2. 降低shuffle read拉取数据量的大小。
  3. 降低reduce端聚合的次数。

在不同的节点上的map会将同一个key的数据传输到同一个节点上,而传输就会涉及到数据量、传输时间,combiner的作用就是在每个节点map完之后,将同一个节点上的数据,按照key输入combiner中,然后combiner可以将同一个key的数据合并或压缩,然后再传输出去。

典型的例子就是wordCount程序, 数据分块之后,

1.进入map,分词,生成key/value对,map阶段结束之后,产生键值对类似这样:abc 1;aaa 1……

2.将同一个节点上的数据,按照key聚集起来,

3.输入到combiner中,进行数据聚集,输入的数据是:abc,1;abc,1 ;abc,1 ;abc,1,然后输出一条:abc,4

4.将combiner聚集完的数据传输出去,

5.进入reduce阶段:输入的数据是:abc,list(4);abc ,list( 3);abc ,list( 1),输出的数据是:abc , 8

6.将reduce输出的数据写入文件

至此,一个job结束

另附上数据格式转换:

map: (K1, V1) → list(K2,V2) 

combine: (K2, list(V2)) → list(K3, V3) 

reduce: (K3, list(V3)) → list(K4, V4)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值