一种基于混合元启发式算法的Hadoop负载均衡任务调度方法与流程

文档序号:14714135发布日期:2018-06-16 01:00阅读:215来源:国知局
一种基于混合元启发式算法的Hadoop负载均衡任务调度方法与流程

本发明涉及Hadoop MapReduce结构下的任务调度领域。更具体的是,利用粒子群算法和基于模拟退火和粒子群优化算法的混合元启发式算法,以及 MPICH并行编程方法,使集群负载均衡为目标的Hadoop任务调度算法。



背景技术:

随着移动智能设备的高速发展,信息化时代的发展变得越来越迅捷,与之同时而来的便是随着用户对网络的使用,随之主动或被动产生的海量数据,这些数据通过传统的统计或计算方法通常是无法挖掘出其中的价值,然而一旦能挖掘出这些数据背后的潜在价值,便能为企业和政府带来巨大的收益,例如淘宝网便能通过对用户商品浏览记录的分析来判断用户的商品喜好和需求,同时定向进行首页商品推送,从而达到商品导购的目的;视频音乐资源服务商能够从用户历史使用数据中总结出用户喜爱,通过定向推荐来提升自己的服务能力,从而使用户获得更好的用户体验。但是想要对这些大数据进行处理,传统的计算方式已经不能够满足需求,企业和政府机构需要计算能力强大的计算机集群才能达到自己的目的。

然而建设维护一个数据中心的成本是极其昂贵的,对于绝大多数的中小型企业来说自身并没有能力去搭建一个规模足够庞大的数据中心来满足自身的业务需求,此时按需计价的云服务模式为企业提供了极大的帮助。通过购买云数据中心的服务,企业可以在短短几个小时的时间内部署成百上千的服务器集群,而使用这些云计算资源所耗费的成本同传统的数据中心建设相比,显得十分廉价与便捷,同时随着后期的业务变化,用户能够积极便捷的实现云计算资源的变化与调整,实时的满足自身的业务需求。同时云数据中心的发展也为大型跨国公司提供了便利,公司可以通过在全球不同地区的云数据中心购买服务,这样不仅能够公司节省大量的建设传统数据中心所带来的人力物力成本,同时也能够为跨国企业分布在世界各地的用户带来更好的响应速度,提升用户体验。但是对于数据中心来说,能够尽可能使自身的计算能力得到更充分的利用,从而提供更高效的计算服务,进而在相同时间里更好更快的处理更多的用户任务,是使数据中心获得更大收益的重要途径。

Hadoop是一个能够对大量数据进行分布式处理的分布式系统基础架构,由于其MapReduce分布式处理框架原理简单、性能优越,目前被许多数据中心使用来进行大数据的计算处理。而如何使Hadoop集群真正工作起来的一个重要环节就是任务调度。任务调度其实就是通过一定的任务调度算法将集群计算资源进行分配,从而使待处理的任务能够得到足够的资源进行处理,一个好的任务调度算法不仅要能使任务处理的更快(也就是使用户得到更快的效应速度),同时也要是集群中每一台机器都发挥出自己的计算能力,因为对于数据中心中运行的机器来说,一般而言工作五年后就需要进行更换,如果机器长期处于闲置状态,或机器的计算能力利用不够,这对于数据中心来说都是巨大的损失。传统的任务调度算法分为两类,一种是实时任务调度算法,另一种是启发式任务调度算法。实时调度算法的核心思想是实时的对作业进行调度处理,给作业分配所需的计算资源,它具有响应时间短,任务调度造成的资源开销很小的优点,但是由于实时调度算法无法对集群中所有机器进行全局的资源分配,容易造成集群负载不均衡的弊端,长时间积累下来,就会对集群的计算资源造成很大的浪费。启发式任务调度算法可以将集群中的所有机器的资源综合考虑,在给定解空间(受到集群具体资源的限制)内以负载均衡或最快处理速度为目标进行最优求解,这样就能够实现全局的资源分配,从而使集群的计算资源得到更好的利用。但是由于集群中的节点数目往往十分庞大,使用启发式算法进行求解时,求解过程十分繁琐,会造成不小的额外开销,而在传统的Hadoop任务调度模式下,启发式任务调度会给主节点(Master节点,Hadoop中负责作业的调度分发工作)造成沉重的负担,从而影响集群的工作稳定性,同时启发式算法如粒子群、蚁群、模拟退火等都容易陷入局部最优的问题,实际调度过程中发挥的性能也并不稳定。

本发明从Hadoop采用启发式任务调度算法的这些不足出发,基于 MapRedeuce分布式处理框架、MPICH并行处理算法、粒子群优化算法、粒子群优化算法与模拟退火优化算法相结合的混合启发式算法等,提出了一种以提升集群资源利用率为目标的任务调度方法。



技术实现要素:

本发明的目的在于提供一种基于Hadoop架构下的提高分布式集群计算资源利用率为目标的任务调度方法,综合考虑了启发式算法自身的容易陷入局部最优的缺点和将启发式算法用于Hadoop任务调度的不适应之处,能够根据集群中各个机器的计算能力高低分别分配相适应数量的待处理任务,使集群中每台机器的待处理任务的计算压力处于同一水平线,从而平衡集群中的任务处理节点(Slave节点)的负载,提高集群的计算资源利用率实现节省成本并提高利润,同时通过多粒子群同时寻优、基于模拟退火的粒子群优化算法等启发式优化算法同时使用,提高了任务调度算法跳出局部最优点的能力,并且使用 MPICH并行编程方法,将启发式算法的求解过程分担到了若干台机器中去执行,避免了增添Hadoop集群中的Master节点的计算压力,提高了集群的稳定性。

为达到上述目的,本发明采用下述技术方案:

为了实现本发明中的根据任务处理节点之间的计算资源差异分别分配相应数量的待处理任务,实现任务处理节点之间的计算压力处于同一水平线,基于 MapReduce分布式框架下的资源槽的概念:资源槽Slot,传统的MapReduce分布式处理框架节点资源的划分单位,节点会根据自身的计算能力和内存总量确定出自身的Slots总量,而Slot又因为MapReduce框架的特点,还有Map Slots 和Reduce Slots的区别,Map Slots专门用于处理Map子任务,Reduce Slots专用于处理Reduce子任务。而当Hadoop处理作业时,作业会预先向JobTracker 申请Slots资源,根据这一特性,本发明建立了资源槽压力模型。

为了实现本发明的将启发式算法应用于Hadoop的任务调度中,同时不给 Master节点增加额外的计算负担,并且提高算法跳出局部最优的能力,本发明提出了使用MPICH并行编程方法,将任务调度算法的演算过程置于额外的计算节点执行,同时采用多粒子群和基于模拟退火算法的粒子群等粒子群同时寻优,并采用在规定时间,寻优结果最佳的种群的演算结果用于实际的任务分配,从而既提高了算法跳出局部最优解的能力,也避免了给Master节点增加负担。

综上所述,一种基于混合元启发式算法的Hadoop负载均衡任务调度方法,包括如下步骤:

S1、针对平衡任务处理节点的处理任务的计算压力,根据资源槽原理,建立资源槽压力模型;

S2、采用粒子群优化算法的求解资源槽压力模型;

S3、采用基于模拟退火与粒子群优化算法的混合元启发式优化算法求解资源槽压力模型;

S4、采用MPICH并行编程方法,转移启发式优化算法的复杂计算过程于额外计算节点,通过同时运行多个粒子群,让多个种群找到更多的局部最优解,然后提取其中效果最好的解用于任务调度。

作为优选,所述资源槽压力模型的优化目标为最小化Hadoop集群Slave 节点计算压力间的方差Variance,所述的资源槽压力模型为:

其中,Pressure表示Slave节点时间待处理的m个Map子任务所需的Map资源槽总和相较于该节点的Map资源槽总数M所造成待处理任务计算压力;ti表示第i个待处理任务所需的Map资源槽数量;Average表示集群中所有Slave 节点待处理任务计算压力的平均值;Mi表示集群中第i个Slave节点的Map资源槽数量;S表示集群中Slave节点的数量;Variance表示集群中各Slave节点待处理任务计算压力间的方差。

作为优选,根据所建立的资源槽压力模型,将任务调度编码入了粒子群优化算法的粒子坐标中,同时设计的目标函数能够从粒子坐标中计算出当前粒子坐标表示的任务调度方案下,集群的Slave节点计算压力方差。所述的基于资源槽压力模型的粒子群优化算法具体参数与公式如下:

其中,Xi(x1,x2,x3,...,xm)表示第i个粒子在解空间中的坐标;xm表示第m个待处理任务被分配到第xm个Slave节点上运行;Vi(v1,v2,v3,...,vm)表示第i个粒子的速度;Vi′表示第i个粒子根据上一轮迭代的学习经验更新后的速度w为惯性权重;c1和c2为学习因子;r1和r2为[0,1]上的随机数;pBesti为第i个粒子的个体最优点;gBest为种群的最优点;Xi′表示第i个粒子经过一轮迭代后的坐标;pBesti'为第i个粒子一轮迭代更新后的个体最优点;gBest'为一轮迭代更新后的种群最优点;f(Xi)为粒子群优化算法的目标函数,该函数的功能为根据例子坐标Xi(x1,x2,x3,...,xm)中的待处理任务与Slave节点间的对应关系,计算出集群中Slave节点待处理任务计算压力的方差Variance。

作为优选,所述采用粒子群优化算法求解资源槽压力模型的约束包括:为了实现采用粒子群优化算法求解资源槽压力模型,需要预先对集群中所有Slave 节点的计算资源进行的统计,同时在任务调度过程中需要为每一个Slave节点生成维护一个待处理任务队列,在对Map子任务分配方案进行求解前,需要从 JobTracker中获取每一个Map子任务所需要的资源槽数量,从而通过资源槽压力模型的相关公式,进行求解。

作为优选,采用基于模拟退火和粒子群优化算法的混合元启发式算法求解资源槽压力模型具体为:粒子群初始化种群中的粒子坐标和初始速度后,根据目前的粒子坐标对应的目标函数结果最优的粒子位置fmin和最差的粒子位置 fmax间差生的目标函数结果差值以及预先设定的初始接受概率pr计算初始退火温度T0;在之后的每次迭代中,若根据粒子坐标更新规则计算得出的粒子坐标对应的目标函数值优于当前的粒子坐标对应的目标函数值,则直接使用新的粒子坐标更新当前的粒子坐标,如果新的粒子坐标对应的目标函数值差于当前的粒子坐标对应的目标函数值,则根据模拟退火算法中的接受法则判断是否接受新的坐标,否则保持粒子原坐标不变;模拟退火算法接受次优点坐标的特性,赋予了混合算法在粒子群陷入局部最优点后,通过接受次优点从而跳出局部最优点,从而最终收敛于全局最优点,具体公式如下:

其中,粒子群相关的公式与参数仅粒子坐标更新公式发生了改变,T0为初始退火温度;pr为初始接受概率;fmin和fmax为粒子群初始化后的最小、最大目标函数适应值;Ti为第i轮迭代时的退火温度;ξ为温度衰变系数;X′i表示第 i个粒子经过一轮迭代后的坐标。

作为优选,在限定时间内,若任一种群达到了目标函数规定的约束条件,则当前种群便向Master节点传输计算所得的任务调度方案,Master节点在一定的时间片之后,对所获取的任务调度方案进行目标函数值对比,选取其中使集群中所有Slave节点计算压力最平均的任务调度方案用于任务资源分配;若在限定的时间内,尚存在种群未能达到收敛条件,则截取当前种群中的种群最优解作为该种群搜寻的最优任务调度方案传输给Master节点。

本发明的有益效果如下:

本发明所述技术方案能够解决Hadoop集群使用启发式调度算法会给 Master节点造成额外的计算负担,影响集群工作稳定性的难题,从而克服了使用实时调度算法时会造成的集群负载不均衡,部分节点存在资源浪费的缺点,同时使用MPICH并行编程方法,通过多种群同时寻优,提升了启发式调度算法的满足作业处理时效性需求的能力;通过模拟退火与粒子群优化算法的结合,提升了混合启发式算法跳出局部最优点的能力,优化的了启发式调度算法对全局最优点的搜寻能力。本发明叙述的技术方案从使Hadoop集群中各节点负载均衡出发,在实现了不给Master节点增添额外计算负担的前提下,充分考虑集群中Slave节点的计算处理能力不同,实现了“按能分配”的任务分配方式,能够在保证Hadoop集群任务处理效率和稳定性的前提下,发挥出实时调度算法下集群中的可能产生的空闲计算资源的计算潜能,从而使数据中心的集群建设投资得到更大的回报,使数据中心的收益进一步的增加。

附图说明

下面结合附图对本发明的具体实施方式作进一步详细的说明:

图1示出基于混合元启发式算法的Hadoop负载均衡任务调度方法的流程图;

图2示出添加额外计算节点用于算法求解的Hadoop集群架构图。

具体实施方式

为了更清楚地说明本发明,下面结合优选实施例和附图对本发明做进一步的说明。附图中相似的部件以相同的附图标记进行表示。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。

如图1和图2所示,本发明公开的一种基于混合启发式算法的Hadoop负载均衡任务调度方法技术领域,包括如下步骤:

S1、针对平衡任务处理节点的处理任务的计算压力,根据资源槽原理,建立资源槽压力模型。

上述资源槽压力模型的主要目标是使集群中的所有任务运行子节点(Slave 节点)的待执行任务的对各自节点的计算压力处于同一水平线。MapReduce分布式处理框架下的Hadoop集群,在实际的资源分配过程中,会以资源槽Slot 为单位,给将要执行的任务进行资源分配。具体每个Slot包含多少计算资源,将会在Hadoop配置预先设定,并且对于所有Slave节点而言,单个Slot包含的计算资源都是等量的,则对于不同计算能力的Slave节点来说,节点计算能力上的差异,实际体现出来的就是Slot数目的差异。在本发明中的资源槽压力模型中,节点计算压力是通过计算节点待处理任务所需的资源槽总数目和节点本身拥有的资源槽数目进行对比,从而进行量化分析。资源槽压力模型的实际含义是,通过合理的任务调度方法,使得所有Slave节点的待处理任务计算压力处于同一水平线(既方差越小越好)。根据此,本发明公开的任务调度方法就能够使所有Slave节点在相近的计算压力下执行任务,使集群的负载相对均衡。

所述的资源槽压力模型中,节点计算压力Pressure,衡量集群所有Slave计算压力是否在同一水平线的参数为Variance,其计算模型具体如下:

其中,Pressure表示Slave节点时间待处理的m个Map子任务所需的Map资源槽总和相较于该节点的Map资源槽总数M所造成待处理任务计算压力;ti表示第i个待处理任务所需的Map资源槽数量;Average表示集群中所有Slave 节点待处理任务计算压力的平均值;Mi表示集群中第i个Slave节点的Map资源槽数量;S表示集群中Slave节点的数量;Variance表示集群中各Slave节点待处理任务计算压力间的方差。

S2、采用粒子群优化算法的求解资源槽压力模型。

本发明根据所建立的资源槽压力模型,将任务调度编码入了粒子群优化算法的粒子坐标中,同时设计的目标函数能够从粒子坐标中计算出当前粒子坐标表示的任务调度方案下,集群的Slave节点计算压力方差。所述的基于资源槽压力模型的粒子群优化算法具体参数与公式如下:

其中,Xi(x1,x2,x3,...,xm)表示第i个粒子在解空间中的坐标;xm表示第m个待处理任务被分配到第xm个Slave节点上运行;Vi(v1,v2,v3,...,vm)表示第i个粒子的速度;Vi′表示第i个粒子根据上一轮迭代的学习经验更新后的速度w为惯性权重;c1和c2为学习因子;r1和r2为[0,1]上的随机数;pBesti为第i个粒子的个体最优点;gBest为种群的最优点;Xi′表示第i个粒子经过一轮迭代后的坐标;pBesti'为第i个粒子一轮迭代更新后的个体最优点;gBest'为一轮迭代更新后的种群最优点;f(Xi)为粒子群优化算法的目标函数,该函数的功能为根据例子坐标Xi(x1,x2,x3,...,xm)中的待处理任务与Slave节点间的对应关系,计算出集群中Slave节点待处理任务计算压力的方差Variance。

为了实现采用粒子群优化算法求解资源槽压力模型,需要预先对集群中所有Slave节点的计算资源进行的统计,同时在任务调度过程中需要为每一个 Slave节点生成维护一个待处理任务队列,在对Map子任务分配方案进行求解前,需要从JobTracker中获取每一个Map子任务所需要的资源槽数量,从而通过资源槽压力模型的相关公式,进行求解。

S3、采用基于模拟退火与粒子群优化算法相结合的混合元启发式优化算法来求解资源槽压力模型。

上述的混合元启发式优化算法的主要目的是通过模拟退火算法接受次优点坐标的可能性,给予粒子群算法跳出局部最优点的能力,提高算法的全局最优解寻找能力,提升任务调度算法的效果。混合元启发式算法的具体公式如下所示:

其中,粒子群相关的公式与参数仅粒子坐标更新公式发生了改变。T0为初始退火温度;pr为初始接受概率;fmin和fmax为粒子群初始化后的最小、最大目标函数适应值;Ti为第i轮迭代时的退火温度;ξ为温度衰变系数。

本发明中的基于模拟退火和粒子群优化算法的混合启发式算法的基本原理为:粒子群初始化种群中的粒子坐标和初始速度后,根据目前的粒子坐标对应的目标函数结果最优的粒子位置fmin和最差的粒子位置fmax间差生的目标函数结果差值以及预先设定的初始接受概率pr计算初始退火温度T0。在之后的每次迭代中,若根据粒子坐标更新规则计算得出的粒子坐标对应的目标函数值优于当前的粒子坐标对应的目标函数值,则直接使用新的粒子坐标更新当前的粒子坐标,如果新的粒子坐标对应的目标函数值差于当前的粒子坐标对应的目标函数值,则根据模拟退火算法中的接受法则判断是否接受新的坐标,否则保持粒子原坐标不变。模拟退火算法可能接受次优点坐标的特性,赋予了混合算法在粒子群陷入局部最优点后,通过接受次优点从而跳出局部最优点的可能性,从而能够最终收敛于全局最优点。

S4、采用MPICH并行编程方法,转移启发式优化算法的复杂计算过程于额外计算节点,并提升在规定时间内,任务调度方法求解最优任务调度方案的能力。

本发明使用MPICH并行编程方法的主要目的是通过并行编程方法,将任务调度方法的实际演算过程转移至专用的计算节点,从而减少Master节点的计算负担。同时,为了满足作业处理的时效性需求,任务调度方案的演算时间需要收到一定的限制,由于混合算法的计算时间在某些情况下可能会出现计算时间过长的情况,不能总是等着混合算法求解完毕了才开始进行任务分配,因此可以通过MPICH并行编程算法,同时在多个计算节点上进行若干个标准粒子群优化算法、基于模拟退火和粒子群优化算法相结合的混合启发式优化算法的寻优过程,标准粒子群优化算法与基于模拟退火和粒子群优化算法的混合混启发式算法相比,计算过程相对更简单,求解过程更快。虽然标准粒子群算法具有容易陷入局部最优解的缺陷,但由于粒子群算法求解具有随机性,有一种提高算法求解效果的方法就是通过同时运行多个粒子群,让多个种群尽可能找到更多的局部最优解,然后提取其中效果最好的解用于任务调度,就可以在较短的时间内实现更优的任务调度效果。在限定的时间内,若任一种群达到了目标函数规定的约束条件,则当前种群便向Master节点传输计算所得的任务调度方案,Master节点在一定的时间片之后,对所获取的任务调度方案进行目标函数值对比,选取其中使集群中所有Slave节点计算压力最平均的任务调度方案用于任务资源分配;若在限定的时间内,尚存在种群未能收敛到最优解,则截取当前种群中的种群最优解作为该种群搜寻的最优任务调度方案传输给Master节点。通过对多个种群的种群最优解进行目标函数值比较,就能够在规定的时间内,尽可能的找到目标函数值最优的任务调度方法用于任务调度,从而实现既不给Master节点造成额外的负担,同时保证任务调度算法的时效性和优化效果。

本发明的基于混合元启发式算法的Hadoop负载均衡任务调度方法,该方法通过考虑实时调度算法下Hadoop集群中存在的负载不均衡和部分节点计算资源闲置不足的问题,从而针对集群中所有Slave节点的Map资源槽进行全局的任务调度。建立资源槽压力模型,该模型以使集群中所有的Slave节点处理任务的计算压力处于同一水平线为目标,采用基于模拟退火和粒子群优化的混合元启发式算法进行最优任务调度方案的求解,实现Hadoop集群环境下的负载均衡任务调度。进一步通过高性能和广泛可移植性的消息传递接口MPICH (MPI over CHameleon)实现算法的并行编程,将启发式优化算法的计算过程转移至额外的计算节点,并通过多种群同时求解,减轻Master节点的计算压力,提升单位时间内最优任务调度方案的求解能力。本发明能够对Hadoop集群的计算资源进行整体分配,使集群的节点负载均衡,避免节点计算资源浪费,最大化数据中心的设备投入的利润。

显然,本发明的上述实施例是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定,对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动,这里无法对所有的实施方式予以穷举,凡是属于本发明的技术方案所引伸出的显而易见的变化或变动仍处于本发明的保护范围之列。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1