论文部分内容阅读
云计算是目前商业与科研方面的研究热点,Hadoop作为Google云平台的开源实现,为广大研究人员提供了研究基础。在Hadoop架构中,MapReduce调度算法决定了作业调度的先后顺序与作业被分配的计算资源,因此对Hadoop MapReduce调度算法的研究与改进,对于提高Hadoop云平台的执行效率具有积极的影响。在Hadoop中,由于集群内部原因,会有一些任务的执行效率严重低下,影响作业的完成,成为落后任务。在Hadoop MapReduce的设计中,会采用推测式执行的方式,为落后任务执行备份任务,从而提高了系统的整体效率。但是,无论是Hadoop MapReduce原有的推测式执行方法,还是其它改进的备份任务调度算法,都不能有效地为落后的Reducer任务选择备份任务。在对已有调度算法进行充分研究的基础上,本文提出了一种针对Reducer任务的备份任务调度算法。改进算法与原有算法相比,有如下进步:(1)该算法摒弃了以整体进度作为落后任务判断依据的方式,通过分阶段进行对比的方式,将任务现阶段的执行速率与集群中该阶段的平均执行速率进行对比,找出落后任务,提高了落后任务查找的准确性;(2)改进算法采用了三队列的方式分别存储处于不同阶段的Reducer落后任务,并根据请求任务节点的实际情况为其分配适合该节点执行的任务,以达到减少备份任务完成时间的目的;(3)改进算法在备份任务执行节点的选择上充分考虑了任务的数据本地性要求,以机架为单位,分别计算每个机架为Reducer任务提供的输入数据数量,以此来决定备份任务执行的节点,从而降低了网络负载。该算法能在节点异质性的情况下,满足备份任务选择的准确性、数据本地性等多方面要求,从而使备份任务的执行更加精确。为了对改进算法进行验证,本课题搭建了具有六个计算节点的完全分布式Hadoop云计算集群。在实验过程中,首先通过大量的实验与分析确定了算法所需的参数,然后将我们的改进算法与Hadoop原有算法及LATE算法进行对比。通过实验结果表明,本算法减少了作业的完成时间,提高了系统的执行效率。