使用combiners提升MapReduce性能_第1页
使用combiners提升MapReduce性能_第2页
使用combiners提升MapReduce性能_第3页
使用combiners提升MapReduce性能_第4页
使用combiners提升MapReduce性能_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲:张义目录0102Combiner简介使用CombinerCombiner简介1Combiner简介众所周知,Hadoop框架使用Mapper将数据处理成一个个的<key,value>键值对,在网络节点间对其进行整理(shuffle),然后使用Reducer处理数据并进行最终输出。在上述过程中,我们看到至少两个性能瓶颈:网络带宽严重被占降低程序效率:如果我们有10亿个数据,Mapper会生成10亿个键值对在网络间进行传输,但如果我们只是对数据求最大值,那么很明显的Mapper只需要输出它所知道的最大值即可。这样做不仅可以减轻网络压力,同样也可以大幅度提高程序效率。Combiner简介单一节点承载过重降低程序性能:假设使用美国专利数据集中的国家一项来阐述数据倾斜这个定义,这样的数据远远不是一致性的或者说平衡分布的,由于大多数专利的国家都属于美国,这样不仅Mapper中的键值对、中间阶段(shuffle)的键值对等,大多数的键值对最终会聚集于一个单一的Reducer之上,压倒这个Reducer,从而大大降低程序的性能。Combiner简介在MapReduce编程模型中,在Mapper和Reducer之间有一个非常重要的组件,它解决了上述的性能瓶颈问题,它就是combiner。combiner是一种MapReduce优化方式,可减少需要从mapper发送到reducer的键/值对数量。combiner通过在map端执行一些reduce作业来处理由mapper发出的键/值对的中间结果,map阶段执行部分聚合,并将此数据发送到reducer。Combiner简介通常MapReduce作业同时具有map和reduce阶段。map阶段以键/值格式处理输入数据,并产生键/值对作为输出。reduce阶段接受map输出的每个键,遍历每个键的值,并产生零个或多个键/值对。有时不需要reduce阶段,比如在SQL语句中使用SELECT或WHERE子句时。在这种情况下,可以使用map-only作业来处理输入数据。使用combiner2使用combiner可以使用与输入和输出记录相关的MapReduce计数器来检查combiner的效率。本节课程不深入探讨关于combiner的编程。为了实现combiner,开发人员可以简单地使用现有的reduce函数作为combiner。combiner实现reducer接口,可以以map输出的多个值调用它,并用此代码覆盖reduce()方法。使用combiner可以通过查看MapReduceFramework组中名为CombineInputRecords和CombineOutputRecords的计数器来验证combiner的影响。如果作业没有使用任何combiner,则这两个计数器都显示零值。在这种情况下,没有combiner类,reduce输入记录的数量与map输出记录的数量相同。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论