MapReduce系统的慢任务调度方法和装置的制作方法

文档序号:6363479阅读:131来源:国知局
专利名称:MapReduce系统的慢任务调度方法和装置的制作方法
技术领域
本发明涉及计算技术,尤其涉及一种MapReduce系统的慢任务调度方法和装置。
背景技术
MapReduce作为一种基本计算框架,被广泛使用在互联网应用中例如云计算环境。 随着云计算环境的发展,逐渐采用虚拟化技术,一个物理主机上可能存在多个虚拟机;由于不同物理主机的计算能力存在较大差异,并且同一个物理主机上的各个虚拟机之间也存在着较大的性能差异,导致MapReduce系统的节点异构性非常突出,该节点异构性指的是不同计算节点的处理速度存在差异(一个虚拟机相当于一个计算节点)。计算任务调度到不同的计算节点,得到处理结果的响应时间是不同的,当MapReduce系统中的主控节点发现某计算节点对计算任务的执行速度太慢,并确定该计算任务为慢任务时,为提高处理速度, 则将该慢任务调度到另一计算节点上同时执行,此称为慢任务的调度。具体的,MapReduce系统的其中一种实现机制Hadoop,其慢任务调度的方案为 Hadoop假设系统中的所有计算节点以相同速度处理计算任务,对计算任务定义了一个介于 O和I之间的进程指标,并设定一个固定的门限值,只要进程指标满足所述门限值的设定条件,则确定该计算任务为慢任务,并执行慢任务调度。Hadoop是按照临近节点调度原则进行慢任务调度,即将慢任务调度到物理传输距离最近的临近节点上。上述方案的缺点是有太多的计算任务被确定为慢任务,过多的慢任务调度占用了较多的系统资源;并且,临近调度原则还可能出现在调度后临近节点运行更慢,该慢任务还会进一步被调度,导致慢任务被多次调度,即出现了系统调度的抖动。MapReduce系统的另外一种实现机制LATE对上述的Hadoop进行了优化,其规定了一个慢任务调度比例,例如10%,只有10%的慢任务能够被调度,以避免过多的慢任务被调度而占用较多的系统资源。并且,LATE还根据计算任务完成所需的剩余时间定义了慢节点队列,规定该队列最后25%的节点为慢节点,不会将慢任务调度到所述的慢节点,以避免节点运行更慢。但是实践发现,LATE仍然不能解决系统调度的抖动问题,即使选择一个位于所述最后25%之外的计算节点进行慢任务调度,也仍然有可能使得该节点在加载该慢任务后计算能力下降太多而变慢,所调度的慢任务仍然是慢任务,将被再次调度,导致出现慢任务多次调度的系统抖动现象。

发明内容
本发明的第一个方面是提供一种MapReduce系统的慢任务调度方法,以有效抑制 MapReduce系统慢任务调度时抖动现象的发生。本发明的另一个方面是提供一种MapReduce系统的慢任务调度装置,以有效抑制 MapReduce系统慢任务调度时抖动现象的发生。本发明提供的MapReduce系统的慢任务调度方法,包括分别获取MapReduce系统中的各计算节点的计算能力值,所述计算节点的计算能力值C = O1/R +V2/v2 +-. + VmZvJZm,所述V1......V111表示所述计算节点上的各计算任务
的处理速度,所述R......I表示所述各计算任务分别所属的工作的平均处理速度,所述m表
示所述计算节点上的计算任务的总数量;根据所述计算能力值从大到小的顺序将所述各计算节点排列为慢节点队列,并选取所述慢节点队列中的前M个计算节点,每个选取的所述计算节点作为目标计算节点,所述M为自然数;分别获取M个所述目标计算节点在加载待调度的慢任务之后预估的计算能力值, 所述预估的计算能力F = ^Jvl +V2/v2 + ... + Vm/vm +Vi /R. VO +1),所述Vi表示目标计算节点上的待调度慢任务的处理速度,所述R表示目标计算节点上的待调度慢任务所属的工作的平均处理速度;根据所述目标计算节点的预估的计算能力值以及所述目标计算节点之外的各计算节点的计算能力值,将所述目标计算节点与所述目标计算节点之外的各计算节点按照计算能力值从大到小的顺序排列成新的慢节点队列,并预设所述慢节点队列中从队尾开始向前的第N个计算节点为评价基准节点,所述N为自然数;在所述目标计算节点预估的计算能力值大于所述评价基准节点的计算能力值时, 将所述待调度的慢任务调度到所述目标计算节点。本发明提供的MapReduce系统的慢任务调度装置,包括参数获取单元、能力预估单元、队列排列单元和调度处理单元;所述参数获取单元,用于分别获取MapReduce系统中的各计算节点的计算能力
值,所述计算节点的计算能力值C = (V1 I + V2 / +■■■+Vml^rn)lm,所述V1......Vm表示所
述计算节点上的各计算任务的处理速度,所述R......I表示所述各计算任务分别所属的工作
的平均处理速度,所述m表示所述计算节点上的计算任务的总数量;所述能力预估单元,用于选取所述队列排列单元产生的慢节点队列中的前M个计算节点,每个选取的所述计算节点作为目标计算节点,所述M为自然数;并分别获取M个所述目标计算节点在加载待调度的慢任务之后预估的计算能力值,所述预估的计算能力 C = (V1 /V1 +V2/V2+... + Vm Ivm +Vi /R.VO + l),所述Vi表示目标计算节点上的待调度慢任务的处理速度,所述R表示目标计算节点上的待调度慢任务所属的工作的平均处理速度;所述队列排列单元,用于根据所述计算能力值从大到小的顺序将所述各计算节点排列为慢节点队列;以及,根据所述目标计算节点的预估的计算能力值以及所述目标计算节点之外的各计算节点的计算能力值,将所述目标计算节点与所述目标计算节点之外的各计算节点按照计算能力值从大到小的顺序排列成新的慢节点队列;所述调度处理单元,用于预设所述慢节点队列中从队尾开始向前的第N个计算节点为评价基准节点,所述N为自然数;并在所述目标计算节点预估的计算能力值大于所述评价基准节点的计算能力值时,将所述待调度的慢任务调度到所述目标计算节点。本发明MapReduce系统的慢任务调度方法的技术效果是通过在将慢任务调度至目标计算节点之前,预估该目标计算节点加载待调度的慢任务之后的计算能力值,并在该预估的计算能力值大于评价基准节点的计算能力值时,才将待调度的慢任务调度到所述目标计算节点,可以保证该目标计算节点在加载慢任务后不会使得计算能力下降太多,从而消除慢任务,防止了慢任务的多次调度,有效抑制了慢任务调度时抖动现象的发生。
5
本发明MapReduce系统的慢任务调度装置的技术效果是通过在将慢任务调度至目标计算节点之前,预估该目标计算节点加载待调度的慢任务之后的计算能力值,并在该预估的计算能力值大于评价基准节点的计算能力值时,才将待调度的慢任务调度到所述目标计算节点,可以保证该目标计算节点在加载慢任务后不会使得计算能力下降太多,从而消除慢任务,防止了慢任务的多次调度,有效抑制了慢任务调度时抖动现象的发生。


图I为本发明MapReduce系统的慢任务调度方法实施例的流程示意图;图2为本发明MapReduce系统的慢任务调度装置实施例的结构示意图。
具体实施例方式为了对本发明实施例的MapReduce系统的慢任务调度方法的说明更加清楚,首先对MapReduce系统的结构和工作原理做简单说明MapReduce系统通常包括一个主控节点(master)和多个计算节点(slave);主控节点负责管理计算节点。主控节点接收客户端的数据计算请求,该请求的数据计算可以称为一个工作(Job),工作可以有多种类型,例如,数据查询工作、数据平均工作等。主控节点会将工作拆分为多个计算任务(task),并将计算任务分发至各计算节点,由各计算节点具体执行计算任务的处理。MapReduce系统将工作的处理分为两个阶段Map阶段和Reduce 阶段,即计算任务包括两种类型,Map类型的计算任务和Reduce类型的计算任务,Map阶段主要是将拆分的各计算任务分发到各计算节点处理,Reduce阶段则主要是将各计算节点的计算结果进行汇总;当所有计算节点的计算任务都做完时,主控节点将计算结果汇总并报告给客户端。其中,在处理过程中,计算节点与主控节点之间存在着心跳,计算节点可以将其计算任务的进度情况携带在心跳报文中通知主控节点;并在处理完计算任务处于空闲时,计算节点会主动向主控节点请求分配计算任务。本发明的实施例遵循如下假设条件第一、假设MapReduce系统中的各计算节点是异构的;第二、假设MapReduce系统所处理的各工作是异构的不同类型的工作之间差异明显,产生的数据量不同。在以上介绍的基础上,下面对本发明实施例的慢任务调度方法和装置进行说明图I为本发明MapReduce系统的慢任务调度方法实施例的流程示意图,需要说明的是,如下的101 103只是对该方法中所执行的各动作的列举,并没有对其之间的执行顺序做严格限制。如图I所示,该方法可以包括101、分别获取MapReduce系统中的各计算节点的计算能力值;本实施例中,MapReduce系统的主控节点可以获取各计算节点的计算能力值。可选的,主控节点可以按照如下获取方式得到各计算节点的计算能力各计算节点可以计算其处理的计算任务的处理速度,例如,计算节点A上处理计算任务a、计算任务b ;计算节点B上处理计算任务C、计算任务d ;则计算节点A可以分别计算计算任务a、计算任务b的处理速度,计算节点B可以分别计算计算任务C、计算任务d的处理速度。不同类型的计算任务,其处理速度有不同的计算方式。例如,假设计算节点A上所处理的计算任务a、计算任务b是Map类型的计算任务,计算节点B上所处理的计算任务C、计算任务d是Reduce类型的计算任务。则,对于Map类型的计算任务,其处理速度V = p/t,其中,P为计算节点当前处理完成的计算任务的数据量,所述t为所述数据量的计算任务的处理耗时;对于Reduce类型的计算任务,其处理速度v = p/t,其中,由于Reduce操作一般分为三个阶段拷贝、排序和规约;如果计算任务正处于拷贝阶段,则
-=去4=去;如果计算任务处于排序阶段,则尸=I+去4=去;如果计算任务正处于归约阶
2 3 63 2 3 2
段,则尸=I,t为计算任务的处理耗时。
3 3 2 3 6各计算节点可以通过与主控节点之间的心跳消息,携带上述计算得到的计算任务的处理速度上报至主控节点。主控节点可以根据所述的处理速度,计算该计算任务所属的工作的平均处理速度。例如,上述的计算任务a、计算任务c是由工作(job)Gl拆分成的,即,主控节点在接收到客户端请求处理的工作Gl后,将该Gl拆分为计算任务a、计算任务C,并分发给所述的计算节点A和计算节点B处理;该两个计算节点将其上处理的计算任务的处理速度反馈给主控节点,主控节点就可以根据该处理速度得到工作Gl的平均处理速度。所述平均处理速度[= Σν/η,所述V表示所述工作所拆分成的各计算任务的处理速度,所述η表示工作所拆分成的各计算任务所在的计算节点的总个数;假设计算节点A反馈的计算任务a的处理速度为vl,计算节点B反馈的计算任务c的处理速度为v2,则工作Gl的平均处理速度 vl= (vl+ v2) /2。同理,假设计算任务b和计算任务d是由工作G2拆分,计算任务b的处理速度为v3,计算任务d的处理速度为v4,则工作G2平均处理速度[2= ( v3+ v4 ) /2。在上述计算各工作的平均处理速度的基础上,各计算节点的计算能力可
以按照如下公式计算e = (νι丨、+ν2 / 72 +…+ ^ lvm)lm,其中,Vl......Vm表示目
标计算节点上的各计算任务的处理速度,R......I表示各计算任务分别所属的工作
的平均处理速度,所述m表示所述计算节点上的各计算任务的数量。例如,计算节点A的计算能力C=(计算任务a的处理速度/工作Gl的平均处理速度 +计算任务b的处理速度/工作G2的平均处理速度)/2=(vl/[i+v3/[2)/2。可选的,主控节点可以将计算得到的各工作的平均处理速度发送至各计算节点, 由各计算节点得到自己的计算能力值,再将该计算能力上报至主控节点;或者,也可以由主控节点根据计算节点上报的处理速度、以及自己计算的各工作的平均处理速度,得到各计算节点的计算能力值。本实施例通过上述的技术方案,提供了计算节点的计算能力的评价方法和评价指标,并且,该计算能力的计算中,考虑了不同类型工作的异构性和计算节点的异构性,即,考虑了不同计算节点的处理速度,以及,由于各个类型的工作不具有可比性,所以采用了 WV 来做归一化处理。上述方式使得计算节点的计算能力更加合理的得到反映。102、根据计算能力值从大到小的顺序将所述各计算节点排列为慢节点队列,并选取所述慢节点队列中的前M个计算节点,每个选取的所述计算节点作为目标计算节点;并获取目标计算节点在加载待调度的慢任务之后预估的计算能力值;可选的,主控节点可以在接收到MapReduce系统中的某个计算节点发送的申请计算任务消息时,开始进行慢任务的调度处理。主控节点在获取到计算任务的处理速度以及计算节点的计算能力时,即可维护两个队列,慢任务队列和慢节点队列。其中,慢任务队列是主控节点根据计算任务的处理速度对MapReduce系统中的正在处理的计算任务进行排队;慢节点队列是主控节点根据计算节点的计算能力对各计算节点进行排队,可以是根据计算能力值从大到小的顺序将各计算节点排列为慢节点队列。并且,本实施例中,主控节点可以从慢任务队列的队尾开始,取最后 10%的计算任务为慢任务;具体实施中,该比例值可以变化,例如,可以测量任务完成速度的方差,如果方差较小,可以适当缩减这个比例。本实施例中,会选取所述慢节点队列中的前M个计算节点,每个选取的所述计算节点作为目标计算节点,所述M为自然数;例如,具体实施中,可以选取慢节点队列中的前两个节点或者前三个节点等,数量可以自主设定,但是尽量选择队列中靠前的几个节点。需要将慢任务同时调度到上述的M个计算节点,上述的M个目标计算节点均为计划加载慢任务的节点。在将慢任务调度至上述的目标计算节点之前,将对目标计算节点加载慢任务之后的计算能力进行预评估。具体的,目标计算节点的计算能力?
权利要求
1.一种MapReduce系统的慢任务调度方法,其特征在于,包括分别获取MapReduce系统中的各计算节点的计算能力值,所述计算节点的计算能力值C = (V11V1 +V2Zv2+... + vm/vm)/rn,所述V1......Vni表示所述计算节点上的各计算任务的处理速度,所述R......I表示所述各计算任务分别所属的工作的平均处理速度,所述m表示所述计算节点上的计算任务的总数量;根据所述计算能力值从大到小的顺序将所述各计算节点排列为慢节点队列,并选取所述慢节点队列中的前M个计算节点,每个选取的所述计算节点作为目标计算节点,所述M为自然数;分别获取M个所述目标计算节点在加载待调度的慢任务之后预估的计算能力值,所述预估的计算能力? = O1 / R + V %+... + L / L + K / R) /O +1),所述Vi表示目标计算节点上的待调度慢任务的处理速度,所述R表示目标计算节点上的待调度慢任务所属的工作的平均处理速度;根据所述目标计算节点的预估的计算能力值以及所述目标计算节点之外的各计算节点的计算能力值,将所述目标计算节点与所述目标计算节点之外的各计算节点按照计算能力值从大到小的顺序排列成新的慢节点队列,并预设所述慢节点队列中从队尾开始向前的第N个计算节点为评价基准节点,所述N为自然数;在所述目标计算节点预估的计算能力值大于所述评价基准节点的计算能力值时,将所述待调度的慢任务调度到所述目标计算节点。
2.根据权利要求I所述的MapReduce系统的慢任务调度方法,其特征在于,所述获取 MapReduce系统中的各计算节点的计算能力值,包括接收所述MapReduce系统中的各所述计算节点上报的计算任务的处理速度,所述计算任务为在所述计算节点上处理的计算任务;根据所述处理速度得到所述计算任务所属的工作的平均处理速度,所述平均处理速度 V = YjVln,所述V表示所述工作拆分成的各计算任务的所述处理速度,所述η表示所述工作所拆分成的各计算任务所在的计算节点的总个数;将所述工作的平均处理速度分别发送至所述各计算节点,并接收所述各计算节点上报的根据所述工作的平均处理速度得到的所述各计算节点的计算能力值。
3.根据权利要求I所述的MapReduce系统的慢任务调度方法,其特征在于,所述获取 MapReduce系统中的各计算节点的计算能力值,包括接收所述MapReduce系统中的各所述计算节点上报的计算任务的处理速度,所述计算任务为在所述计算节点上处理的计算任务;根据所述处理速度得到所述计算任务所属的工作的平均处理速度,所述平均处理速度所述V表示所述工作所拆分成的各所述计算任务的所述处理速度,所述η表示所述工作所拆分成的各计算任务所在的计算节点的总个数;根据所述工作的平均处理速度得到所述各计算节点的计算能力值。
4.根据权利要求1-3任一所述的MapReduce系统的慢任务调度方法,其特征在于,在所述获取目标计算节点在加载待调度的慢任务之后预估的计算能力值之前,还包括接收所述MapReduce系统中的计算节点发送的申请计算任务消息。
5.根据权利要求1-4任一所述的MapReduce系统的慢任务调度方法,其特征在于,所述 N与所述MapReduce系统中的计算节点的总数的比值为10%。
6.—种MapReduce系统的慢任务调度装置,其特征在于,包括参数获取单元、能力预估单元、队列排列单元和调度处理单元;所述参数获取单元,用于分别获取MapReduce系统中的各计算节点的计算能力值,所述计算节点的计算能力值c = O1 /V1 +V2 Zv2+... + Vm IvJIm,所述Vl......vm表示所述计算节点上的各计算任务的处理速度,所述R......I表示所述各计算任务分别所属的工作的平均处理速度,所述m表示所述计算节点上的计算任务的总数量;所述能力预估单元,用于选取所述队列排列单元产生的慢节点队列中的前M个计算节点,每个选取的所述计算节点作为目标计算节点,所述M为自然数;并分别获取M个所述目标计算节点在加载待调度的慢任务之后预估的计算能力值,所述预估的计算能力 C=^lIvl +V2Iv2 +... + Vm Ivm + Vi+1),所述vi表示目标计算节点上的待调度慢任务的处理速度,所述R表示目标计算节点上的待调度慢任务所属的工作的平均处理速度;所述队列排列单元,用于根据所述计算能力值从大到小的顺序将所述各计算节点排列为慢节点队列;以及,根据所述目标计算节点的预估的计算能力值以及所述目标计算节点之外的各计算节点的计算能力值,将所述目标计算节点与所述目标计算节点之外的各计算节点按照计算能力值从大到小的顺序排列成新的慢节点队列;所述调度处理单元,用于预设所述慢节点队列中从队尾开始向前的第N个计算节点为评价基准节点,所述N为自然数;并在所述目标计算节点预估的计算能力值大于所述评价基准节点的计算能力值时,将所述待调度的慢任务调度到所述目标计算节点。
7.根据权利要求6所述的MapReduce系统的慢任务调度装置,其特征在于,所述参数获取单元包括速度接收子单元,用于接收所述MapReduce系统中的各所述计算节点上报的计算任务的处理速度,所述计算任务为在计算节点上处理的计算任务;平均处理子单元,用于根据所述处理速度得到所述计算任务所属的工作的平均处理速度,所述平均处理速度t = Σν/ ,所述V表示所述工作所拆分成的各所述计算任务的所述处理速度,所述η表示所述工作所拆分成的各计算任务所在的计算节点的总个数;能力获取子单元,用于将所述工作的平均处理速度分别发送至所述各计算节点,并接收所述各计算节点上报的根据所述工作的平均处理速度得到的所述各计算节点的计算能力值;或者,用于根据所述工作的平均处理速度得到所述各计算节点的计算能力值。
8.根据权利要求6或7所述的MapReduce系统的慢任务调度装置,其特征在于,还包括调度触发单元,用于在所述获取MapReduce系统中的目标计算节点在加载待调度的慢任务之后预估的计算能力值之前,接收所述MapReduce系统中的计算节点发送的申请计算任务消息。
全文摘要
本发明提供一种MapReduce系统的慢任务调度方法和装置,其中方法包括分别获取MapReduce系统中的各计算节点的计算能力值,根据计算能力值将各计算节点排列为慢节点队列,并选取队列中的前M个计算节点作为目标计算节点;获取目标计算节点在加载待调度的慢任务之后预估的计算能力值,并将目标计算节点与其他各计算节点按照计算能力值从大到小的顺序排列成新的慢节点队列,并预设慢节点队列中从队尾开始向前的第N个计算节点为评价基准节点,所述N为自然数;在目标计算节点预估的计算能力值大于评价基准节点的计算能力值时,将待调度的慢任务调度到目标计算节点。本发明有效抑制了慢任务调度时抖动现象的发生。
文档编号G06F9/46GK102609303SQ20121001614
公开日2012年7月25日 申请日期2012年1月18日 优先权日2012年1月18日
发明者严华兵, 刘彬, 唐棠, 段翰聪, 聂晓文 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1