论文部分内容阅读
随着互联网的快速发展,人们在网络上的活跃程度越来越高,整个互联网的数据量呈爆炸式增长,寻求有效的大规模数据处理技术已经成为现代社会的迫切需求。作为对这个迫切需求的回应,由Apache开发的一款开源分布式大数据处理平台Hadoop应运而生,Hadoop能够高效地对大量数据进行处理,很快的成为当前具有代表性的大数据平台。近年来越来越多的人使用Hadoop来处理各式各样的作业,使得用户在Hadoop上的提交的作业类型呈现出多样化的特点,这些多样化作业类型会给Hadoop中现有的先进先出、计算能力、公平以及LATE调度算法带来很大的挑战。目前Hadoop现有调度算法主要存在下面几个方面的问题:(1)现有的调度算法缺乏对用户期望的考虑,不能很好的满足用户的需求;(2)现有的算法在调度的过程中较少考虑各个集群节点的负载情况,难以使集群负载保持均衡;(3)现有的调度算法大部分是针对单一作业类型,而实际的作业类型多样的,不能根据作业类型自适应地做出不同方式的调度。调度算法是影响Hadoop平台性能的关键因素。因此,本文针对以上问题对Hadoop的作业调度算法进行改进,通过对Hadoop的作业调度过程进行分析,将Hadoop作业调度划分成两个阶段,一个是作业级调度,另一个是任务级调度。作业级调度是从队列中选择的作业去运行;任务级调度是将作业分成多个任务分发到各个集群节点上运行。本文从作业级和任务级两个方面提出了针对不同需求的自适应调度改进算法。本文主要工作有以下三个方面:(1)针对现有的计算能力调度算法缺乏考虑用户需求的不足,而计算能力调度算法具有较强的稳定性、成熟度且解决的是多队列的调度问题。因此,本文在计算能力调度算法的基础上进行改进,利用计算能力调度算法对多个队列调度的特点,同时考虑用户对作业的完成时间期望(以下简称用户期望)和作业复杂度等因素,提出了一种基于用户期望和作业复杂度的自适应调度算法。该算法在作业级调度上,把不同用户期望和作业复杂度的作业预先用K-Means聚类算法划分为多个队列,再根据队列和作业的优先级进行自适应调度,提高Hadoop的作业处理效率和用户满意度。(2)针对LATE调度算法可以较好的发现调度过程中产生的慢任务,但不能区分任务的负载类型且不能较好保持集群负载均衡的问题,本文结合Hadoop集群的异构性和任务负载的特性,在LATE调度算法的基础上提出了一种基于任务负载和节点负载的自适应调度算法。该算法在任务级调度上通过对任务负载进行分类和节点负载量化,把不同负载类型的任务自适应调度到合适的集群节点上运行,避免某个节点的负载过重,实现集群的负载均衡,提升Hadoop集群的性能。(3)搭建Hadoop实验平台,对本文提出的调度算法进行性能测试并与Hadoop已有的调度算法进行性能比对。实验结果表明,基于用户期望和作业复杂度的自适应调度算法相对于计算能力调度算法,在作业的完成时间方面减少了10%左右,在用户满意度方面提升了35%左右;基于任务负载和节点负载的自适应调度算法相对于LATE调度算法,在完成时间方面减少了18%左右,在集群负载方面,使得集群负载更加均衡。