你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop实战:使用Combiner提高Map/Reduce程序效率

[日期:2016-03-23] 来源:CSDN博客  作者:SpatialBall [字体: ]

  好不容易算法搞定了,小数据测试也得到了很好的结果,可是扔到进群上,挂上大数据就挂了,无休止的reduce不会结束了。。。。。。。。。。。。。。。。

  ====================================================================

  这才想起还有个combiner!!!!!!!!!!!!!!!!!!!!!

  我们知道,MapReduce是分为Mapper任务和Reducer任务,Mapper任务的输出,通过网络传输到Reducer任务端,作为输入。

  在Reducer任务中,通常做的事情是对数据进行归约处理。那么当大量的Mapper结果狂奔而来的时候,Reducer很多时候是招架不住的,尤其是每一个结果size也很大的时候。现在该Combiner发挥作用了,我们可以把Reducer要做的工作让Combiner来做,这样不仅本地完成了数据的规约处理,同时也大量减少了网络传输负载,传输时间大大缩减可以提高效率。Reducer端接受的数据就基本是结果了。。。。。。。。。。。。。。。。。

  要注意的是,Combiner只在Mapper任务所在的节点运行,不会跨Mapper任务运行。Reduce端接收所有Mapper端的输出来作为输入。虽然两边的归约类是同一个,但是执行的位置完全不一样。

  并不是所有的归约工作都可以使用Combiner来做。比如求平均值就不能使用Combiner。因为对于平均数的归约算法不能多次调用。

  ===================================================================

 

Hadoop




收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款