容器云环境中流数据处理系统的弹性资源调度方法及系统与流程

文档序号:11285975阅读:196来源:国知局
容器云环境中流数据处理系统的弹性资源调度方法及系统与流程

本发明属于云计算资源调度技术领域,更具体地,涉及一种容器云环境中流数据处理系统的弹性资源调度方法及系统。



背景技术:

大数据时代下,社交网络、在线购物、物联网等会产生大量的实时数据流,如何快速分析这些实时数据成为大数据处理技术的一大挑战。分布式流数据处理系统是一类将实时流数据处理过程转换成多个小作业,在多个处理机器上并行执行的系统。基于小批次作业的分布式流数据处理系统将实时流数据按照时间间隔切分成一系列的小批次数据,然后对这些小批次数据进行处理,利用这种方式,该类型系统可以提供低延迟、高吞吐量的实时数据处理服务。随着云计算技术的发展和普及,将这类复杂的应用部署到云环境中成为趋势。

然而,生产环境中实时数据流的产生速度往往是波动的,如果在部署系统到云环境中的时候固定分配系统资源则无法保证系统性能。一方面,数据流速度过大会导致系统负载过大,固定的资源配置可能使系统无法承受高负载,进而导致处理不及时。另一方面,流数据输入速度过小会导致系统负载较小,而系统固定的资源配置会导致资源浪费,造成云计算用户的开销增大。除此之外,由于流数据被切分成多个批次数据块,针对每个批次数据的处理作业被划分成多个小作业到各个执行节点上运行,由于每一个批次数据的分布并不是均衡的,当被划分成多个小作业处理时,对应的数据块大小也呈现不均衡现象,进而不同的节点处理的负载量不均衡。由于批次执行时间取决于最慢的执行节点,因此这种不均衡势必最终使整个批次的处理时间增加,延迟时间增加,系统性能无法保证。

针对数据流速度波动问题,目前的处理办法有两种:资源最大化和弹性资源调度。资源最大化,即通过实际试运行和统计分析等手段,事先估计系统将会面临的最大峰值负载,根据峰值负载,最大化配置系统资源,保证系统的峰值性能。这种方式能很好保证系统性能,但如果数据流速度较低,则存在资源严重浪费的情况,为云计算用户带来额外开销。弹性资源调度,即通过对系统运行时状态进行观测和分析,根据负载变化弹性地调度系统资源,实现资源量和负载大小的匹配。针对负载不均衡的问题,目前的处理方法有两种:负载重新划分和弹性配置节点资源。负载重新划分,即根据一定的划分策略,将负载数据重新划分到各个节点上,尽力使其均衡分布在各个节点上。这种方法一定程度上可以改善负载不均衡的问题,但是在流数据处理中每个批次作业执行时间要求在秒级别,数据重新划分会增加大量时间开销导致执行时间增加,系统性能受到影响。动态配置节点资源,即根据各个节点处理的负载大小,弹性地配置其资源使得其处理能力能够适应其负载。这种方式在云计算环境中是十分简单高效的。本发明试图探索一种在容器云环境中针对流数据处理系统的弹性资源调度方法,依据系统处理的负载量变化,弹性地调度系统的资源,使得其能够适应数据流速度波动和节点负载分布不均衡的情况,保证其在云计算环境中的性能并降低资源开销。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种容器云环境中流数据处理系统的弹性资源调度方法及系统,根据系统处理的负载来指导系统的资源调度,通过弹性扩展集群节点个数使系统能够适应流数据速度的波动,通过弹性配置各个节点的cpu资源应对节点负载不均衡的情况,保证系统的性能。由此解决现有技术中针对流数据处理系统在容器云环境中存在的性能问题。

为实现上述目的,按照本发明的一个方面,提供了一种容器云环境中流数据处理系统的弹性资源调度方法,包括:

s1、根据采集信息分析系统当前作业执行情况,对容器集群的资源状态做出判断,其中,所述采集信息包括上一个批次作业完成时间、上一个批次作业中每个容器节点花费的处理时间;

s2、若容器集群的资源紧张或者空闲,则由m个历史批次作业中每个容器节点处理的负载数据量预测下一个批次作业的负载数据量,由上一个批次作业完成时间以及上一个批次作业的负载数据量计算容器节点的平均处理速度,然后依据下一个批次作业的负载数据量和平均处理速度计算新的集群规模大小,对容器集群规模进行扩展,m为第一预设值;

s3、若负载不均衡,则由m个历史批次作业中每个容器节点处理的负载数据量预测在下一个批次作业中每个容器节点处理的负载数据量,并重新划分cpu份额,对容器集群内部容器节点间进行cpu资源调度。

优选地,步骤s1包括以下步骤:

s1.1、若pt≠λ*i,则说明系统处于不稳定状态,需要进行资源调整,其中,pt为上一个批次作业完成时间,λ为第二预设值,i为第三预设值,i表示流数据处理应用程序指定的批次周期;

s1.2、根据上一个批次作业中每个容器节点花费的处理时间nt,将容器节点分为两类:

其中,fast类型节点表示执行速度快的节点,slow类型节点表示执行速度慢的节点,统计fast节点个数记为nf,统计slow节点个数记为ns,μ为第四预设值;

s1.3、若pt>λ*i且ns≥σ*n,则说明容器集群资源不足;若pt>λ*i且ns<σ*n,则说明容器集群中容器节点负载不均;若pt<λ*i且nf≥σ*n,则说明容器集群资源过剩,其中σ为第四预设值,n为容器集群中当前容器节点数量。

优选地,步骤s2包括以下步骤:

s2.1、由w'=α*w+(1-α)*wδ对下一个批次作业的负载数据量进行预测,其中w'表示预测的下一个批次作业的负载数据量,w表示上一个批次作业的负载数据量,wδ表示最近两个已经完成的批次作业的负载数据量差值,且批次作业的负载数据量为该批次作业中每个容器节点处理的负载数据量之和,α为第五预设值,且α由m个历史批次作业中每个容器节点处理的负载数据量进行确定;

s2.2、由计算上一个批次作业中容器节点的平均处理速度;

s2.3、由计算新的集群节点数量;

s2.4、根据所述新的集群节点数量,增加或者减少容器节点,调整容器集群规模。

优选地,步骤s3包括以下步骤:

s3.1、由w'=β*w+(1-β)*wδ对下一个批次作业中每个容器节点的负载数据量进行预测,其中w'表示预测的下一个批次作业中容器节点的负载数据量,w表示上一个批次作业中对应容器节点的负载数据量,wδ表示最近两个已经完成的批次作业中对应容器节点的负载数据量差值,β为第六预设值,且β由m个历史批次作业中每个容器节点处理的负载数据量进行确定;

s3.2、由计算下一个批次作业中各容器节点的cpu份额,其中,cpu_ratio'i是第i个容器节点的cpu份额,w'i是预测的下一个批次作业中第i个容器节点的负载数据量,cpu_ratioi是上一个批次作业中第i个容器节点分配到的cpu份额;

s3.3、由下一个批次作业中各容器节点的cpu份额对容器节点的cpu份额进行调节。

优选地,步骤s2.4具体包括:

若n'>n,则增加n'-n个容器节点,若n'<n,则根据上一个批次作业中每个容器节点的负载数据量,选择n-n'个负载数据量最少的容器节点加入黑名单,并在i时间后关闭该n-n'个容器节点。

按照本发明的另一方面,提供了一种容器云环境中流数据处理系统的弹性资源调度系统,包括:

执行信息采集与分析模块,用于根据采集信息分析系统当前作业执行情况,对容器集群的资源状态做出判断,其中,所述采集信息包括上一个批次作业完成时间、上一个批次作业中每个容器节点花费的处理时间;

集群扩展模块,用于在容器集群的资源紧张或者空闲时,由m个历史批次作业中每个容器节点处理的负载数据量预测下一个批次作业的负载数据量,由上一个批次作业完成时间以及上一个批次作业的负载数据量计算容器节点的平均处理速度,然后依据下一个批次作业的负载数据量和平均处理速度计算新的集群规模大小,对容器集群规模进行扩展,m为第一预设值;

集群内资源调度模块,用于在负载不均衡时,由m个历史批次作业中每个容器节点处理的负载数据量预测在下一个批次作业中每个容器节点处理的负载数据量,并重新划分cpu份额,对容器集群内部容器节点间进行cpu资源调度。

优选地,所述执行信息采集与分析模块包括:

初始判定模块,用于在pt≠λ*i时,说明系统处于不稳定状态,需要进行资源调整,其中,pt为上一个批次作业完成时间,λ为第二预设值,i为第三预设值,i表示流数据处理应用程序指定的批次周期;

节点分类模块,用于根据上一个批次作业中每个容器节点花费的处理时间nt,将容器节点分为两类:

其中,fast类型节点表示执行速度快的节点,slow类型节点表示执行速度慢的节点,统计fast节点个数记为nf,统计slow节点个数记为ns,μ为第四预设值;

资源状态判定模块,用于在pt>λ*i且ns≥σ*n时,说明容器集群资源不足;在pt>λ*i且ns<σ*n时,说明容器集群中容器节点负载不均;在pt<λ*i且nf≥σ*n时,说明容器集群资源过剩,其中σ为第四预设值,n为容器集群中当前容器节点数量。

优选地,所述集群扩展模块包括:

第一预测模块,用于由w'=α*w+(1-α)*wδ对下一个批次作业的负载数据量进行预测,其中w'表示预测的下一个批次作业的负载数据量,w表示上一个批次作业的负载数据量,wδ表示最近两个已经完成的批次作业的负载数据量差值,且批次作业的负载数据量为该批次作业中每个容器节点处理的负载数据量之和,α为第五预设值,且α由m个历史批次作业中每个容器节点处理的负载数据量进行确定;

第一计算模块,用于由计算上一个批次作业中容器节点的平均处理速度;

第二计算模块,用于由计算新的集群节点数量;

调整模块,用于根据所述新的集群节点数量,增加或者减少容器节点,调整容器集群规模。

优选地,所述集群内资源调度模块包括:

第二预测模块,用于由w'=β*w+(1-β)*wδ对下一个批次作业中每个容器节点的负载数据量进行预测,其中w'表示预测的下一个批次作业中容器节点的负载数据量,w表示上一个批次作业中对应容器节点的负载数据量,wδ表示最近两个已经完成的批次作业中对应容器节点的负载数据量差值,β为第六预设值,且β由m个历史批次作业中每个容器节点处理的负载数据量进行确定;

第三计算模块,用于由计算下一个批次作业中各容器节点的cpu份额,其中,cpu_ratio'i是第i个容器节点的cpu份额,w'i是预测的下一个批次作业中第i个容器节点的负载数据量,cpu_ratioi是上一个批次作业中第i个容器节点分配到的cpu份额;

资源调度子模块,用于由下一个批次作业中各容器节点的cpu份额对容器节点的cpu份额进行调节。

优选地,所述调整模块,具体用于在n'>n时,增加n'-n个容器节点,在n'<n时,根据上一个批次作业中每个容器节点的负载数据量,选择n-n'个负载数据量最少的容器节点加入黑名单,并在i时间后关闭该n-n'个容器节点。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

(1)本发明通过弹性扩展集群规模和弹性配置节点资源,在保证用户透明情况下,能够保证在数据流速度波动和节点负载不均衡情况下流数据系统的性能。

(2)本发明仅需要对流数据系统的调度器进行一定修改,不需要修改用户的应用,整体成本低。

(3)本发明利用了容器启动速度快,资源弹性配置简便的特点,能够实现高效快速弹性资源调度。

附图说明

图1为本发明实施例公开的一种容器云环境中流数据处理系统的弹性资源调度方法的流程示意图;

图2为本发明实施例公开的一种集群扩展方法的流程示意图;

图3为本发明实施例公开的一种集群内资源调度方法的流程示意图;

图4为本发明实施例公开的一种容器云环境中流数据处理系统的弹性资源调度系统的功能模块示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

如图1所示为本发明实施例公开的一种容器云环境中流数据处理系统的弹性资源调度方法的流程示意图,在图1所示的方法中包括以下步骤:

s1、根据采集信息分析系统当前作业执行情况,对容器集群的资源状态做出判断,其中,该采集信息包括上一个批次作业完成时间、上一个批次作业中每个容器节点花费的处理时间;

其中,该处理时间的计算方法是:处理时间=最晚完成的任务完成时间-最早提交的任务的提交时间。

s2、若容器集群的资源紧张或者空闲,则由m个历史批次作业中每个容器节点处理的负载数据量预测下一个批次作业的负载数据量,由上一个批次作业完成时间以及上一个批次作业的负载数据量计算容器节点的平均处理速度,然后依据下一个批次作业的负载数据量和平均处理速度计算新的集群规模大小,对容器集群规模进行扩展,m为第一预设值;在本发明中m优选取值为5。

s3、若负载不均衡,则由m个历史批次作业中每个容器节点处理的负载数据量预测在下一个批次作业中每个容器节点处理的负载数据量,并重新划分cpu份额,对容器集群内部容器节点间进行cpu资源调度。

作为一种可选的实施方式,步骤s1包括以下步骤:

s1.1、若pt≠λ*i,则说明系统处于不稳定状态,需要进行资源调整,其中,pt为上一个批次作业完成时间,λ为第二预设值,i为第三预设值,i表示流数据处理应用程序指定的批次周期;在本发明中λ优选取值为0.9。

s1.2、根据上一个批次作业中每个容器节点花费的处理时间nt,将容器节点分为两类:

其中,fast类型节点表示执行速度快的节点,slow类型节点表示执行速度慢的节点,统计fast节点个数记为nf,统计slow节点个数记为ns,μ为第四预设值,在本发明中μ优选取值为0.5;

s1.3、若pt>λ*i且ns≥σ*n,则说明容器集群资源不足;若pt>λ*i且ns<σ*n,则说明容器集群中容器节点负载不均;若pt<λ*i且nf≥σ*n,则说明容器集群资源过剩,其中σ为第四预设值,n为容器集群中当前容器节点数量。在本发明中σ优选取值为0.4。

其中,通过步骤s1中的资源情况分析步骤通过分析历史执行信息来确定当前集群的资源状态,可以指导最终做出资源决策。

如图2所示为本发明实施例公开的一种集群扩展方法的流程示意图,在图2所示的方法中,包括以下步骤:

s2.1、由w'=α*w+(1-α)*wδ对下一个批次作业的负载数据量进行预测,其中w'表示预测的下一个批次作业的负载数据量,w表示上一个批次作业的负载数据量,wδ表示最近两个已经完成的批次作业的负载数据量差值,且批次作业的负载数据量为该批次作业中每个容器节点处理的负载数据量之和,α为第五预设值,且α由m个历史批次作业中每个容器节点处理的负载数据量进行确定;

以下通过举例的方式说明本发明中α取值的确定:假设m取值为5,w[1]、w[2]、w[3]、w[4]、w[5]分别表示采集到的五个历史批次作业的负载数据量,根据预测的算法可以得到预测值:

w'[3]=α*w[2]+(1-α)*(w[2]-w[1])

w'[4]=α*w[3]+(1-α)*(w[3]-w[2])

w'[5]=α*w[4]+(1-α)*(w[4]-w[3])

w'[6]=α*w[5]+(1-α)*(w[5]-w[4])

其中,可以通过取不同的α值分别计算出w'[3]、w'[4]、w'[5]以及w'[6],对不同α值对应的每一组w'[3]、w'[4]、w'[5],由于已经采集到了准确的值w[3]、w[4]、w[5],因此可以通过w[3]、w[4]、w[5]计算每一组的平均绝对误差,将平均绝对误差最小时对应的α值作为目标α值,最后根据计算得到的目标α值预测下一个批次作业的负载数据量,即本例中的w'[6]的值。

s2.2、由计算上一个批次作业中容器节点的平均处理速度;

s2.3、由计算新的集群节点数量;

s2.4、根据所述新的集群节点数量,增加或者减少容器节点,调整容器集群规模。

具体地,可以通过以下方式调整容器集群规模:若n'>n,则增加n'-n个容器节点,若n'<n,则根据上一个批次作业中每个容器节点的负载数据量,选择n-n'个负载数据量最少的容器节点加入黑名单,并在i时间后关闭该n-n'个容器节点。

如图3所示为本发明实施例公开的一种集群内资源调度方法的流程示意图,在图3所示的方法中,包括以下步骤:

s3.1、由w'=β*w+(1-β)*wδ对下一个批次作业中每个容器节点的负载数据量进行预测,其中w'表示预测的下一个批次作业中容器节点的负载数据量,w表示上一个批次作业中对应容器节点的负载数据量,wδ表示最近两个已经完成的批次作业中对应容器节点的负载数据量差值,β为第六预设值,且β由m个历史批次作业中每个容器节点处理的负载数据量进行确定;

其中,β值的确定可以参考上个实施例中对确定α值的举例,本发明实施例将不在复述。

s3.2、由计算下一个批次作业中各容器节点的cpu份额,其中,cpu_ratio'i是第i个容器节点的cpu份额,w'i是预测的下一个批次作业中第i个容器节点的负载数据量,cpu_ratioi是上一个批次作业中第i个容器节点分配到的cpu份额;

s3.3、由下一个批次作业中各容器节点的cpu份额对容器节点的cpu份额进行调节。

如图4所示,本发明的主要功能模块包括执行信息采集与分析模块、集群扩展模块和集群内资源调度模块。集群扩展模块负责在系统发生资源紧张或空闲时对集群规模进行调整。集群内资源调度模块则负责在系统负载不均衡时调度集群内各容器节点的cpu资源。本发明中执行驱动器和任务执行器都运行在容器中,通过修改流数据处理系统的资源管理策略实现弹性资源配置,保证系统在容器云环境中的性能。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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