论文部分内容阅读
随着搜索引擎、社交网络等数据密集型互联网应用的发展,信息和数据量呈现爆炸式增长的趋势,如何存储和处理越来越庞大的数据信息,于是产生了云计算。云计算把原有的技术如网格计算和分布式计算进行整合并以新的模式呈现出来,它构建在大量廉价的服务器上,利用虚拟化技术整合现有的计算资源、存储资源和带宽资源,通过统一的接口为用户提供按需分配的各种资源。在所有的云计算平台中,Hadoop是最流行的开源云平台架构,其中的核心技术HDFS和MapReduce分别实现了Google云平台中的GFS和MapReduce,它们分别具有对海量数据进行存储和处理的功能。如何通过设计不同的作业调度算法来提升MapReduce性能,已然成为学术界和工业界都非常关注的一个热点问题,本文主要研究了延迟调度算法和LATE调度算法,并针对算法中存在的问题提出了改进。延迟调度算法是为了解决“数据本地性”问题而提出的一种算法,核心思想是空闲节点在申请作业时,优先选择作业队列中在该节点上具有待处理数据的作业,若在规定的时间内仍没有找到本地作业,则选择队首作业执行。这种方法大大提高了作业本地执行的概率,同时也产生了一些问题,若作业待处理数据集中在某几个节点上,则会加重这些节点的负载,容易导致集群负载不平衡,影响执行效率。本文对延迟调度算法进行改进,思路如下:一是均衡负载,在作业等待本地目标节点的同时,检测空闲节点的负载情况,如果节点负载超过阈值,则暂时不予分配任务;二是增加热点数据块的副本数量,以提高这些数据成功访问的概率。通过上述两种方式达到提升Hadoop集群运行效率的目的。LATE调度算法是针对异构集群节点运行速度不同提出的一种快节点运行慢节点上面任务的方法,以缩短集群的整体运行时间。但该调度算法未充分考虑备份任务在同一机架和不同机架推测执行时数据传输消耗的时间差异性以及集群不同节点的负载情况。本文综合这两个方面进行改进,在推测作业剩余完成时间时,考虑数据迁移的时间成本,以剩余时间和迁移时间之和为权值进行排序,再结合集群中节点的负载情况进行分析,避免节点处于超负荷状态仍分配任务,缩短作业的响应时间,提升集群的利用率。通过搭建实验平台验证,与原有的调度算法相比,延迟调度算法的改进缩短了作业平均响应时间,提高了集群的效率。改进后的LATE调度算法比改进前对落后任务的判断更加准确,对跨机架作业的推测执行更加合理,提高了集群的效率。