Mapreduce实验报告.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实验报告 前言和简介 MapReduce是Google提出的一种编程模型,在这个模型的支持下可以实现大规模并行化计算Mapreduce框架下一个计算机群通过统一的任务调度将一个巨型任务分成许多部分,分别解决然后合并得到最终结果。Mapreduce可以让程序员以简单的程序来解决实际问题,而隐藏了诸如分布、工作调度、容错、机器间通信 Mapreduce的基本原理 核心思想。 “Divide?and?Conquer”是Mapreduce的核心思想。面对一个规模庞大的问题,要处理是以TB计的数据,Mapreduce采用“输入”------“分解”------“解决”------“聚合”------“输出结果”的基本过程。 基本原理 Map和Reduce是两个核心操作,用户定义的map函数接收被切割过的原始的key/value对集并且计算出一个中间key/value对集。Mapreduce库函数将所有的具有相同key值的value聚合在一起交给用户定义的reduce函数处理。reduce函数将同一key值的所有value合并成得到输出文件。在整个过程中,Mapreduce库函数负责原始数据的切割,中间key/value对集的聚合,以及任务的调度,容错、通信控制等基础工作。而用户定义的map和reduce函数则根据实际问题确定具体操作。 框架的基本结构和执行流程 基本结构 Mapreduce框架的主要程序分为三种即Master,Map和Reduce。 Master:主要功能有两个,任务的分割和任务的调度。Master把输入文件切成许多个split,每个split文件一般为几十M。Master同时还要调度任务监视各个map worker和reduce worker的工作状态,以做出相应的安排。Master还要监视各个子任务的完成进展情况。 Master用到的数据结构 Struct Split[] //文件切割后的信息 struct MapSTATE[] //记录各个map任务的情况。 struct ReduceSTATE[R] //各个reduce任务的情况。 Type Map=0,Reduce=0 //记录map任务和reduce任务的完成个数。 MapWorkerSTATE[] ReduceWorkerSTATE[] //各个工作机器的忙闲状态 FileSplit(string inputfilename) //输入文件切割 JobAssign() //工作任务分配 Map:主要功能是读取经过切割split文件形成一个map任务,分析map任务,得到中间结构并且将同一类型的中间文件存放在同一个区域内等待特定的reduce程序读取。 Reduce:不同的Reduce读取各个Map得到的特定的中间文件,将所有相同的中间文件整合成最后的输出文件。 任务执行基本流程 基本流程图见下一页 首先输入收据文件被Mapreduce库函数分割成M个split集。用户定义的程序被拷贝到机群中,其中一个是master,其它的都是worker。M个map任务和R个reduce任务将被分配。Master负责调度任务和过程监视。随时检测worker的工作状况,任务的完成进度。Map worker每完成一个子任务向master报告。 一个被分配了map任务的worker读取一个split集,该worker从这个split集中分析出key/value对,然后有map函数来处理这些key/value对并得到中间key/value对,这些key/value对将最终存放在map worker的本地硬盘上。每完成一个任务报告master。 中间key/value对被存在本地硬盘的R个不同的区域中,由于可能的key值很可能不止R个,故必须利用一个分割函数来划分中间文件,常用的是散列的方法(如hash(key) mod R)。保证key值相同的key/value对被存放同一区域中,并且将位置报告给master。如果同一个key的中间文件多而小可以考虑用cmobine函数在本地进行合并。 当所有的split都被分析完成之后,reduce worker开始工作,每个reduce根据master的安排和信息指示利用机群的内部文件系统读取map worker本地磁盘中特定位置的中间文件。 Reduce开始聚合中间文件,得到自己的输出文件。在聚合的过程中由于有很多key值,一般将用到排序。Reduce worker完成自己的工作后向master报告。 控制 分析key/value对 分区写入磁盘

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档