hadoop中combiner的作用

之前一直很困惑combiner有什么用,这次看了书有了一些理解的

hadoop允许用户声明一个combiner,运行在map的输入上,函数的输出作为reduce函数的输入。

比如:
对这样的语句"daddy finger, daddy finger, where are you, here I am, here I am, how do you do"进行workcount。
有两个map分别处理三个短句,
map1的输出结果是:<daddy, 1> <finger, 1> <daddy, 1> <finger, 1> <where, 1> <are, 1> <you, 1>;
map2的输出结果是:<here, 1> <I, 1> <am ,1> <here, 1> <I, 1> <am, 1> <how, 1> <do, 1> <you, 1> <do, 1>。
有一个reduce来处理count操作。如果不采用combiner的话,总共有17条记录传递给reduce task。

如果采用combiner的话,combiner会对map task本地端的结果进行combine操作(这里是wordcount),这样map端的数据结果就是combiner之后的结果。
比如map1的输出结果就变成<daddy, 2> <finger, 2> <where, 1> <are, 1> <you, 1>;
map2的输出结果就变成<here, 2> <I, 2> <am ,2> <how, 1> <do, 2> <you, 1>。
这样总共有11条记录传递给reduce task,比之前的少。所以combier主要目的是减少map输出。

总而言之就是:
当map生成的数据过大时,带宽就成了瓶颈,怎样精简压缩传给Reduce的数据,又不影响最终的结果呢。有一种方法就是使用Combiner,Combiner号称本地的Reduce,Reduce最终的输入,是Combiner的输出。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值