一种任务调度方法与装置
技术领域
本发明涉及信息处理领域,尤其涉及一种任务调度方法与装置。
背景技术
分布式计算系统作为一种廉价、高效、维护方便的计算系统,在实际应用中具有重要价值。任务调度和资源管理是分布式计算系统的重要功能,能够高效的进行资源管理的任务调度的平台对整个分布式计算系统的性能有着重要影响。
现有的分布式计算系统在进行任务调度时,考虑的主要因素为系统集群中节点的核数。例如,若当前有3个工作任务等待并行调度,则分布式计算系统需要在集群的节点中寻找核数不小于3的节点,并将该3个任务调度到寻找到的节点上。
但是节点处理工作任务的能力是有限,当同时处理多个工作任务的时候,节点的内存资源很可能不能满足该多个工作任务的需要,导致工作任务执行失败。
发明内容
本发明实施例提供了一种任务调度方法,用于保证分布式系统中的工作任务能够顺利执行。
本发明实施例的第一方面提供了一种任务调度方法,适用于分布式系统,包括:
确定待运行的任务;
确定所述待运行的任务所需内存的估算值;
确定目的节点,并将所述待运行的任务调度到所述目的节点上运行,所述目的节点的剩余内存不小于所述估算值。
结合本发明实施例的第一方面,本发明实施例的第一方面的第一种实现方式中,所述确定待运行的任务包括:
接收客户端下发的执行指令,所述执行指令包括待执行的应用的执行指示;
将所述待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将所述一个或多个工作任务中的一个工作任务确定为待运行的任务。
结合本发明实施例的第一方面的第一种实现方式,本发明实施例的第一方面的第二种实现方式中,所述确定所述待运行的任务所需内存的估算值包括:
若所述待运行的任务不为所述一个或多个工作任务中首个运行的工作任务,则根据所述一个或多个工作任务中,已运行的工作任务所占用的内存大小,确定所述待运行的任务所需内存的估算值。
结合本发明实施例的第一方面的第二种实现方式,本发明实施例的第一方面的第三种实现方式中,所述执行指令还包括内存初始估计值;
所述确定所述待运行的任务所需内存的估算值还包括:
若所述待运行的任务为所述一个或多个工作任务中首个运行的工作任务,则将所述内存初始估计值确定为所述待运行的任务所需内存的估算值。
结合本发明实施例的第一方面、或第一方面的第一种至第三种实现方式中的任一项,本发明实施例的第一方面的第四种实现方式中,所述确定目的节点包括:
若当前集群的节点中存在剩余内存不小于所述估算值的节点,则将所述剩余内存不小于所述估算值的节点中的一个节点确定为目的节点;
若当前集群的节点中不存在剩余内存不小于所述估算值的节点,则将当前集群的节点中剩余内存最大的节点确定为目的节点,并待所述目的节点的剩余内存不小于所述估算值时,再触发所述将所述待运行的任务调度到所述目的节点上运行的步骤。
结合本发明实施例的第一方面、或第一方面的第一种至第四种实现方式中的任一项,本发明实施例的第一方面的第五种实现方式中,所述将所述待运行的任务调度到所述目的节点上运行之后还包括:
若所述待运行的任务未成功调度到所述目的节点上,则判断所述待运行的任务调度失败的原因是否为目的节点的剩余内存不足;
若确定所述待运行的任务调度失败的原因为目的节点的剩余内存不足,则增大所述估算值,并再次触发所述确定目的节点的步骤。
本发明实施例的第二方面提供了一种任务调度装置,适用于分布式系统,包括:
任务确定模块,用于确定待运行的任务;
内存估算模块,用于确定所述待运行的任务所需内存的估算值;
节点确定模块,用于确定目的节点,并将所述待运行的任务调度到所述目的节点上运行,所述目的节点的剩余内存不小于所述估算值。
结合本发明实施例的第二方面,本发明实施例的第二方面的第一种实现方式中,所述任务确定模块包括:
指令接收单元,用于接收客户端下发的执行指令,所述执行指令包括待执行的应用的执行指示;
任务确定单元,用于将所述待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将所述一个或多个工作任务中的一个工作任务确定为待运行的任务。
结合本发明实施例的第二方面的第一种实现方式,本发明实施例的第二方面的第二种实现方式中,所述内存估算模块具体用于:
若所述待运行的任务不为所述一个或多个工作任务中首个运行的工作任务,则根据所述一个或多个工作任务中,已运行的工作任务所占用的内存大小,确定所述待运行的任务所需内存的估算值。
结合本发明实施例的第二方面的第二种实现方式,本发明实施例的第二方面的第三种实现方式中,所述执行指令还包括内存初始估计值;
所述内存估算模块还用于:
若所述待运行的任务为所述一个或多个工作任务中首个运行的工作任务,则将所述内存初始估计值确定为所述待运行的任务所需内存的估算值。
结合本发明实施例的第二方面、或第二方面的第一种至第三种实现方式中的任一项,本发明实施例的第二方面的第四种实现方式中,所述节点确定模块具体用于:
若当前集群的节点中存在剩余内存不小于所述估算值的节点,则将所述剩余内存不小于所述估算值的节点中的一个节点确定为目的节点;
若当前集群的节点中不存在剩余内存不小于所述估算值的节点,则将当前集群的节点中剩余内存最大的节点确定为目的节点,并待所述目的节点的剩余内存不小于所述估算值时,再触发所述将所述待运行的任务调度到所述目的节点上运行的步骤。
结合本发明实施例的第二方面、或第二方面的第一种至第四种实现方式中的任一项,本发明实施例的第二方面的第五种实现方式中,所述装置还包括:
原因判断模块,用于在所述节点确定模块将所述待运行的任务调度到所述目的节点上运行之后,所述待运行的任务未成功调度到所述目的节点上时,判断所述待运行的任务调度失败的原因是否为目的节点的剩余内存不足;
参数更改模块,用于当确定所述待运行的任务调度失败的原因为目的节点的剩余内存不足时,增大所述估算值,并再次触发所述节点确定模块确定目的节点的步骤。
本发明实施例提供的任务调度方法包括确定待运行的任务、确定所述待运行的任务所需内存的估算值、确定目的节点,并将所述待运行的任务调度到所述目的节点上运行,所述目的节点的剩余内存不小于所述估算值。本发明实施例根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。
附图说明
图1为本发明实施例中任务调度方法一个实施例流程图;
图2为本发明实施例中任务调度方法另一个实施例流程图;
图3为本发明实施例中任务调度方法另一个实施例流程图;
图4为本发明实施例中任务调度装置一个实施例流程图;
图5为本发明实施例中任务调度装置另一个实施例流程图;
图6为本发明实施例中任务调度装置另一个实施例流程图;
图7为本发明实施例中任务调度装置另一个实施例流程图。
具体实施方式
本发明实施例提供了一种任务调度方法,用于保证分布式系统中的工作任务能够顺利执行。本发明实施例还提供了相关的任务调度装置,下面将分别进行描述。
本发明实施例提供的任务调度方法的基本流程请参阅图1,包括:
101、确定待运行的任务;
在分布式系统中,任务调度装置确定待运行的任务。其确定方法有很多,将在后面的实施例中详述,此处不做限定。
本实施例中,待运行的任务可以是一个任务,也可以是多个任务,此处不做限定。
102、确定待运行的任务所需内存的估算值;
任务调度装置确定了待运行的任务后,确定待运行的任务所需的内存的估算值。其确定方法有很多,可以由客户端下发该估算值,也可以由任务调度装置自主确定该估算值,具体将在后面的实施例中详述,此处不做限定。
103、确定目的节点,并将待运行的任务调度到目的节点上运行。
任务调度装置确定了待运行的任务所需的内存的估算值后,在分布式系统当前集群的节点中选取一个剩余内存不小于该估算值的节点作为目的节点,并将该待运行的任务调度到目的节点上运行。
可选的,本实施中,任务调度装置在确定目的节点时,也可以同现有技术一样将节点的核数纳入考虑范围,将剩余内存不小于估算值且核数满足要求的节点确定为目的节点。任务调度装置在确定目的节点时也可以考虑其他因素,本实施例中不做限定。
本实施例提供的任务调度方法包括确定待运行的任务、确定所述待运行的任务所需内存的估算值、确定目的节点,并将所述待运行的任务调度到所述目的节点上运行,所述目的节点的剩余内存不小于所述估算值。本实施例根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。
图1所示的实施例给出了本发明提供的任务调度方法的基本流程,下面将详细解释该流程的每个步骤,请参阅图2,本发明提供的又一种任务调度方法的基本流程包括:
201、接收客户端下发的执行指令;
客户端需要运行待执行的应用时,会向任务调度装置下发执行指令,该执行指令包括待执行的应用的执行指示。任务调度装置接收该执行指令。
202、将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务;
图1所示的实施例没有对待运行的任务的个数做出限定,本实施中,限定待运行的任务只为一个工作任务。具体的,任务调度装置将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务。
203、确定待运行的任务所需内存的估算值;
任务调度装置确定了待运行的任务后,确定待运行的任务所需的内存的估算值。
步骤202中限定了待运行的任务只为一个工作任务,本步骤也可以随之进行进一步的细化。可选的,由于同一执行阶段的工作任务的类型往往类似,因此运行同一执行阶段的工作任务所需的内存也往往大致相同。因此,若待运行的任务不为其所属的执行阶段的工作任务中首个运行的工作任务,则任务调度装置可以根据该执行阶段的工作任务中,已运行的工作任务所占用的内存大小,确定待运行的任务所需内存的估算值。具体的确定方法有很多,例如将该执行阶段的工作任务中,已运行的工作任务所占用的内存大小的平均值确定为待运行的任务所需内存的估算值;或,将该执行阶段的工作任务中,任一已运行的工作任务所占用的内存大小确定为待运行的任务所需内存的估算值,也可以为其他确定方法,此处不做限定。
若待运行的任务为其所属的执行阶段的工作任务中首个运行的工作任务,则无法使用上一段所说的方法确定所需内存的估计值。在这种场景下,可选的,客户端在下发执行指令时,可以在执行指令中携带内存初始估计值,任务调度装置将该内存初始估计值确定为待运行的任务所需内存的估算值。
任务调度装置也可以采用其他方法确定待运行的任务所需内存的估算值,本实施例中不做限定。
204、确定目的节点,并将待运行的任务调度到目的节点上运行。
任务调度装置确定了待运行的任务所需内存的估算值后,确定目的节点,并将待运行的任务调度到目的节点上运行。可选的,本实施例中采用如下方法确定目的节点:
若当前集群的节点中存在剩余内存不小于该估算值的节点,则任务调度装置将剩余内存不小于所述估算值的节点中的一个节点确定为目的节点;
若当前集群的节点中不存在剩余内存不小于所述估算值的节点,则任务调度装置将当前集群的节点中剩余内存最大的节点确定为目的节点,并停止向该目的节点调度新的工作任务。当该目的节点运行的旧的工作任务逐渐执行完毕,释放出内存资源,使得该节点的剩余内存不小于该估算值时,任务调度装置再将待运行的任务调度到该目的节点上运行。
本实施例也可以采用其他方法确定目的节点,此处不做限定。
本实施例在图1所示的实施例的基础上提供了一种更为详细的任务调度方法,其中,任务调度装置接收客户端下发的执行指令;将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务;确定待运行的任务所需内存的估算值;确定目的节点,并将待运行的任务调度到目的节点上运行。本实施例根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。
在实际应用中,分布式系统进行任务调度会具有一定的失败比率。下面将在图2所示的实施例的基础上,提供一种可以降低任务调度失败比率的任务调度方法,请参阅图3,其流程包括:
301、接收客户端下发的执行指令;
302、将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务;
303、确定待运行的任务所需内存的估算值;
304、确定目的节点,并将待运行的任务调度到目的节点上运行;
步骤301至304与步骤201至204基本相同,此处不做限定。
若步骤304中,待运行的任务未成功调度到目的节点上,则执行步骤305。
305、判断待运行的任务调度失败的原因是否为目的节点的剩余内存不足;
分布式系统中,任务调度失败有很多原因,例如节点的剩余内存不足,不够调度任务、或进程异常终止、或磁盘访问失败等。本实施例中,若待运行的任务未成功调度到目的节点上,则任务调度装置判断待运行的任务调度失败的原因是否为目的节点的剩余内存不足。
若资源调度装置确定待运行的任务调度失败的原因为目的节点的剩余内存不足,则执行步骤306。
306、增大估算值。
若资源调度装置确定待运行的任务调度失败的原因为目的节点的剩余内存不足,则说明步骤303中计算得到的待运行的任务所需内存的估算值过小,不足以运行该待运行的任务。因此任务调度装置增大步骤303中计算得到的估算值,例如将该估算值倍乘1.5,作为新的估算值,并使用该新的估算值再次触发步骤304中确定目的节点的操作。
本实施例在图2所示的实施例的基础上提供了一种更为详细的任务调度方法,其中,任务调度装置接收客户端下发的执行指令;将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务;确定待运行的任务所需内存的估算值;确定目的节点,并将待运行的任务调度到目的节点上运行。若待运行的任务未成功调度到目的节点上,则判断待运行的任务调度失败的原因是否为目的节点的剩余内存不足,若是,则增大估算值,并使用该新的估算值再次触发确定目的节点的操作。本实施例根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。且若任务因目的节点的剩余内存不足而调度失败,则增大所需内存的估算值并重新确定目的几点。这样可以避免因所需内存的估算值估算的过小而造成的待运行的任务调度失败的问题,提高任务调度成功比率。
上面的实施例详细解释了本发明提供的任务调度方法的基本流程,下面将以一个具体的应用场景为例进行描述。
分布式系统中,任务调度装置接收用户通过客户端下发的执行指令,该执行指令包括应用A的执行指示。
任务调度装置将应用A分解为3个执行阶段:阶段一、阶段二、阶段三,并将阶段一分解为4个工作任务:任务1、任务2、任务3和任务4。在某时刻,任务1与任务2已经运行完成,任务调度装置将任务3确定为待运行的任务。
任务调度装置估算运行任务3所需的内存,具体的,任务1运行时所占用的内存为100M,任务2运行时所占用的内存为200M,任务调度装置将任务1与任务2所占用的内存的平均值150M作为任务3所需内存的估算值。
当前集群的节点中有10个剩余内存大于150M的节点,任务调度装置将其中的节点X确定为目的节点,并将任务3调度到节点X上运行。
但是在上一段的步骤中,任务3没有成功调度到节点X上。任务调度装置确定任务3调度失败的原因为节点X的剩余内存不足,因此将任务3所需内存的估算值由150M增大到200M。
当前集群的节点中有5剩余内存大于200M的节点,任务调度装置将其中的节点Y确定为新的目的节点,并成功的将任务3调度到节点Y上运行。
本发明实施例还提供了一种任务调度装置装置,用于实现上面的实施例所描述的任务调度方法。其基本结构请参阅图4,包括:
任务确定模块401,用于确定待运行的任务;
内存估算模块402,用于确定待运行的任务所需内存的估算值;
节点确定模块403,用于确定目的节点,并将待运行的任务调度到目的节点上运行,其中目的节点的剩余内存不小于估算值。
本实施例中,任务确定模块401确定待运行的任务、内存估算模块402确定所述待运行的任务所需内存的估算值、节点确定模块403确定目的节点,并将所述待运行的任务调度到所述目的节点上运行,所述目的节点的剩余内存不小于所述估算值。本实施例提供的任务调度装置根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。
图4所示的实施例给出了本发明提供的任务调度装置的基本结构,下面将详细解释任务确定模块的具体结构,请参阅图5,本发明提供的又一种任务调度装置的基本结构包括:
任务确定模块501,用于确定待运行的任务。本实施例中,任务确定模块501具体包括:
指令接收单元5011,用于接收客户端下发的执行指令,该执行指令包括待执行的应用的执行指示;
任务确定单元5012,用于将所待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务。
内存估算模块502,用于确定待运行的任务所需内存的估算值;
节点确定模块503,用于确定目的节点,并将待运行的任务调度到目的节点上运行,其中目的节点的剩余内存不小于估算值。
本实施例在图4所示的实施例的基础上提供了一种更为详细的任务调度装置,其中,指令接收单元5011接收客户端下发的执行指令;任务确定单元5012将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务;内存估算模块502确定待运行的任务所需内存的估算值;节点确定模块503确定目的节点,并将待运行的任务调度到目的节点上运行。本实施例提供的任务调度装置根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。
优选的,作为本发明的又一个实施例,内存估算模块502具体可以用于:若待运行的任务不为该一个或多个工作任务中首个运行的工作任务,则根据该一个或多个工作任务中,已运行的工作任务所占用的内存大小,确定待运行的任务所需内存的估算值。
优选的,作为本发明的又一个实施例,执行指令还包括内存初始估计值;内存估算模块502具体还可以用于:若待运行的任务为该一个或多个工作任务中首个运行的工作任务,则将内存初始估计值确定为待运行的任务所需内存的估算值。
优选的,作为本发明的又一个实施例,节点确定模块503具体可以用于:若当前集群的节点中存在剩余内存不小于估算值的节点,则将该剩余内存不小于该估算值的节点中的一个节点确定为目的节点;若当前集群的节点中不存在剩余内存不小于该估算值的节点,则将当前集群的节点中剩余内存最大的节点确定为目的节点,并待该目的节点的剩余内存不小于该估算值时,再触发将待运行的任务调度到目的节点上运行的步骤。
在实际应用中,分布式系统进行任务调度会具有一定的失败比率。下面将在图5所示的实施例的基础上,提供一种可以降低任务调度失败比率的任务调度装置,请参阅图6,其结构包括:
任务确定模块601,用于确定待运行的任务。本实施例中,任务确定模块501具体包括:
指令接收单元6011,用于接收客户端下发的执行指令,该执行指令包括待执行的应用的执行指示;
任务确定单元6012,用于将所待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务。
内存估算模块602,用于确定待运行的任务所需内存的估算值;
节点确定模块603,用于确定目的节点,并将待运行的任务调度到目的节点上运行,其中目的节点的剩余内存不小于估算值
任务确定模块601、指令接收单元6011、任务确定单元6012、内存估算模块602、节点确定模块603与图5所示的实施例中对应的模块或单元基本相同,此处不做赘述。
原因判断模块604,用于在节点确定模块603将待运行的任务调度到目的节点上运行之后,待运行的任务未成功调度到目的节点上时,判断待运行的任务调度失败的原因是否为目的节点的剩余内存不足;
参数更改模块605,用于当确定待运行的任务调度失败的原因为目的节点的剩余内存不足时,增大该估算值,并再次触发节点确定模块603确定目的节点的步骤。
本实施例在图5所示的实施例的基础上提供了一种更为详细的任务调度装置,其中,指令接收单元6011接收客户端下发的执行指令;任务确定单元6012将待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将该一个或多个工作任务中的一个工作任务确定为待运行的任务;内存估算模块602确定待运行的任务所需内存的估算值;节点确定模块603确定目的节点,并将待运行的任务调度到目的节点上运行。若待运行的任务未成功调度到目的节点上,则原因判断模块604判断待运行的任务调度失败的原因是否为目的节点的剩余内存不足,若是,则参数更改模块605增大估算值,并使用该新的估算值再次触发确定目的节点的操作。本实施例提供的任务调度装置根据节点的内存来进行任务调度,将剩余内存大于工作任务所需内存的节点作为调度工作任务的目的节点,保证了目的节点的内存一定能够满足调度到目的节点上的工作任务的需要,能够保证工作任务的顺利执行。且若任务因目的节点的剩余内存不足而调度失败,则增大所需内存的估算值并重新确定目的几点。这样可以避免因所需内存的估算值估算的过小而造成的待运行的任务调度失败的问题,提高任务调度成功比率。
上面的实施例详细解释了本发明提供的任务调度装置的基本结构,下面将以一个具体的应用场景为例进行描述。
分布式系统中,指令接收单元6011接收用户通过客户端下发的执行指令,该执行指令包括应用A的执行指示。
任务确定单元6012将应用A分解为3个执行阶段:阶段一、阶段二、阶段三,并将阶段一分解为4个工作任务:任务1、任务2、任务3和任务4。在某时刻,任务1与任务2已经运行完成,任务确定单元6012将任务3确定为待运行的任务。
内存估算模块602估算运行任务3所需的内存,具体的,任务1运行时所占用的内存为100M,任务2运行时所占用的内存为200M,内存估算模块602将任务1与任务2所占用的内存的平均值150M作为任务3所需内存的估算值。
当前集群的节点中有10个剩余内存大于150M的节点,节点确定模块603将其中的节点X确定为目的节点,并将任务3调度到节点X上运行。
但是在上一段的步骤中,任务3没有成功调度到节点X上。原因判断模块604确定任务3调度失败的原因为节点X的剩余内存不足,因此将任务3所需内存的估算值由150M增大到200M。
当前集群的节点中有5剩余内存大于200M的节点,参数更改模块605将其中的节点Y确定为新的目的节点,并成功的将任务3调度到节点Y上运行。
上面从单元化功能实体的角度对本发明实施例中的任务调度装置进行了描述,下面从硬件处理的角度对本发明实施例中的任务调度装置进行描述,请参阅图7,本发明实施例中的任务调度装置700另一实施例包括:
输入装置701、输出装置702、处理器703和存储器704(其中任务调度装置700中的处理器703的数量可以一个或多个,图7中以一个处理器703为例)。在本发明的一些实施例中,输入装置701、输出装置702、处理器703和存储器704可通过总线或其它方式连接,其中,图7中以通过总线连接为例。
其中,通过调用存储器704存储的操作指令,处理器703用于执行如下步骤:
确定待运行的任务;
确定所述待运行的任务所需内存的估算值;
确定目的节点,并将所述待运行的任务调度到所述目的节点上运行,所述目的节点的剩余内存不小于所述估算值。
本发明的一些实施例中,处理器703还执行如下步骤:
接收客户端下发的执行指令,所述执行指令包括待执行的应用的执行指示;
将所述待执行的应用分解为一个或多个执行阶段,并将其中的一个执行阶段分解为一个或多个工作任务,将所述一个或多个工作任务中的一个工作任务确定为待运行的任务。
本发明的一些实施例中,处理器703还执行如下步骤:
若所述待运行的任务不为所述一个或多个工作任务中首个运行的工作任务,则根据所述一个或多个工作任务中,已运行的工作任务所占用的内存大小,确定所述待运行的任务所需内存的估算值。
本发明的一些实施例中,所述执行指令还包括内存初始估计值,处理器703还执行如下步骤:
若所述待运行的任务为所述一个或多个工作任务中首个运行的工作任务,则将所述内存初始估计值确定为所述待运行的任务所需内存的估算值。
本发明的一些实施例中,处理器703还执行如下步骤:若当前集群的节点中存在剩余内存不小于所述估算值的节点,则将所述剩余内存不小于所述估算值的节点中的一个节点确定为目的节点;
若当前集群的节点中不存在剩余内存不小于所述估算值的节点,则将当前集群的节点中剩余内存最大的节点确定为目的节点,并待所述目的节点的剩余内存不小于所述估算值时,再触发所述将所述待运行的任务调度到所述目的节点上运行的步骤。
本发明的一些实施例中,处理器703还执行如下步骤:
若所述待运行的任务未成功调度到所述目的节点上,则判断所述待运行的任务调度失败的原因是否为目的节点的剩余内存不足;
若确定所述待运行的任务调度失败的原因为目的节点的剩余内存不足,则增大所述估算值,并再次触发所述确定目的节点的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。