论文部分内容阅读
随着信息科学技术的快速发展,互联网与社会各个方面的结合越来越紧密。互联网所产生的信息数据也以指数级的速度飞速增长。面对海量的信息数据,传统的计算模式已经显得力不从心。云计算作为传统计算模式与网络技术融合的产物,能够将计算分布在大量的机器上,从而高效的对海量数据进行处理。Hadoop作为一个能够高效的处理大规模数据集的分布式计算框架,现已被越来越多的机构作为基础计算框架来构建云计算平台。如何提升其执行效率是业界的一个热门研究方向,调度问题作为影响Hadoop执行效率的一个关键因素,发现其不足之处并加以改进是非常具有意义的。通过对现有的改进后的Hadoop调度算法进行调研可以发现,大多数优化算法集中在如何对多个作业进行合理调度也即作业间的调度研究,而对作业内部的计算任务调度研究甚少。此外,对异构集群节点间的计算能力差异性也没有充分考虑,或只是根据机器配置来设置一个理论值,与现实存在脱节。本文主要针对Hadoop作业内的计算任务调度问题进行研究,主要工作包括:一、对课题的背景知识以及调度过程中涉及到的Hadoop组件进行了介绍。分析了Hadoop默认使用的任务调度算法所存在的不足以及任务调度过程中有关的类及方法的作用。在借鉴了现阶段一些改进后调度算法的主要思想、设计思路、优点以及不足的基础上,提出了基于Hdoop作业内的数据本地化任务调度算法。该算法能够根据节点的真实计算性能以及当前节点所存储的还未被处理的数据块数目来计算出该节点的数据本地化饱和程度并依此进行计算任务调度。在传统的任务调度过程中,节点所存储的数据块没有做区分,每次调度时都是随机选取数据块。本文引入了数据块标记值这个概念,在调度过程中对每个数据块进行标记,并按标记值大小进行调度。本文提出的算法可以提高作业内计算任务调度效率,能够结合其它多作业调度算法进一步提高Hadoop平台执行效率,并且在异构集群下也能很好工作。二、搭建了一个异构的Hadoop集群作为实验环境,对上述优化后的任务调度算法以及默认的任务调度算法进行了实验验证,并对实验结果进行比较。结果表明改进后的任务调度算法能够提升数据本地化的计算任务数量、从而降低网络带宽占用,更加合理地利用系统资源,减少了整个作业的执行时间。