- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
结构安排1.现状及意义2.MapReduce工作机制简述3.MapReduce作业工作原理4.MapReduce在短作业上的优化4.实验设计及分析5.总结
现状及意义MapReduce是Google公司于2004年提出的用于并行解决大规模数据处理的计算框架。由于MapReduce拥有诸多良好特性,如负载平衡、高可扩展性以及容错等。它已成为当前工业界和学术界最有效的大规模数据处理问题并行解决方案之一。虽然HadoopMapReduce是目前面向大规模数据批处理应用的最有效方案之一,但是现在它也经常被应用于短作业的处理,尤其是在线查询和分析类应用。显然,如果能够提升它对于短作业的执行效率,那么这些工具以及Hadoop本身都能更好地支持这些在线查询应用.这篇文章就是研究如何提升短作业的执行效率。
MapReduce工作机制简述
当一个作业被提交给Hadoop系统时,该作业的输入数据会被划分成很多等长的数据块,每个数据块都会对应于一个map任务.这些map任务会同时执行,并行化地处理数据.map任务的输出数据会被排序,然后被系统分发给reduce任务以作进一步的处理.在作业执行的整个过程中,主节点会对所有任务进行管理:重复执行失败的任务,更改作业的执行状态。总体上可以把作业的运行分为3个阶段:准备阶段(Prep)、运行阶段(Running)和结束阶段(Finished)。
MapReduce作业工作原理当一个作业提交到Hadoop系统时,主节点对作业进行初始化,作业内的任务(TaskInProgress)被全部创建好,等待从节点来请求任务。准备阶段:(1)分配setup任务,经过一个心跳周期(3s),主节点收到从节点的任务请求,分发setup任务。(2)setup任务完成.从节点执行setup任务,完成后通过心跳信息向主节点报告完成信息,这是第2次心跳通信。(3)主节点为作业创建作业内的任务(TaskInProgress);此时task处于UnAssigned状态。
(4)从节点经过一个心跳周期后向主节点发送一次心跳消息(heartbeat),请求分配任务,主节点收到请求后分配1个作业内的任务(TaskInProgress)给从节点.这是第3次心跳通信。(5)从节点收到任务后创建一个对应的TaskTracker.TaskInProgress对象,并启动独立的Child进程去执行该任务。此时,从节点已将任务状态更新为Running。运行阶段:(6)又经过一个心跳周期,从节点向主节点报告任务状态的改变,主节点也将任务状态更新为Running.这是第4次心跳通信。
(7)经过一定时间,任务在Child进程内执行完成,Child进程向从节点进程发出通知,任务状态变为Commit_Pending(任务在执行期间从节点还会周期性地向主节点发送心跳信息)。(8)从节点再次向主节点发送心跳信息,报告任务状态的改变,主节点收到消息后也将任务状态更新为Commit_Pending,并返回确认消息,允许提交。(9)从节点收到确认可以提交的消息后,将结果提交,并把任务的状态更新为Succeeded。
(10)一个心跳周期后从节点再次发送心跳消息,主节点收到消息后也更新任务的状态为Succeeded。此时,另一个特殊的任务(jobcleanup任务)被启动,清理作业的运行环境。与setup类似,jobcleanup至少也需要两个心跳周期。结束阶段:(11)清理任务完成后,作业最终到达成功状态Succeeded,至此,整个作业的生命周期结束。
MapReduce在短作业上的优化优化1:setup/cleanup任务优化在标准Hadoop中执行作业的setup任务仅仅是为了创建一个临时输出目录,而cleanup任务则仅仅是删除该目录(此时已为空).这些任务执行的内容本身并没有太大的时间开销,而真正的时间都花费在主节点为了分配该任务而与从节点的心跳等待中。例如,对于一个时间消耗为1min左右的短作业而言,这两个操作12s占到20%左右的百分比.如果我们缩短乃至消除这部分时间开销,系统性能将获得较大的提升。因此,这篇文章设计了一种新的执行方式:setup,cleanup任务将直接在主节点本地执行,而不是分配给从节点执行。
也就是说,一个作业在初始化完成时,该作业的setup任务会直接在主节点上执行;类似地,在该作业所有的MapReduce任务执行完毕之后,cleanup任务会同样地直接在主节点上执行。从而消除这两个任务通信上不必要的开销,进一步提高效率。优化2:任务分配从“拉”模式改为“推”模式在标准的Hadoop中,主节点不会主动地向从节点发起通信,因此在作业被提交之后,该作业并不会立即被分发到从节点开始执行,而是必须在从节点发
原创力文档


文档评论(0)