hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)

陈新

(广东省培英职业技术学校, 广东 广州 510630)

摘要:针对传统云计算作业调度中简单优先级设置的不足,首先对作业调度进行研究并提出了基于用户服务等级协议(SLA)的作业分级机制。该设计基于QoS约束的多优先级作业调度算法,在算法中利用云用户作业中的偏好程度来设计优先级值计算函数Priority,在作业调度时可以使较高等级的云用户和具有较高优先级的作业优先得到任务的执行,通过上述方式可以较好地保证云计算环境下的服务质量。

0引言

Hadoop是目前比较流行的云计算实现平台,通过Hadoop可以快速搭建和部署云计算的环境。在Hadoop中有两个重要的功能组件,分别是分布式文件系统和MapReduce计算组件。通过上述功能组件可以实现云计算的分布式计算和应用的虚拟化[1]。开源云计算平台Hadoop中的分布式文件系统是谷歌公司实现云计算的文件系统开源部分,而MapReduce是谷歌公司实现云计算中的并行计算和处理的实现部分[2]。

在云计算的环境下,目前的作业调度算法主要有三种,分别为先进先出作业调度算法、公平调度算法和计算能力调度算法。无论是哪种调度算法,在Hadoop中都需要通过主控节点进行分配和安排,通过作业调度器对云计算中的作业和任务进行调度,根据用户的设置偏好来实现对任务的分配和作业的调度[34]。从这个角度上看,作业的调度和安排直接关系到云计算平台性能的好坏,直接影响到云计算平台的效率,同时也会对用户的服务质量产生影响[5]。在云计算的环境下,需要对用户提交的作业进行分级处理,并对每一个作业进行登记标注,这样就可以对提交的作业设置不同的优先级别,在进行调度时可以按照作业调度的优先级别进行处理,优先安排服务质量高的作业进行资源的分配和处理,这样可以有效地提高云用户作业的服务质量以及云用户的满意程度[6]。

1云体系架构

hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)(1)

云计算的服务包括多种类型,具体有私有云和公有云,对于不同的云计算环境其具体的划分图1云计算作业调度的体系架构结构如图1所示[7]。在云计算的体系结构中,对于私有云来说,用户可以很好地实现对数据的控制,保证云计算中的用户数据的安全。并且在私有云的计算环境下,用户不仅可以通过其调度得到内部的计算资源,还可以通过云计算的作业调度获取到公有云中的计算资源和服务,使得云计算的体系结构具有高可用性、易扩展的特点[8]。

2算法设计

任务调度是集群系统的核心技术。本文中共划分了五个主要的等级队列,对作业进行服务质量(QoS)属性偏好设置,就可以得到具有不同用户属性偏好的多优先级的作业,然后通过作业调度器来完成对作业的调度和安排,满足用户作业调度服务的需求,为此,本文提出了多优先级作业调度算法(QoSMulti Priority Scheduler,QoSMP Scheduler)。

2.1算法的设计思想

在QoSMP Scheduler算法中,其设计的主要思路是,首先需要设计作业优先级计算函数 Priority,在这个函数中包括了基于 QoS 属性约束的优先条件,对每一个作业的优先级的数值进行计算。接着,在云计算主控节点 JobTracker的作业调度器中对Priority建立队列,然后,在进行作业调度任务分配时,选取队列中具有最高优先级值的作业进行分配,并将相关数据调入到云计算本地文件系统区去执行,这样就可以在最大程度上考虑用户的服务质量需求,有效地提高用户作业的服务质量,提升整个系统的质量和服务满意度。

2.2服务质量设计

在云计算的环境下,云计算的服务质量是全部服务性能和程度的总和。对云服务的能力进行衡量和描述,具体如表1所示。

hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)(2)

2.3优先级计算函数设计

云服务中的作业包括了两个重要的属性,即Time和Cost属性,对于每一个作业,其Time和Cost的需求是不尽相同的,根据具体的实际情况才能确定。在云计算的环境下,其计算数值相差都较大,具有比较大的波动性,但是这两个属性是衡量云计算服务质量的最重要的属性,如何对其进行定义和配置关系到云服务质量的好坏,需要在这两个作业属性之间找到平衡,来保证云服务的质量。为此,本文提出了使用基于 QoS 约束的优先级计算函数 Priority来完成上述各个属性的约束与控制,实现用户作业服务质量的满足。Time和Cost属性具体如图2所示。

2.4算法的实现

通过对用户作业的分级可以在开源云计算框架中的主控节点JobTracker中得到5个具有不同级别的队列,表示为VERY_HIGH、HIGH、NORMAL、LOW、VERY_LOW。上述作业队列的优先级别为从高到低。在节点中对作业客户端所提交的作业信息进行提取,可以得到作业等级的数据信息,将其提交到主控节点中进行作业队列的安排,通过映射就可以使得每一个作业队列都具有优先级别。同样地,在主控节点中,对于作业队列通过计算其优先权值的数据,并对每一个优先级别VERY_HIGH、HIGH、NORMAL、LOW、VERY_LOW分别设置ω1、ω2、ω3、ω4、ω5的权重数值,云用户就可以对上述的权值进行配置,实现对云计算中的作业优先级别的计算。对于其权重的计算,如图3所示。

hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)(3)

在云计算环境下,对每一个作业,其用户都有其QoS属性的偏好,对于不同的偏好可以通过基于 QoS 约束的优先级计算函数 Priority来描述和实现,这样就可以使得在云用户进行作业提交时实现偏好程度的选择,在云计算的作业提交之后通过参数的方式将其数据信息传递到云计算中的主控节点进行处理。本文对于优先级别函数的计算中,主要是对服务质量属性中的Time 和 Cost进行设计和计算。下面介绍Time 和 Cost 的偏好程度级别的设计,其级别的设置如表2所示。

对于偏好程度共设置了1~10之间的多个级别,其中1的级别最低,10的级别最高。不同属性按照用户需求选择,如果对实时性要求较高,则在偏好程度数值的选择上选择较大的Time 属性值,在云计算进行作业调度时,则是选择优先级别较高的作业进行调度实现;此外,对于用户对云计算中的花费较低的需求,则在作业中属性选择时选择较低的 Cost 属性值。通过上述设置完成选择,将作业Time 和 Cost 信息传递到主控节点。对于上述过程,具体如图4所示。

通过上述过程,作业自身的Time 和 Cost属性消息传递到云计算中的主控节点,并在主控节点对此消息进行计图6改进后的云计算系统的作业处理流程算和分析,对所提交的作业进行分级,根据用户所提交的作业等级进行调度,将处于优先级别较高的作业优先安排到作业队列中进行处理。因此,在云计算的作业调度中,对于作业的处理是通过对作业队列的优先级系数值和用户对 QoS 属性的偏好程度进行计算,从而得到优先级计算函数 Priority,最终通过云计算中的主控节点进行作业的调度,完成作业的执行。

hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)(4)

对于任务的分配其具体实施策略如图5所示。分配步骤如下:图5JobTracker分配任务给 TaskTracker 的分配策略图(1)任务跟踪节点通过心跳协议的内容,一旦出现处于空闲的map 任务槽和空闲的 reduce 任务槽,就进行统计和分析,并将其统计到主控节点JobTracker进行安排。

(2)主控节点对目前调度的map 任务数与处于空闲的map 任务数进行比较;判断是否mapslots> req_mapno,如果是,则将作业的map任务全分配给主控节点,执行步骤(3);否则,mapslots 个 map 任务进行调度,并将其分配到主控节点中,直到空闲的任务数分配完毕。

(3)如果mapslots = req_mapno,则跳转到(4);否则,结束分配过程。

(4)比较目前调度作业的reduce 任务数与空闲的 reduce 任务槽数,如果reduceslots>= req_reduceno,则进行任务的分配,并将其分配到任务跟踪节点中进行调度;否则结束分配。对作业分级机制和调度算法改进后的云计算系统的作业处理流程具体如图6所示。

hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)(5)

3实验与分析

3.1实验环境搭建

硬件环境:Inter Pentium Dual E2200@2.20 GHz,1 GB内存,160 GB硬盘; 软件环境 :操作系统为Linux Ubuntu 8.04,编程环境为Hadoop 0.20.2、jdk6u24linuxi586。

3.2实验设计

仿真实验中对作业的完成时间进行比较。在Hadoop集群环境下,仿真20个不同用户的工作和业务流,并且对每一组的工作流都执行20次,对这些重复执行的工作任务进行计算取其平均值,计算作业的完成时间,按照上述方式,对不同级别的文件进行作业调度,计算不同作业调度算法和策略下其总的作业运行时间和平均作业运行时间。

3.3实验结果分析

在本次实验中,将作业的队列等级权重设置为不同的级别,权重分别为VERY_HIGH=4、HIGH=2、NORMAL=1、LOW=0.5、VERY_LOW=0.25,对于优先级别中的属性参数Time和Cost均设置为 0.5。

在本次实验中,对于不同算法(静态调度算法表示为Static,遗传算法表示为GA,本文算法表示为QOS)下的作业完成时间,其结果如图7所示。

hadoop实验总结与分析(Hadoop平台中作业调度算法分析与改进研究)(6)

从上述的作业完成时间比较示意图可以看到,本文算法的作业完成时间最小。

4结束语

针对传统作业调度算法中的不足,通过对作业进行QoS 属性的偏好标记,调度中进行优先级函数计算保证用户的服务质量。通过仿真实验,验证了算法的平均完成时间相对较少,有效地提高了作业调度成功率,表明算法具有较好性能。

参考文献

[1] 柳少锋,董剑.一种基于优先级队列的集群动态反馈调度算法[J].智能计算机与应用,2014,12(4):4549.

[2] 廖大强.面向多目标的云计算资源调度算法[J]. 计算机系统应用,2016,25(2):180189.

[3] 钟浩涛.基于遗传算法的动态调度分组算法[J].计算机学报,2013,45(8):1112.

[4] 涂刚阳,富民.基于动态优先级策略的最优软非周期任务调度算法[J].计算机研究与发展,2014,42(11):2324.

[5] 廖大强,邹杜,印鉴. 一种基于优先级的网格调度算法[J]. 计算机工程, 2014, 40(10): 1116.

[6] AGUILERA M K, CHEN W,TOUEG S. On quiescent reliable communication[J]. Computing,2014,39(6):20402073.

[7] VAQUERO L,RODEROMERINO L,CACERES J,et al.A break in the clouds:towards a cloud definition[J].ACM SIGCOMM Computer Communication Review,2014,39(1):5055.

[8] 廖大强,印鉴,邬依林,等.基于兴趣传播的用户相似性计算方法研究[J].计算机应用与软件,2015,32(10):95100,104.

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页