MapReduce中Combine优化机制利用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MapReduce中Combine优化机制利用

MapReduce中Combine优化机制利用   摘 要: 由Apache软件基金会开发的Hadoop分布式系统基础架构,作为一个主流的云计算平台,其核心框架之一的MapReduce性能已经成为一个研究热点,其中对于Shuffle阶段的优化,使用Combine优化机制是关键。文章详细介绍了MapReduce计算框架及Shuffle流程;分别从机理简介、执行时机、运行条件三方面详细阐述了如何利用Combine优化机制;通过搭建Hadoop集群,运用MapReduce分布式算法测试实验数据。实验结果充分证明,正确地运用Combine优化机制能显著提高MapReduce框架的性能。 关键词: 云计算; Hadoop; MapReduce; Shuffle; Combine 中图分类号:TP393.2 文献标志码:A 文章编号:1006-8228(2013)09-01-04 0 引言 我们正处在一个数据爆炸的时代,数据生成速度之快令人惊讶:纽约证券交易所每天产生1TB的数据,Facebook存储着约100亿张照片占用了约1PB存储容量[1]。由Apache软件基金会开发的Hadoop分布式系统基础架构,正是为了解决海量数据的存储和计算问题,并且由于其高可靠性、高可扩展性、高效性和高容错性,已经成为一种主流的云计算平台[2]。Hadoop核心框架之一的MapReduce,在性能优化和提高等方面的问题已经被学术界和工业界所关注,而其中很重要的一部分是对Shuffle阶段的优化。本文详细介绍了MapReduce框架和Shuffle阶段流程,研究分析了Shuffle优化过程中利用Combine优化机制存在的问题,通过实验和理论分析找出了解决方案,提出了Combine优化机制的执行时机和运行条件,并利用实例数据充分证明了正确地利用Combine优化机制能显著提高MapReduce框架性能。 1 MapReduce框架 1.1 框架简介 MapReduce是一种能够在普通配置计算机上并行处理大量数据的并行计算框架,使用这个框架,我们只需要编写我们想要执行的简单运算即可,写出的程序自动在集群上并行执行,而不必关心集群之间的调度、数据分布、负载均衡、容灾备份、通信等复杂细节,这些问题都已经被MapReduce框架封装好了。 MapReduce可以让没有任何分布式、并行编程经验的程序员很容易地利用分布式系统的资源[3],用户只需要自己定义map函数和reduce函数,这两个函数的灵感来自Lisp和许多其他函数式语言的map和reduce原语[4],map函数从输入数据中获取键/值对同时生成一个中间键值对集合,reduce函数合并有相同中间键的中间值,从而得到一个想要的结果。MapReduce框架会在任务运行时关注调度任务,并监视任务的执行状况,如果执行失败,将重新执行该任务[5]。 1.2 实现机制 首先输入文件会被用户程序调用的MapReduce库切分成若干64MB大小的数据块,这些数据块在框架中会被自动地创建副本,然后调用fork原语创建数个子程序,在这些子程序中有一个特殊程序master,其他程序都被当作worker程序,一个空闲的worker程序将收到由master分配的一个map任务和reduce任务。 worker程序从输入的数据片段中解析出键值对,然后这些键值对被传递给用户自定义实现的map函数,由map函数处理后,生成的中间键值对最终被写到本地磁盘上,master获取到这些键值对在本地磁盘上的存储位置并传送给负责执行reduce任务的worker节点。 reduce worker程序使用RPC从负责执行map任务的worker节点所在主机的磁盘上读取这些缓存数据,由于存在不同的key值映射到相同的reduce任务上,因此会进行排序,如果中间数据太大无法在内存中完成排序,那么就要进行外排序[5],最终使得具有相同key值的数据聚合在一起。 排序后的中间数据经过reduce worker遍历后,reduce worker程序将每一个惟一的中间key值和它相关的中间value值的集合传递给用户自定义的reduce函数[5]。 当所有的map、reduce任务完成后,用户程序对map、reduce的调用才返回。 2 Shuffle过程 Shuffle过程可以理解为是从map映射输出到reduce消化输入的整个过程,整个过程被称为MapReduce的“心脏”,关乎整个框架性能[1],应用开发人员对MapReduce框架的改进也主要集中在Shuffle阶段。 MapReduce框架中Shuffle流程如图1所示[1]。 2.1 Map端

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档