CN114780247B - 一种流速和资源感知的流应用调度方法及系统 - Google Patents
一种流速和资源感知的流应用调度方法及系统 Download PDFInfo
- Publication number
- CN114780247B CN114780247B CN202210535602.1A CN202210535602A CN114780247B CN 114780247 B CN114780247 B CN 114780247B CN 202210535602 A CN202210535602 A CN 202210535602A CN 114780247 B CN114780247 B CN 114780247B
- Authority
- CN
- China
- Prior art keywords
- task
- resource
- node
- computing
- flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种流速和资源感知的流应用调度方法及系统,方法包括:根据流应用的拓扑结构构建数据流划分模型;根据执行器间的元组传输速率构建任务分配模型;根据计算节点资源的占用情况构建负载均衡模型;根据数据流划分模型,提出基于FFD算法的流速感知方法进行调度,将执行器和计算节点分别按照元组传输速率和负载均衡指数进行排序,在不超过计算节点阈值的情况下,将高度通信的执行器聚集到同一计算节点中;根据任务分配模型与负载均衡模型,基于蚁群优化的资源感知方法进行调度,以最小化任务完成时间和优化资源分配方案为目标,将任务的资源需求与计算节点剩余资源情况加入到信息素和启发式函数中,在分配过程中使任务根据资源需求类型找到相匹配的计算节点。
Description
技术领域
本发明涉及大数据流计算技术领域,特别是指一种流速和资源感知的流应用调度方法及系统。
背景技术
流计算是一种不需要对数据进行存储,在内存中直接进行计算和输出操作的大数据计算方式。用于处理那些规模庞大却对时延有着较高的要求,必须在秒级或毫秒级的时间内得到处理的数据。目前流计算的应用领域也十分广泛,在交通领域,可以利用大数据技术对道路情况进行监测,通过对海量交通数据的实时分析来展现道路拥堵的情况以避免交通堵塞带来的不便;在通信领域,可以通过对过往大量数据的分析与挖掘来帮助用户识别电信诈骗行为避免损失,而在商业领域,商家向消费者提供商品或服务可以利用大数据分析来实现更加精准的营销策。
Storm、Spark Streaming、Flink、Heron这些都是目前主流的流处理系统,用于在分布式环境下高性能的流数据处理,这些流处理系统的目的都是想在低延时高吞吐量的目标下实时处理大规模数据,而流处理系统中的任务调度方法对分布式流处理系统的性能有着较大的影响,比如处理延迟、吞吐量和负载均衡状况。
目前流计算的调度方法主要存在以下问题:
通信开销大,资源分配不均衡,尤其是当用户提交了多个不同类型的任务时,比如计算密集型、I/O密集型的任务,往往会出现负载不均衡的状况,从而造成集群性能瓶颈。
发明内容
本发明要解决的技术问题是提供一种流速和资源感知的流应用调度方法及系统,可以解决通信开销大,资源分配不均衡,尤其是当用户提交了多个不同类型的任务时,比如计算密集型、I/O密集型的任务,往往会出现负载不均衡的状况,从而造成集群性能瓶颈的问题。
本发明实施例提供的方案如下所示:
一方面,提供了一种流速和资源感知的流应用调度方法,所述方法包括:
根据流应用的拓扑结构构建数据流划分模型;
根据执行器间的元组传输速率构建任务分配模型;
根据计算节点资源的占用情况构建负载均衡模型;
根据所述数据流划分模型,提出基于FFD算法的流速感知方法进行调度,将执行器和计算节点分别按照元组传输速率和负载均衡指数进行排序,在不超过计算节点阈值的情况下,将高度通信的执行器聚集到同一计算节点中;
根据所述任务分配模型与负载均衡模型,提出基于蚁群优化的资源感知方法进行调度,以最小化任务完成时间和优化资源分配方案为目标,将任务的资源需求与计算节点剩余资源情况加入到信息素和启发式函数中,在分配过程中使任务根据资源需求类型找到相匹配的计算节点,采用精英蚂蚁搜索减少蚁群算法在调度过程中的收敛时间。
在一种可选的实施例中,所述数据流划分模型包括:
获取拓扑结构中单位时间内相邻两个执行器之间传输的元组数量;
获取统计时间内所述拓扑结构的执行器之间元组传输速率的平均值;
获取数据流传输速率的偏移量;
获取数据流传输速率的平均偏移量;
根据所述元组数量、元组传输速率的平均值、数据流传输速率的偏移量以及数据流传输速率的平均偏移量得到所述数据流划分模型。
在一种可选的实施例中,所述根据所述元组数量、元组传输速率的平均值、数据流传输速率的偏移量以及数据流传输速率的平均偏移量得到所述数据流划分模型,包括:
根据如下公式得到所述数据流划分模型:
在一种可选的实施例中,所述任务分配模型包括:
根据如下矩阵得到任务和计算节点的分配关系:
其中,n为待执行的任务,m为计算节点,其中n>m,n个任务集表示为T={t1,t2,…,ti},i表示第i个任务,m个计算节点集合表示为VM={VMl,VM2,…,VMm},其中m表示第m个计算节点;
X为一个0/1矩阵,其中xnm为任务n和计算节点m的映射关系,将第n个待执行任务分配到第m个计算节点上执行,如果任务n被分配到计算节点m上,在矩阵X中(n,m)的位置上的值为1,否则为0。
在一种可选的实施例中,所述任务分配模型还包括第一约束条件与第二约束条件;
所述第一约束条件为
其中,s.t.为第一约束条件,x为矩阵,xij为矩阵中任务i和计算节点j。
在一种可选的实施例中,所述第二约束条件为
在一种可选的实施例中,所述任务分配模型还包括第三约束条件:
第三约束条件为构建矩阵ET来表示整个拓扑的任务分配到计算节点上的预测完成时间,以及通过公式etnm=TSi/RSj来表示第n个任务在第m个计算节点上的预测完成时间:
其中etnm为第n个任务在第m个计算节点上的预测完成时间,TSi代表任务n所需的资源,RSj代表计算节点m所剩余的资源。
etnm=TSi/RSj
在一种可选的实施例中,所述构建负载均衡模型包括
获取集群中计算节点的负载均衡指数,根据所述负载均衡指数确定所述计算节点的负载情况。
在一种可选的实施例中,所述获取集群中计算节点的负载均衡指数,包括:
按照如下公式获取集群中所有计算节点的平均负载均衡值:
其中,L为集群中所有计算节点的平均负载均衡值,Loadj为集群中计算节点的负载均衡值,j为计算节点j,m’为计算节点的总数。
在一种可选的实施例中,获取集群中所有计算节点的平均负载均衡值包括:
按照如下公式获取集群中所有计算节点的平均负载均衡值
Loadj=δ1*U(cj)+δ2*U(mj)+δ3*U(nj)
其中,U(cj)为计算节点j的CPU占用率,U(mj)为计算节点j的内存占用率,U(nj)为计算节点j的网络带宽占用率。系数δ1、δ2、δ3为常数,代表三项资源的权重且δ1+δ2+δ3=1。
在一种可选的实施例中,基于蚁群优化的资源感知方法进行调度包括:
获取CPU计算能力的信息素、内存能力的信息素、网络带宽能力的信息素;
根据CPU计算能力的信息素、内存能力的信息素、网络带宽能力的信息素确定任务类型;
根据任务类型调整调度路径上的信息素进行调度。
在一种可选的实施例中,根据如下公式获取CPU计算能力的信息素:
其中,τic为CPU计算能力的信息素,h1为CPU计算能力的信息素的总数;
根据如下公式获取内存能力的信息素:
τim为内存能力的信息素,h2为内存能力的信息素的总数;
根据如下公式获取网络带宽能力的信息素:
τin为网络带宽能力的信息素,h3为网络带宽能力的信息素的总数。
另一方面,提供了一种流速和资源感知的流应用调度系统,所述系统包括可读存储介质,所述可读存储介质上存储计算机程序,所述计算机程序用于执行上述任一所述的方法。
本发明实施例提供的一种流速和资源感知的流应用调度方法至少具有以下有益效果:
本发明实施例提供的方法采用贪心算法FFD与蚁群优化算法,能够根据执行器间的元组传输速率将高度通信的任务优先分配到同一计算节点中以减少通信开销,同时考虑任务的资源需求与计算节点剩余资源的匹配情况来优化资源分配。降低执行时延以及拓扑响应时间,降低计算节点间通信量以及计算节点的CPU占用率。
通过对本发明实施例提供的方法进行相关性能的评估,实验通过经典的WordCount拓扑和Top N拓扑来进行测试,并将实验结果同平台的默认调方法进行比较。实验结果表明,Sd-Stream调度器在延迟、通信开销和CPU利用率方面与平台的默认调方法相比均有提升。其中,执行时延降低约33%,拓扑响应时间降低约23.5%,计算节点间通信量降低约18.5%,计算节点的CPU占用率标准差降低约8%。
附图说明
图1为相关技术提供的拓扑结构架构示例图;
图2为作为示例的用户提交的拓扑结构示意图;
图3为拓扑结构中任务分配的结果示意图;
图4为集群的状态示意图;
图5为具有不同类型任务的拓扑分配结果示意图;
图6为本发明实施例提供的流速和资源感知的流应用调度方法流程示意图;
图7为本发明实施例提供的一个简单的拓扑结构示例图;
图8为Sd-Stream调度方法流程示意图;
图9为本发明实施例提供的调度系统实施架构图示意图;
图10为运行WordCount拓扑条件下,Storm的默认调度方法和Sd-Stream方法的执行延迟对比情况示意图;
图11为在WordCount拓扑条件下,Sd-Stream调度方法与Storm默认调度方法的计算节点间通信量对比情况示意图;
图12为WordCount拓扑运行在Storm默认调度方法和Sd-Stream方法下的CPU资源占用率对比情况示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
在流式计算中,通常将拓扑任务抽象为有向无环图DAG(Directed AcyclicGraph)来表示。拓扑的架构如图1所示,拓扑是由组件Spout和组件Bolt通过数据流连接的一种计算结构。流计算的调度问题就是将用户提交的拓扑分配到计算节点上,在分布式流系统的任务调度过程中,默认的轮询调度方法会将提交的任务按照总的任务数量近似平均的分配到工作计算节点上。但是这种常用的调度方法,只考虑到了逻辑上的相对均衡,忽略了组件间的通信开销问题。
通信开销问题:假设用户提交的拓扑结构如图2所示,其中Spout有2个实例,Bolt1和Bolt2都含有3个实例,Bolt3有两个实例。假设集群中有两个计算节点,按照默认的轮询调度算法进行调度,那么拓扑结构中任务分配的结果如图3所示,以任务t1为例可以看出互为通信的任务可能并不能全部分配到同一进程和同一计算节点当中,会与t7产生进程间通信,同时会与t4和t6产生计算节点间通信。任务在分布式流计算系统中运行有三种通信方式。其中计算节点间通信由于相互通信的执行器在不同的工作计算节点上,产生的通信需要通过网络传输来完成,而相比于内存、CPU等方式网络传输效率较低,所以开销最大。进程间通信由于执行器和目标执行器位于同一个工作计算节点的不同进程上,他们的通信方式为进程间通信,开销次之。进程内通信则是互为通信的执行器位于同一个进程中,进程内的通信开销在三种通信方式中最小。所以为了减少任务在处理过程中的时延,应该尽量避免计算节点间的通信开销,最大限度的将计算节点间通信开销转换成其他两种方式。
资源分配问题:在分布式流计算系统中调度方法负责任务的分配同时还需要对计算节点的资源状况进行评估,所以调度方法的性能也将影响到集群的负载情况。首先,轮询的调度方式可能会造成插槽资源方面的负载不均衡现象。举例说明,假如一个集群中有三个计算节点,每个计算节点分别有三个插槽,用户分别提交了三个拓扑,拓扑1需要四个插槽,拓扑2需要两个插槽,拓扑3需要一个插槽。系统采用轮询的调度方法对提交的所有拓扑分配完毕后,集群的状态如图4所示,可以看出计算节点1与计算节点2的插槽均被使用,而计算节点3中只被使用了一个插槽,这三个计算节点在插槽资源分配方面存在着不均衡的情况,从而影响集群的整体性能。
基于插槽使用率均衡的动态负载方法,是从逻辑层面追求负载均衡的状态,忽略了物理资源使用率方面可能会出现的不均衡现象,比如计算节点中出现CPU、内存等资源的利用率相差过大的情况。在实际应用中,尤其是在多任务场景下,任务彼此之间会对资源类型需求有着较大的差异,有些任务可能会执行较多计算、分组等操作需要较多的CPU资源,而有的任务则需要进行频繁的网络传输或读取硬盘,那么则需要较多的硬盘和内存资源。所以,只考虑逻辑层面的均衡分配也不会使任务分配到最适合它的资源,这样的分配方式同样会导致集群性能下降和负载不均衡的问题。
举例说明,如图5所示提交的拓扑结构,拓扑结构本身包含5个组件,其中有3个组件中的任务类型为计算密集型任务,2个组件中任务类型为I/O密集型任务。采取基于槽均衡的调度方法之后,三个计算节点使用的槽数量达到了均衡的状态,但是计算节点1中的任务均为计算密集型任务,会导致计算节点1的CPU使用率过高,而其它资源使用率较低。计算节点2中的任务均为I/O密集型任务,同样会导致I/O使用率过高,其它资源使用率较低的情况。最终会导致集群出现物理资源方面的负载失衡情况。
通过以上的两个例子可以表明,在多任务场景下,分布式流系统的轮询调度方法可能会出现槽分配不均衡的情况,但是如果仅仅考虑逻辑层面的平均分配也无法在负载均衡以及资源利用率等方面达到满意的效果,不同任务对资源类型不同的需求在调度过程中也是一个不可忽视的因素。鉴于此,本发明实施例提供了一种流速和资源感知的流应用调度方法,可以解决上述技术问题。
请参见图6,图6为本发明实施例提供的一种流速和资源感知的流应用调度方法流程示意图,方法包括:
S101、根据流应用的拓扑结构构建数据流划分模型。
S102、根据执行器间的元组传输速率构建任务分配模型。
S103、根据计算节点资源的占用情况构建负载均衡模型。
S104、根据数据流划分模型,提出基于FFD算法的流速感知方法进行调度,将执行器和计算节点分别按照元组传输速率和负载均衡指数进行排序,在不超过计算节点阈值的情况下,将高度通信的执行器聚集到同一计算节点中。
S105、根据任务分配模型与负载均衡模型,提出基于蚁群优化的资源感知方法进行调度,以最小化任务完成时间和优化资源分配方案为目标,将任务的资源需求与计算节点剩余资源情况加入到信息素和启发式函数中,在分配过程中使任务根据资源需求类型找到相匹配的计算节点,采用精英蚂蚁搜索减少蚁群算法在调度过程中的收敛时间。
本发明实施例提供的一种流速和资源感知的流应用调度方法至少具有以下有益效果:
本发明实施例提供的方法采用贪心算法FFD与蚁群优化算法,能够根据执行器间的元组传输速率将高度通信的任务优先分配到同一计算节点中以减少通信开销,同时考虑任务的资源需求与计算节点剩余资源的匹配情况来优化资源分配。降低执行时延以及拓扑响应时间,降低计算节点间通信量以及计算节点的CPU占用率。
通过对本发明实施例提供的方法进行相关性能的评估,实验通过经典的WordCount拓扑和Top N拓扑来进行测试,并将实验结果同平台的默认调方法进行比较。实验结果表明,Sd-Stream调度器在延迟、通信开销和CPU利用率方面与平台的默认调方法相比均有提升。其中,执行时延降低约33%,拓扑响应时间降低约23.5%,计算节点间通信量降低约18.5%,计算节点的CPU占用率标准差降低约8%。
以下将通过可选的实施例进一步解释和描述本发明实施例提供的方法。
在一种可选的实施例中,构建数据流划分模型包括:
获取拓扑结构中单位时间内相邻两个执行器之间传输的元组数量;
获取统计时间内拓扑结构的执行器之间元组传输速率的平均值;
获取数据流传输速率的偏移量;
获取数据流传输速率的平均偏移量;
根据元组数量、元组传输速率的平均值、数据流传输速率的偏移量以及数据流传输速率的平均偏移量得到数据流划分模型。
S101、根据流应用的拓扑结构构建数据流划分模型。
在一种可选的实施例中,根据元组数量、元组传输速率的平均值、数据流传输速率的偏移量以及数据流传输速率的平均偏移量得到数据流划分模型,包括:
根据如下公式得到数据流划分模型:
进一步地,图7为一个简单的拓扑结构图,拓扑由Spout和Bolt组件构成,其中e1、e2……ej等代表着组件中的执行器,e12表示为执行器e1和执行器e12之间的数据流。
将单位时间内执行器ei发送给执行器ej的元组数量用vij来表示,vij也代表两个执行器之间的传输速率。某一时刻拓扑的数据总量定义为Vsum,而用描述统计时间内该拓扑上的执行器之间元组传输速率的平均值。
S102、根据执行器间的元组传输速率构建任务分配模型。
在一种可选的实施例中,构建任务分配模型包括:
根据如下矩阵得到任务和计算节点的分配关系:
其中,n为待执行的任务,m为计算节点,其中n>m,n个任务集表示为T={t1,t2,…,ti},i表示第i个任务,m个计算节点集合表示为VM={VMl,VM2,…,VMm},其中m表示第m个计算节点;
X是一个0/1矩阵,其中xnm表示任务n和计算节点m的映射关系,将第n个待执行任务分配到第m个计算节点上执行,如果任务n被分配到计算节点m上,在矩阵X中(n,m)的位置上的值为1,否则为0。
进一步地,任务调度问题可描述为:集群中有n个待执行的任务,调度时会将它们分配到m个计算节点执行,其中n>m。n个任务和m个计算节点的分配关系可以用矩阵X来表示。
在一种可选的实施例中,任务分配模型还包括第一约束条件与第二约束条件;
其中,s.t.为第一约束条件,x为矩阵,xij为矩阵中任务i和计算节点j。
通过设置第一约束条件,确保了每个任务都只会被分配一次并且只能分配给一个计算节点。
在一种可选的实施例中,第二约束条件为:
第二约束条件保证了计算节点的可用资源可以满足被分配到的任务。
在一种可选的实施例中,任务分配模型还包括第三约束条件:
第三约束条件为构建矩阵ET来表示整个拓扑的任务分配到计算节点上的预测完成时间,以及通过公式etnm=TSi/RSj来表示第n个任务在第m个计算节点上的预测完成时间:
其中etnm为第n个任务在第m个计算节点上的预测完成时间,TSi代表任务n所需的资源,RSj代表计算节点m所剩余的资源。
etnm=TSi/RSj (11)
任务的完成时间是分布式流处理系统中最重要的性能指标之一,所以根据第三约束条件构建矩阵ET来表示整个拓扑的任务分配到计算节点上的预测完成时间。
S103、根据计算节点资源的占用情况构建负载均衡模型。
在一种可选的实施例中,构建负载均衡模型包括
获取集群中计算节点的负载均衡指数,根据负载均衡指数确定计算节点的负载情况。
在一种可选的实施例中,获取集群中计算节点的负载均衡指数,包括:
按照如下公式获取集群中所有计算节点的平均负载均衡值:
其中,L为集群中所有计算节点的平均负载均衡值,Loadj为集群中计算节点的负载均衡值,j为计算节点j,m’为计算节点的总数。
在一种可选的实施例中,获取集群中所有计算节点的平均负载均衡值包括:
按照如下公式获取集群中所有计算节点的平均负载均衡值
Loadj=δ1*U(cj)+δ2*U(mj)+δ3*U(nj)
其中,U(cj)为计算节点j的CPU占用率,U(mj)为计算节点j的内存占用率,U(nj)为计算节点j的网络带宽占用率。系数δ1、δ2、δ3为常数,代表三项资源的权重且δ1+δ2+δ3=1。
在分布式流处理系统的调度过程中,影响计算节点负载状况的指标主要是由CPU、内存和网络带宽的占用率组成的。进一步地,集群中计算节点的负载均衡值Loadj可以用公式(12)表示:
Loadj=δ1*U(cj)+δ2*U(mj)+δ3*U(nj) (12)
其中,U(cj)为计算节点j的CPU占用率,U(mj)为计算节点j的内存占用率,U(nj)为计算节点j的网络带宽占用率。系数δ1、δ2、δ3为常数,代表三项资源的权重且δ1+δ2+δ3=1。用L表示集群中所有计算节点的平均负载均衡值,可以将其定义为:LBIj表示集群中计算节点j的负载均衡指数:
S104、根据数据流划分模型,提出基于FFD算法的流速感知方法进行调度,将执行器和计算节点分别按照元组传输速率和负载均衡指数进行排序,在不超过计算节点阈值的情况下,将高度通信的执行器聚集到同一计算节点中。
根据数据流划分模型,对任务的优先级进行划分。通过公式(6)对通信频率较高的执行器进行筛选,同时将这些高度通信的执行器按元组传输速率对数据流进行降序排序。此执行器的顺序即为FFD算法中的任务优先级。
其次,对集群中的计算节点进行优先级划分,根据负载权重指数对计算节点进行评估,LBI值越小代表此计算节点的负载情况越好,计算节点可用资源较多。所以根据计算节点LBI的值对计算节点进行升序排列,此计算节点的顺序即为FFD算法中的任务优先级。
最后,每次选择一个计算节点来接受任务的分配,算法不断的向计算节点分配新的任务,直到计算节点达到负载阈值,根据实时的计算节点优先级顺序选择优先级最高的计算节点再次分配,依次循环。
剩余的任务采取改进的蚁群优化算法进行调度,基于FFD的流速感知方法不仅考虑了计算节点间的通信,而且通过将一部分高度通信的执行器提前调度完毕,减少了蚁群算法需要调度的任务数量,使蚁群算法进一步减少了收敛时间。
S105、根据任务分配模型与负载均衡模型,提出基于蚁群优化的资源感知方法进行调度,以最小化任务完成时间和优化资源分配方案为目标,将任务的资源需求与计算节点剩余资源情况加入到信息素和启发式函数中,在分配过程中使任务根据资源需求类型找到相匹配的计算节点,采用精英蚂蚁搜索减少蚁群算法在调度过程中的收敛时间。
影响计算节点选择的关键因素是信息素浓度和启发式函数的值。如何改进这两个因素是算法的重点和难点。同时为了提高搜索效率避免蚁群过早陷入局部最优解,信息素的更新原则也是不容忽视的因素。基于此,本发明实施例提出基于蚁群优化的资源感知方法进行调度。
需要说明的是,在经典的蚁群算法中,每条路径的信息素浓度在初始状态下是相同的,蚂蚁选择接下来转移计算节点的概率与信息素浓度和启发式函数的值均成正比,搜素初期路径的距离也就是启发式函数的值会对路径的选择起着确定性的作用,这样会导致蚂蚁随机选择一条距离较短的路径转移,增加陷入局部最优解的概率。
在一种可选的实施例中,基于蚁群优化的资源感知方法进行调度包括:
获取CPU计算能力的信息素、内存能力的信息素、网络带宽能力的信息素;
根据CPU计算能力的信息素、内存能力的信息素、网络带宽能力的信息素确定任务类型;
根据任务类型调整调度路径上的信息素进行调度。
在一种可选的实施例中,根据如下公式获取CPU计算能力的信息素:
其中,τic为CPU计算能力的信息素,h1为CPU计算能力的信息素的总数;
根据如下公式获取内存能力的信息素:
τim为内存能力的信息素,h2为CPU内存能力的信息素的总数;
根据如下公式获取网络带宽能力的信息素:
τin为网络带宽能力的信息素,h3为网络带宽能力的信息素的总数。
进一步地,在整个调度过程中,计算节点的可用资源状况会不断变化,可能会存在一些资源过剩而其它资源紧缺的情况。而任务之间也往往存在一定的差异性,计算密集型任务和内存密集型任务对资源的需求就有着明显的区别。所以本文考虑在计算节点信息素的设置上将计算节点的可用资源与任务的资源需求相结合,使任务能够更加公平合理的分配到计算节点上。
首先用taskcpu、taskmen、tasknet分别代表任务的CPU、内存、网络带宽资源的占用率。即根据公式(7)(8)(9)(10),可将信息素表示为:
τic、τim、τin分别代表CPU计算能力、内存能力、网络带宽能力的信息素,τi代表计算节点i的信息素,由计算节点各项资源的加权和构成。其中a,b,c,分别代表任务所需CPU、内存、网络资源的权重。如公式(15)表示:
τi=aτic+bτim+cτin (15)
其中根据任务的不同资源参数来设定信息素相应资源的权重值a,b,c。
将内存使用超过50%的任务定义为内存需求型任务,将CPU占用率超过70%的任务定义为计算需求型任务,在实际应用中可以根据资源紧缺状况对任务的影响调整此类阈值。通常情况下,资源对应的权重值均为1,当计算节点剩余资源无法满足任务对某种资源的需求时,通过减少相应资源的权重系数值来减小此路径的信息素,从而降低这条路径对蚂蚁的吸引。当计算节点剩余资源可以满足任务需求时,增大资源系数权重值以引导蚂蚁优先选择。
进一步地,计算节点的启发式信息表示:本发明实施例提供的基于蚁群优化的资源感知方法不仅要考虑缩短任务的完成时间,还要重点解决计算节点间负载不均衡的问题。因此在启发式信息中引入动态的负载状况,通过公式(6)与公式(14)将任务完成时间与负载均衡指数相结合的设置因子ηij完成对启发式信息的设置,使任务的完成时间与计算节点的负载状况共同作为引导蚂蚁选择路径的因素。
其中,ηij为设置因子,etij为第i个任务在第m个计算节点上的预测完成时间。
进一步地,本发明实施例提供的基于蚁群优化的资源感知方法包括对信息素的更新原则,信息素浓度的更新是蚁群算法中的一个关键步骤,由于蚁群算法的正反馈机制取决于信息素浓度的动态变化,所以需要在迭代的过程中不断对计算节点的信息素浓度进行更新,同时这种不断更新的方式也有利于蚁群更快的找到最优路径,减少算法的收敛时间。
信息素的更新方式有两种:第一种是全局更新原则,在所有的蚂蚁全部都完成一次迭代以后对每个计算节点的信息素浓度进行更新。第二种是局部更新原则,当一只蚂蚁完成本次迭代以后,立即根据蚂蚁的遍历情况对计算节点的信息素浓度进行更新。为了减少蚁群算法收敛时间,本发明实施例采用的信息素更新方式将局部更新方式和全局更新方式相结合。
信息素的全局更新原则:蚁群算法在搜索初期时,工作计算节点间的信息素浓度差异可能并不明显,造成蚂蚁缺乏指引信息从而倾向于随机搜索,影响算法的收敛时间。改进的蚁群算法为了加快各计算节点的信息素更新速度,提升搜索效率,采取一种精英蚂蚁搜索方法,精英蚂蚁搜索方法类似一种奖励机制,通过对当下搜索结果中的最优路径释放额外的信息素增量,从而增强此路径对蚂蚁的吸引力,同时找到最优路径的蚂蚁被定义为精英蚂蚁。信息素的全局更新公式如(19)所示。
局部更新原则:当一只蚂蚁完成一次迭代后,会根据这只蚂蚁选择路径的情况对信息素进行一次局部更新,本次更新公式为:
τij(t+1)=(1-ρ)τij(t)+ρ·△τij(t) (22)
其中ρ为信息素挥发因子,来决定路径上信息素浓度的挥发速度,ρ越大,信息素浓度挥发速度则越快,其中ρ∈(0,1]。△τij(t)表示在t时刻任务ti分配到计算节点VMj的信息素增量。
目标函数:为了实现最短的任务处理时间和更均衡的负载状况,将两项评价指标作为蚁群算法的目标函数参数f(x):任务完成时间最短,最小负载均衡权重指数LBI,改进的蚁群算法优化的目标函数公式如下:
f(x)=min{w1etij+w2LBIj} (23)
其中,w1与w2为常数。算法流程:初始化。算法开始前,需要对算法的相关信息进行初始化,包括信息素因子α、启发函数因子β、最大迭代次数g等。以及计算节点的计算能力,确定启发因子和初始状态下信息素浓度。让蚂蚁携带m个任务,然后放置在初始计算节点上。初始化矩阵ET,初始化禁忌表。
根据公式(15)与(18)分别计算信息素浓度与启发式函数的值,然后按照状态转移概率公式(2)描述统计时间内该拓扑上的执行器之间元组传输速率的平均值,进一步计算蚂蚁下一步的运动方向,然后蚂蚁根据状态转移概率移动到相应的计算节点上。根据公式(23)选出当下的最优路径。
根据公式(22)当蚂蚁完成一次迭代后对局部信息素进行更新。
当蚂蚁移动到下一个计算节点后,对禁忌表进行修改。□
直到所有蚂蚁身上的任务完成了分配,对比目前为止所有蚂蚁的理想路线,根据公式(22)进行全局信息素更新。
如果未达到算法预设的迭代次数,蚂蚁将继续进行迭代直到达到预设的最大迭代次数,根据目标函数求出结果中的最佳分配计划。
需要说明的是,Sd-Stream采取基于FFD算法的流速感知方法与基于蚁群算法的资源感知方法相结合的作业调度方案,重点来解决分布式流计算平台调度中的通信开销以及资源分配问题。当监控到计算节点间的通信量大于整体通信的20%时,便会触发Sd-Stream方法重新对任务进行分配。
Sd-Stream调度方法如图8所示。在第一阶段采取了基于FFD算法的流速感知方法,该方法统计执行器间的元组传输速率,根据数据流划分模型,在满足负载的情况下优先将高度通信的执行器调度到同一个计算节点上,从而减少计算节点间的通信开销。同时将其余的执行器通过基于蚁群算法的资源感知方法进行分配,改进后的蚁群算法考虑了不同任务的资源需求类型和计算节点的负载情况,避免集群中计算节点资源被过度利用或利用不足,并以任务完成时间与负载均衡指数构建目标函数寻求全局最优解。
本发明实施例在Apache Storm框架下实现和部署所设计的Sd-Stream调度方法。图9为本发明实施例提供的调度系统实施架构图。通过监控模块,分析模块与调度模块共同实现Sd-Stream调度。通过在标准Storm框架下加入以下新特征,实现了动态的高效调度。通过在运行时监控拓扑任务的实时通信速率和资源使用情况,为动态调度算法应对减少通信开销和资源分配方法优化问题提供了有力的支持。调度器可以进行实时的动态调度,根据执行器间的元组速率尽可能的将高度通信的任务放置到同一计算节点。同时将任务的资源需求与当下的计算节点资源状况相结合,避免出现资源争夺造成的计算节点过载现象。
本发明实施例提供的方法与Sd-Stream调度器在延迟、通信开销和CPU利用率方面与平台的默认调度方法相比均有提升。其中,通过实验结果表明,本发明实施例提供的方法执行时延降低约33%,拓扑响应时间降低约23.5%,计算节点间通信量降低约18.5%,计算节点的CPU占用率标准差降低约8%。具体地,执行延迟可以通过Storm UI界面获得,代表着拓扑中元组的执行时间。执行延迟可以反映流处理系统的数据处理速率,是衡量系统实时性的重要指标之一。
图10为运行WordCount拓扑条件下,Storm的默认调度方法和Sd-Stream方法的执行延迟对比情况,在开始阶段Sd-Stream方法的延迟较高,随后执行延迟稳定在1.93ms左右,而Storm默认调度方法的执行延迟稳定在2.85ms左右,Sd-Stream方法相比于Storm默认调度方法执行延迟降低约32%。
减少通信开销:通过统计Sd-Stream方法和Storm默认调度方法单位时间内工作计算节点间的元组传输数量,来对比两种方法在计算节点间通信开销上的差异性。
图11为在WordCount拓扑条件下,Sd-Stream调度方法与Storm默认调度方法的计算节点间通信量对比情况,在初始阶段由于Sd-Stream调度方法中的FFD算法优先将高度通信任务的分配到同一计算节点中,所以计算节点间通信量较低,而接下来Sd-Stream中的蚁群算法是以最小化任务完成时间和负载均衡为目标进行任务的分配,在这个过程中会导致计算节点间通信量逐步增加,最终Sd-Stream调度方法的计算节点间通信量对比Storm默认调度方法降低了约17.8%。
均衡CPU利用率:本发明实施例通过对比Sd-Stream方法和Storm默认调度方法在调度过程中每个计算节点的CPU占用率均值和CPU占用率的标准差,来对Sd-Stream在负载均衡方面的优化效果进行评估。
图12展示了WordCount拓扑运行在Storm默认调度方法和Sd-Stream方法下的CPU资源占用率对比情况,并且统计了两种方法下计算节点CPU资源占用率的标准差,Sd-Stream方法的CPU资源占用率标准差降低了约7%。
本发明实施例提供的调度方法不仅要考虑到任务的通信结构与资源需求,还需要完善系统资源的分配方案。通过研究流处理系统的调度机制与资源分配方法,提出一种基于流速与资源感知的调度方法Sd-Stream。该方法由贪心算法FFD与蚁群优化算法组成,能够根据执行器间的元组传输速率将高度通信的任务优先分配到同一计算节点中以减少通信开销,同时考虑任务的资源需求与计算节点剩余资源的匹配情况来优化资源分配方案。
以上是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种流速和资源感知的流应用调度方法,其特征在于,所述方法包括:
根据流应用的拓扑结构构建数据流划分模型;
根据执行器间的元组传输速率构建任务分配模型;
根据计算节点资源的占用情况构建负载均衡模型;
根据所述数据流划分模型,提出基于FFD算法的流速感知方法进行调度,将执行器和计算节点分别按照元组传输速率和负载均衡指数进行排序,在不超过计算节点阈值的情况下,将高度通信的执行器聚集到同一计算节点中;
根据所述任务分配模型与负载均衡模型,提出基于蚁群优化的资源感知方法进行调度,以最小化任务完成时间和优化资源分配方案为目标,将任务的资源需求与计算节点剩余资源情况加入到信息素和启发式函数中,在分配过程中使任务根据资源需求类型找到相匹配的计算节点,采用精英蚂蚁搜索减少蚁群算法在调度过程中的收敛时间;
构建数据流划分模型包括:
获取拓扑结构中单位时间内相邻两个执行器之间传输的元组数量;
获取统计时间内所述拓扑结构的执行器之间元组传输速率的平均值;
获取数据流传输速率的偏移量;
获取数据流传输速率的平均偏移量;
根据所述元组数量、元组传输速率的平均值、数据流传输速率的偏移量以及数据流传输速率的平均偏移量得到所述数据流划分模型;
构建任务分配模型包括:
根据如下矩阵得到任务和计算节点的分配关系:
其中,在矩阵X中,n为待执行的任务,m为计算节点,其中n>m,n个任务集表示为T=t1,t2…,tn,n表示第n个任务,m个计算节点集合表示为VM={VMl,VM2,…,VMm},其中m表示第m个计算节点;
X为一个0/1矩阵,其中xnm为任务n和计算节点m的映射关系,将第n个待执行任务分配到第m个计算节点上执行,如果任务n被分配到计算节点m上,在矩阵X中(n,m)的位置上的值为1,否则为0;
所述构建负载均衡模型包括:
获取集群中计算节点的负载均衡指数,根据所述负载均衡指数确定所述计算节点的负载情况;
所述获取集群中计算节点的负载均衡指数,包括:
按照如下公式获取集群中所有计算节点的平均负载均衡值:
其中,L为集群中所有计算节点的平均负载均衡值,Loadj为集群中计算节点的负载均衡值,j为计算节点,m’为计算节点的总数。
6.根据权利要求1所述的流速和资源感知的流应用调度方法,其特征在于,获取集群中所有计算节点的平均负载均衡值包括:
按照如下公式获取集群中所有计算节点的平均负载均衡值
Loadj=δ1*U(cj)+δ2*U(mj)+δ3*U(nj)
其中,U(cj)为计算节点j的CPU占用率,U(mj)为计算节点j的内存占用率,U(nj)为计算节点j的网络带宽占用率,系数δ1、δ2、δ3为常数,代表三项资源的权重且δ1+δ2+δ3=1;
基于蚁群优化的资源感知方法进行调度包括:
获取CPU计算能力的信息素、内存能力的信息素、网络带宽能力的信息素;
根据CPU计算能力的信息素、内存能力的信息素、网络带宽能力的信息素确定任务类型;
根据任务类型调整调度路径上的信息素进行调度。
7.一种流速和资源感知的流应用调度系统,其特征在于,所述系统包括可读存储介质,所述可读存储介质上存储计算机程序,所述计算机程序用于执行权利要求1-6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210535602.1A CN114780247B (zh) | 2022-05-17 | 2022-05-17 | 一种流速和资源感知的流应用调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210535602.1A CN114780247B (zh) | 2022-05-17 | 2022-05-17 | 一种流速和资源感知的流应用调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114780247A CN114780247A (zh) | 2022-07-22 |
CN114780247B true CN114780247B (zh) | 2022-12-13 |
Family
ID=82437666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210535602.1A Active CN114780247B (zh) | 2022-05-17 | 2022-05-17 | 一种流速和资源感知的流应用调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114780247B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115237580B (zh) * | 2022-09-21 | 2022-12-16 | 之江实验室 | 面向智能计算的流水并行训练自适应调整系统、方法 |
CN116302578B (zh) * | 2023-05-25 | 2023-08-08 | 中国地质大学(北京) | 一种QoS约束的流应用延迟确保方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932422A (zh) * | 2012-09-29 | 2013-02-13 | 南京邮电大学 | 基于改进蚁群算法的云环境任务调度方法 |
CN103049322A (zh) * | 2012-12-31 | 2013-04-17 | 吴立新 | 一种针对拓扑关系并行计算的矢量目标集均衡划分方法 |
CN107329815A (zh) * | 2017-06-26 | 2017-11-07 | 浙江工业大学 | 一种基于BP‑Tabu搜索的云任务负载均衡调度方法 |
CN110086855A (zh) * | 2019-03-29 | 2019-08-02 | 江苏开拓信息与系统有限公司 | 基于蚁群算法的Spark任务智能感知调度方法 |
CN110413389A (zh) * | 2019-07-24 | 2019-11-05 | 浙江工业大学 | 一种资源不均衡Spark环境下的任务调度优化方法 |
CN110764912A (zh) * | 2019-10-25 | 2020-02-07 | 东北大学 | 一种自适应任务调度器及方法 |
CN110888728A (zh) * | 2019-12-03 | 2020-03-17 | 中电工业互联网有限公司 | 一种Kettle集群服务器的任务调度方法 |
CN111614754A (zh) * | 2020-05-20 | 2020-09-01 | 重庆邮电大学 | 面向雾计算的成本效率优化的动态自适应任务调度方法 |
CN111860754A (zh) * | 2020-07-15 | 2020-10-30 | 无锡弘宜智能科技有限公司 | 基于蚁群以及遗传算法的agv调度方法 |
CN112434779A (zh) * | 2020-12-09 | 2021-03-02 | 哈尔滨工程大学 | 一种基于改进蚁群算法的紧耦合任务分配方法 |
CN114077475A (zh) * | 2020-08-11 | 2022-02-22 | 中移(苏州)软件技术有限公司 | 任务调度方法、装置、电子设备及存储介质 |
-
2022
- 2022-05-17 CN CN202210535602.1A patent/CN114780247B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102932422A (zh) * | 2012-09-29 | 2013-02-13 | 南京邮电大学 | 基于改进蚁群算法的云环境任务调度方法 |
CN103049322A (zh) * | 2012-12-31 | 2013-04-17 | 吴立新 | 一种针对拓扑关系并行计算的矢量目标集均衡划分方法 |
CN107329815A (zh) * | 2017-06-26 | 2017-11-07 | 浙江工业大学 | 一种基于BP‑Tabu搜索的云任务负载均衡调度方法 |
CN110086855A (zh) * | 2019-03-29 | 2019-08-02 | 江苏开拓信息与系统有限公司 | 基于蚁群算法的Spark任务智能感知调度方法 |
CN110413389A (zh) * | 2019-07-24 | 2019-11-05 | 浙江工业大学 | 一种资源不均衡Spark环境下的任务调度优化方法 |
CN110764912A (zh) * | 2019-10-25 | 2020-02-07 | 东北大学 | 一种自适应任务调度器及方法 |
CN110888728A (zh) * | 2019-12-03 | 2020-03-17 | 中电工业互联网有限公司 | 一种Kettle集群服务器的任务调度方法 |
CN111614754A (zh) * | 2020-05-20 | 2020-09-01 | 重庆邮电大学 | 面向雾计算的成本效率优化的动态自适应任务调度方法 |
CN111860754A (zh) * | 2020-07-15 | 2020-10-30 | 无锡弘宜智能科技有限公司 | 基于蚁群以及遗传算法的agv调度方法 |
CN114077475A (zh) * | 2020-08-11 | 2022-02-22 | 中移(苏州)软件技术有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN112434779A (zh) * | 2020-12-09 | 2021-03-02 | 哈尔滨工程大学 | 一种基于改进蚁群算法的紧耦合任务分配方法 |
Non-Patent Citations (4)
Title |
---|
A Task Scheduling Algorithm Based on Genetic Algorithm and Ant Colony Optimization Algorithm with Multi-QoS Constraints in Cloud Computing;Yangyang Dai等;《IEEE》;20151123;全文 * |
基于Hadoop平台的作业调度算法研究与改进;安思华;《中国优秀硕士学位论文全文数据库信息科技辑》;20160315(第3期);全文 * |
基于多核系统的混合关键任务调度策略研究;王雅琴;《中国优秀硕士学位论文全文数据库信息科技辑》;20210815(第8期);全文 * |
基于遗传蚁群算法的雾计算任务调度研究;王志刚等;《计算机应用与软件》;20210831;第38卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114780247A (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114780247B (zh) | 一种流速和资源感知的流应用调度方法及系统 | |
CN108965024B (zh) | 一种5g网络切片基于预测的虚拟网络功能调度方法 | |
Yu et al. | Stochastic load balancing for virtual resource management in datacenters | |
Rafieyan et al. | An adaptive scheduling approach based on integrated best-worst and VIKOR for cloud computing | |
Khorsand et al. | A self‐learning fuzzy approach for proactive resource provisioning in cloud environment | |
Hao et al. | An enhanced load balancing mechanism based on deadline control on GridSim | |
US6442583B1 (en) | Multi-system resource capping | |
US8843929B1 (en) | Scheduling in computer clusters | |
Sun et al. | Rethinking elastic online scheduling of big data streaming applications over high-velocity continuous data streams | |
KR20210023693A (ko) | 스파이크 검출 및 부하 분산 자원 관리 시스템 및 그 방법 | |
Xin et al. | A load balance oriented cost efficient scheduling method for parallel tasks | |
CN109617826A (zh) | 一种基于布谷鸟搜索的storm动态负载均衡方法 | |
Fan et al. | Multi-objective optimization of container-based microservice scheduling in edge computing | |
US10216543B2 (en) | Real-time analytics based monitoring and classification of jobs for a data processing platform | |
CN114816715B (zh) | 一种面向跨地域的流计算延迟优化方法及装置 | |
CN111143036A (zh) | 一种基于强化学习的虚拟机资源调度方法 | |
Kabalan et al. | Adaptive load sharing in heterogeneous systems: Policies, modifications, and simulation | |
Zikos et al. | A clairvoyant site allocation policy based on service demands of jobs in a computational grid | |
Ghazali et al. | A classification of Hadoop job schedulers based on performance optimization approaches | |
Zikos et al. | Communication cost effective scheduling policies of nonclairvoyant jobs with load balancing in a grid | |
Tran et al. | Multi-stage resource-aware scheduling for data centers with heterogeneous servers | |
CN113190342A (zh) | 用于云-边协同网络的多应用细粒度卸载的方法与系统架构 | |
Phi et al. | Load balancing algorithm on cloud computing for optimize response time | |
Khaleel | Region-aware dynamic job scheduling and resource efficiency for load balancing based on adaptive chaotic sparrow search optimization and coalitional game in cloud computing environments | |
Wang et al. | An efficient framework for online virtual network embedding in virtualized cloud data centers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |