论文部分内容阅读
随着计算机技术的发展与信息化的普及,各行各业每天产生海量的数据,而且数据量正以爆炸式的速度增长,据IDC报告统计,全世界一年内新产生的数据量超过270000PB(2010年)近年来,大规模数据处理已经成为计算机产业界的焦点问题和学术界的研究热点对于这种要处理海量数据的数据密集型作业,传统的高性能计算平台已经不能胜任;处理数据密集型计算任务要求计算平台应该具有可扩展性,可用性以及容错性目前,Google公司的发布的MapReduce分布式处理模型和GFS分布式文件系统是处理数据密集型作业的利器作为MapReduce模型和GFS的开源实现,Hadoop不仅在工业界得到广泛的应用并且引起了学术界的关注Hadoop机群不仅具有良好的横向可扩展性,而且机群中的计算节点可以使用普通的机器,这样大大降低了搭建Hadoop机群的硬件成本同时,Hadoop拥有良好的容错性和可用性Hadoop平台的出现,不但使更多人能够很容易的搭建大规模数据处理平台来分析数据,同时也推动大规模数据处理平台技术的发展调度器对于整个平台的计算资源的分配和作业执行起着决定性作用为研究MapReduce作业的调度算法和调度器,我们选择Hadoop作为实现平台目前,Hadoop常用的调度器主要有默认的FIFO调度器,针对多用户的公平(Fairshare)调度器,针对多队列多用户的Capacity调度器以及针对特定场景的调度器(如针对基于作业最晚完成时刻的调度)等虽然Hadoop的调度器种类比较多,但是针对提高作业执行效率的调度器很少由于Hadoop主要用于处理数据密集型作业并且整个系统将计算资源与数据存储整合到一起,为了提高作业执行效率,目前主要的方法是尽量减少数据在系统中的传输,直接让计算任务在数据所在的节点执行伯克利大学提出的Delay策略能够很好的提高Map任务的本地化计算比例本文主要工作在之前的Hadoop平台的Data-aware调度策略之上提出一种基于资源预测的Delay调度算法,该算法能够有效的提高Hadoop作业的执行效率对于计算作业的调度,一种方式是将所需的数据传输到计算任务所在节点,另一种方式是将计算任务派到数据所在节点由于MapReduce作业主要用于处理大规模数据,如果采用第一种调度方式,大量的数据传输势必造成计算资源的浪费;同时,由于MapReduce作业的形式和数据的分布特点,为提高作业的执行效率,MapReduce作业调度尽量采用移动计算不移动数据的调度方式将计算任务派到包含要处理的数据的计算结点,可称为任务本地化计算(Task Locality)本文主要工作是基于Hadoop平台的MapReduce作业的Data-aware调度策略研究,本文调度策略结合FIFO调度算法和FairShare的Delay调度算法提出基于资源预测的Delay算法;该Delay策略通过实时的统计作业执行情况和系统的运行情况动态的预测系统可用资源情况,并以此作为对作业进行调度的依据,不仅提高本地化计算的Map任务的比例并且减少由于作业不合理的等待造成的计算资源浪费;这种基于资源预测的Delay策略比FairShare的Delay策略更加合理,该调度算法能够有效提高作业的执行效率实验表明,本文调度算法在一般场景下与Fairshare调度器相比,可将作业平均执行效率提高28.8%左右在此基础之上,本文将这种调度策略与作业最晚完成时刻结合,实现了基于作业Deadline的调度器;由用户设置作业的最晚完成时刻,该调度器不仅保证作业能在Deadline之前完成并且能够提高作业平均执行效率