一种资源调度方法、装置、电子设备及存储介质
技术领域
本公开涉及大数据处理技术领域,具体而言,涉及一种资源调度方法、装置、电子设备及存储介质。
背景技术
另一种资源协调者(Yet Another Resource Negotiator,YARN)作为一种新的Hadoop(一种分布式系统基础架构)资源管理器,它将资源管理从计算框架中分离出来,变为一个通用的资源管理系统,能够对Hadoop下的集群资源进行调度。
目前,YARN在针对Flink计算任务进行资源调度时,每提交一个Flink计算任务会根据自身的情况,向YARN申请资源,这里,往往需要集齐足够多的资源才可以运行任务。这样,针对多个Flink计算任务而言,如果每个计算任务仅分配到一部分资源,则会导致各个任务均无法启动,这导致资源利用率较低。
发明内容
本公开实施例至少提供一种资源调度方案,能够在可用资源量累积到资源需求量的情况下为目标任务一次性的分配集群资源,避免各任务因仅分配到一部分资源而导致均不能启动的问题,提升资源利用率。
主要包括以下几个方面:
第一方面,本公开实施例提供了一种资源调度方法,所述方法包括:
接收针对目标任务的资源分配请求,所述资源分配请求中携带有所述目标任务的资源需求量;
接收资源调度系统中多个资源节点的可用资源量;
判断所述多个资源节点所述可用资源量的总和是否小于所述资源需求量;
响应于小于所述资源需求量的第一判断结果,基于所述可用资源量的总和更新所述目标任务的资源积累列表;所述资源积累列表用于记录为所述目标任务所累积分配的目标可用资源量在所述多个资源节点上的分布信息;
响应于大于或者等于所述资源需求量的第二判断结果,则从所述多个资源节点所述可用资源量的总和中选取与所述目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给所述目标任务。
在一种实施方式中,在基于所述可用资源量的总和更新所述目标任务的资源积累列表之后,还包括:
判断在达到预设累积截止条件之前,为所述目标任务所累积分配的目标可用资源量是否达到所述目标任务的资源需求量;
若达到所述目标任务的资源需求量,则将所述目标可用资源量所指示的集群资源分配给所述目标任务;
若未达到所述目标任务的资源需求量,则生成资源分配失败信息。
在一种实施方式中,在基于所述可用资源量的总和更新所述目标任务的资源积累列表之后,还包括:
查询所述资源调度系统中其他任务的资源积累列表;
若所述其他任务的资源积累列表中为所述其他任务所累积分配的其他可用资源量、以及为所述目标任务所累积分配的目标可用资源量的和值大与或等于所述目标任务的资源需求量,则从所述其他可用资源量中选取与所述目标任务的资源需求量匹配的其他可用资源量,并将该其他可用资源量以及所述目标可用资源量所指示的集群资源分配给所述目标任务;并更新所述其他任务的资源积累列表。
在一种实施方式中,按照如下步骤得到为所述目标任务所累积分配的目标可用资源量:
在接收到本次针对目标任务的资源分配触发请求后,获取在前次为所述目标任务所累积分配的目标可用资源量;
若在前次为所述目标任务所累积分配的目标可用资源量未达到所述目标任务的资源需求量,则确定在本次资源分配触发请求下,是否能够为所述目标任务分配新的待使用集群资源;
若能够分配新的待使用集群资源,则基于分配的所述新的待使用集群资源对所述目标任务进行本次的资源累积分配,确定为所述目标任务所累积分配的目标可用资源量。
在一种实施方式中,所述确定在本次资源分配触发请求下,是否能够为所述目标任务分配新的待使用集群资源,包括:
在本次资源分配触发请求下,逐个遍历集群中的各台物理机,并在遍历到每一台物理机后,判断本次已遍历到的所有物理机的剩余资源量与前次为所述目标任务所累积分配的目标可用资源量的和值是否能够满足所述目标任务的资源需求量;
若能够满足所述目标任务的资源需求量,则基于本次已遍历到的所有物理机的剩余资源量,为所述目标任务分配新的待使用集群资源;
若不能够满足所述目标任务的资源需求量,则继续遍历下一台物理机,直至本次已遍历到的所有物理机的剩余资源量与前次为所述目标任务所累积分配的目标可用资源量的和值能够满足所述目标任务的资源需求量,或者,直至遍历完所述集群中的各台物理机。
在一些实施例中,所述预设累积截止条件包括以下条件中的任意一种或多种:
当前累积时间达到预设时间;
所述集群资源的剩余量小于预设阈值;
所述资源分配触发请求的请求次数达到预设次数。
第二方面,本公开实施例还提供了一种资源调度装置,所述装置包括:
接收模块,用于接收针对目标任务的资源分配触发请求,所述资源分配触发请求中携带有所述目标任务的资源需求量;
确定模块,用于接收资源调度系统中多个资源节点的可用资源量;
第一判断模块,用于判断所述多个资源节点所述可用资源量的总和是否小于所述资源需求量;
第一响应模块,用于响应于小于所述资源需求量的第一判断结果,基于所述可用资源量的总和更新所述目标任务的资源积累列表;所述资源积累列表用于记录为所述目标任务所累积分配的目标可用资源量在所述多个资源节点上的分布信息;
第二响应模块,用于响应于大于或者等于所述资源需求量的第二判断结果,则从所述多个资源节点所述可用资源量的总和中选取与所述目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给所述目标任务。
在一种实施方式中,所述装置还包括:
第二判断模块,用于在基于所述可用资源量的总和更新所述目标任务的资源积累列表之后,判断在达到预设累积截止条件之前,为所述目标任务所累积分配的目标可用资源量是否达到所述目标任务的资源需求量;若达到所述目标任务的资源需求量,则将所述目标可用资源量所指示的集群资源分配给所述目标任务;若未达到所述目标任务的资源需求量,则生成资源分配失败信息。
第三方面,本公开实施例还提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如第一方面及其各种实施方式任一所述的资源调度方法的步骤。
第四方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如第一方面及其各种实施方式任一所述的资源调度方法的步骤。
采用上述资源调度方案,在接收到针对目标任务的资源分配触发请求之后,可以首先判断所述资源调度系统中多个资源节点所述可用资源量的总和是否小于所述资源需求量,这样,响应于小于所述资源需求量的第一判断结果,可以基于所述可用资源量的总和更新所述目标任务的资源积累列表;所述资源积累列表用于记录为所述目标任务所累积分配的目标可用资源量在所述多个资源节点上的分布信息,响应于大于或者等于所述资源需求量的第二判断结果,则从所述多个资源节点所述可用资源量的总和中选取与所述目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给所述目标任务。也即,针对目标任务而言,在确定出当前集群中具有多个资源节点所述可用资源量的总和可以满足目标任务的资源需求量的情况下,可以基于具有的可用资源量为目标任务分配资源,并能够在确定出可用资源量的总和无法满足目标任务的资源需求量的情况下,通过资源的累积分配为目标任务分配资源,也即,要么在资源足够时一次性分配给目标任务,要么在资源不够时,累积到资源需求量再进行资源分配,以避免各任务因仅分配到一部分资源而导致均不能启动的问题,提升资源利用率。
本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例一所提供的一种资源调度方法的流程图;
图2示出了本公开实施例一所提供的资源调度方法中,确定目标可用资源量具体方法的流程图;
图3示出了本公开实施例二所提供的一种资源调度装置的示意图;
图4示出了本公开实施例三所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,YARN作为一种新型分布式计算引擎,在针对Flink计算任务进行资源调度时,每提交一个Flink计算任务会根据自身的情况,向YARN申请资源。这里,往往需要集齐足够多的资源才可以运行任务,这样,针对多个Flink计算任务而言,如果每个任务仅分配到一部分资源,则会导致各个任务均无法启动,这导致资源利用率较低。
基于上述研究,本公开提供了至少一种资源调度方案,能够在可用资源量累积到资源需求量的情况下为目标任务一次性的分配集群资源,避免各任务因仅分配到一部分资源而导致均不能启动的问题,提升资源利用率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种资源调度方法进行详细介绍,本公开实施例所提供的资源调度方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:服务器或其它处理设备。在一些可能的实现方式中,该资源调度方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面以执行主体为服务器为例对本公开实施例提供的资源调度方法加以说明。
实施例一
参见图1所示,为本公开实施例一提供的资源调度方法的流程图,方法包括步骤S101~S105,其中:
S101、接收针对目标任务的资源分配触发请求,资源分配触发请求中携带有目标任务的资源需求量;
S102、接收资源调度系统中多个资源节点的可用资源量;
S103、判断多个资源节点可用资源量的总和是否小于资源需求量;
S104、响应于小于资源需求量的第一判断结果,基于可用资源量的总和更新目标任务的资源积累列表;资源积累列表用于记录为目标任务所累积分配的目标可用资源量在多个资源节点上的分布信息;
S105、响应于大于或者等于资源需求量的第二判断结果,则从多个资源节点可用资源量的总和中选取与目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给目标任务。
这里,为了便于理解本公开实施例所提供的资源调度方法,首先可以对本公开实施例所提供的该资源调度方法的应用场景进行简单说明。本公开实施例提供的资源调度方法主要应用于YARN这一资源管理器。YARN作为一种通用的资源管理系统,其基本思想是是将JobTracker的两个主要功能(即资源管理和作业调度/监控)分离,主要方法是创建一个全局的资源管理器(ResourceManager,RM)和若干个针对应用程序的应用程序主线程(ApplicationMaster,AM),AM负责协调来自RM的资源,并通过节点管理器(NodeManager,NM)监视容器的执行和资源使用(CPU、内存等的资源分配)。
其中,RM具有执行可用资源量累积的功能,而实际进行可用资源量获取的可以是NM,NM部署在集群(对应于资源调度系统)的各个资源节点上,可以时刻监控各台物理机的可用资源量,并可以将监控得到的可用资源量上报给RM。AM则可以以心跳请求的方式向NM发出有关对应任务所需的资源需求量。相关技术中的RM在针对各个任务进行资源调度时,可以将集群当前的可用资源量直接通过各个AM分配给所对应的任务应用主线程,如果当前分配的可用资源量无法满足各个任务的资源需求,则各个任务均无法执行。
正是为了解决这一问题,本公开实施例才提供了一种资源调度方法,该方法针对任一任务,可以在当前的可用资源量可以满足该任务的资源需求量时,将对应的可用资源量一次性分配给该任务,还可以在无法满足该任务的资源需求量时,先进行资源累积,再进行一次性分配。这里,由于RM可以明确各台物理机的资源使用情况,因此,RM可以针对各个任务进行统一的资源管理,通过为各个任务进行累积操作来为任务启动相应的集群资源,兼顾了各个任务可以执行的前提下,还避免了每个作业任务仅分配到一部分资源,则会由于各个作业任务均无法启动而导致资源利用率较低的问题,提升了资源利用率。
本公开实施例中,在接收到针对目标任务的资源分配请求之后,可以首先判断资源调度系统中多个资源节点的可用资源量的总和是否小于资源需求量,然后可以在响应于小于资源需求量的第一判断结果的情况下,基于可用资源量的总和更新目标任务的资源积累列表,还可以在响应于大于或者等于资源需求量的第二判断结果的情况下,从多个资源节点可用资源量的总和中选取与目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给目标任务,也即,要么在资源足够时一次性分配给目标任务,要么在资源不够时,系统累积到资源需求量再进行资源分配,以避免各任务因仅分配到一部分资源而导致均不能启动的问题,提升资源利用率。
需要说明的是,本公开实施例提供的资源调度方法在基于系统中的可用资源量更新目标任务的资源积累列表时,可以综合考虑其他任务的资源分配情况,由于RM可以针对各个任务进行统一的资源管理,因此,本公开实施例在进行资源积累列表更新时可以是自适应的,不管具体是基于哪些资源节点、还是针对所采用资源节点的多少可用资源量进行更新,均可以是根据当前系统的运行情况来调整的,有关更新方式在此不做具体的限制。
另外,在系统中的可用资源量的总和能够满足目标任务的资源需求量时,可以从可用资源量的总和中筛选出与目标任务的资源需求量匹配的目标可用资源量。考虑到RM的自适应分配机制,在这里,针对基于哪些资源节点、还是针对所采用资源节点的多少可用资源量进行分配,均可以是根据当前系统的运行情况来调整的,在此不做具体的限制。
这里,有关目标任务的资源分配触发请求可以是在客户端需要执行目标任务时,基于该任务向RM发出任务请求时所触发的,以便获得相应的资源以执行该任务。其中,上述资源分配触发请求对应的任务可以包括至少一个线程,该触发请求中可以包括目标任务的资源需求量,该资源需求量可以对应每个线程所需求的具体的每种资源的数量,比如,需要4核内存、150G硬盘;除此之外,上述触发请求中还可以包括任务类型。
本公开实施例提供的资源调度方法在更新目标任务的资源积累列表之后,可以基于为目标任务所累积分配的目标可用资源量是否达到目标任务的资源需求量的判断结果,确定是否将目标可用资源量所指示的集群资源分配给目标任务。
在确定目标任务的资源需求量之后,即可以判断为目标任务所累积分配的目标可用资源量是否达到目标任务的资源需求量。这里需要确定的是为目标任务所累积分配的目标可用资源量,且是在预设累积截止条件的约束下所确定的累积资源量,以避免目标任务的累积为其它任务所带来的不良影响。
其中,上述预设累积截止条件可以是当前累积时间达到预设时间,这里可以采用定时器定时功能来实现,除此之外,还可以采用累积时长与预设时长来确定预设累积截止条件。本公开实施例中,还可以在确定集群自愿的剩余量与预设阈值的比较结果来确定是否达到预设累积截止条件,这里可以是在剩余量小于预设阈值时确定达到截止条件,除此之外,还可以是在确定资源分配触发请求触发的次数较多,如达到预设次数8次时,确定达到截止条件。
另外,本公开实施例可以是按次累积的累积方式,也即,每次触发请求均可以累积一定的目标可用资源量,在累积到能够满足任务所需的资源需求量之后即可以停止累积,并能够将目标可用资源量所指向的集群资源分配给目标任务以便目标任务依赖于所分配的集群资源进行启动和执行。
本公开实施例提供的资源调度方法在确定为目标任务所累积分配的目标可用资源量未达到目标任务的资源需求量的情况下,可以生成资源分配失败信息,并可以将生成的资源分配失败信息返回至客户端,以便用户及时发现资源调度所存在的问题。
为了确定为目标任务所累积分配的目标可用资源量,如图2所示,本公开可以采用如下步骤来具体实现:
S201、在接收到本次针对目标任务的资源分配触发请求后,获取在前次为目标任务所累积分配的目标可用资源量;
S202、若在前次为目标任务所累积分配的目标可用资源量未达到目标任务的资源需求量,则确定在本次资源分配触发请求下,是否能够为目标任务分配新的待使用集群资源;
S203、若能够分配新的待使用集群资源,则基于分配的新的待使用集群资源对目标任务进行本次的资源累积分配,确定为目标任务所累积分配的目标可用资源量。
这里,在接收到本次针对目标任务的资源分配触发请求后,首先可以获取在前次为目标任务所累积分配的目标可用资源量,如果确定该目标可用资源量未达到目标任务的资源需求量,则可以确定在本次资源分配触发请求下,是否能够为目标任务分配新的待使用集群资源,若能够分配到新的待使用集群资源,则可以基于分配的新的待使用集群资源对目标任务进行本次的资源累积分配,可以确定为目标任务所累积分配的目标可用资源量,也即,可以逐次累积待使用集群资源,通过调度新的集群资源,可以继续累积资源量总数。
值得说明的是,在所累积的资源量总数不满足目标任务所需的资源需求量时,不会在本次资源分配触发请求返回任何集群资源,只有在累积的资源量总数能够满足目标任务所需的资源需求量,才会返回集群资源,且返回的集群资源可以时累积分配的资源量总数。
本公开实施例中,不管是在首次资源分配请求下为目标任务分配初始目标可用资源量还是除首次之外的其它次资源分配请求下为目标任务分配新的目标可用资源量,均可以采用集群遍历的方式来实现。针对本次资源分配触发请求,可以逐个遍历集群中的各台物理机,并在遍历到每一台物理机后,判断本次已遍历到的所有物理机的剩余资源量与前次为目标任务所累积分配的目标可用资源量的和值是否能够满足目标任务的资源需求量。
如果能够满足目标任务的资源需求量,则基于本次已遍历到的所有物理机的剩余资源量,为目标任务分配新的待使用集群资源,且为目标任务所分配的新的待使用集群资源可以是由目标任务的资源需求量与前次为目标任务所累积分配的目标可用资源量的和值之间的差值来确定的。在该差值恰好等于本次已遍历到的所有物理机的剩余资源量时,可直接将该本次已遍历到的所有物理机的剩余资源量,作为对目标任务分配的新的待使用集群资源,若该差值小于本次已遍历到的所有物理机的剩余资源量时,则可以将该本次已遍历到的所有物理机的剩余资源量中与上述差值匹配的剩余资源量,作为对目标任务分配的新的待使用集群资源。
如果不能够满足目标任务的资源需求量,可以继续遍历下一台物理机,直至本次已遍历到的所有物理机的剩余资源量与前次为目标任务所累积分配的目标可用资源量的和值能够满足目标任务的资源需求量,或者,直至遍历完集群中的各台物理机。也即,在本次已遍历过的所有物理机无法满足资源需求量时,可以继续遍历下一台物理机,如果在遍历完所有的物理机还是无法满足资源需求或者遍历的剩余资源无法满足资源需求时,即说明本次为目标任务分配到新的待使用集群资源无法满足目标任务的资源需求。
在具体应用中,考虑到不同任务之间可能具有不同的优先级,针对优先级比较高的任务则可以优先进行资源积累。这里,以目标任务作为优先级比较高的任务为例,在基于可用资源量的总和更新目标任务的资源积累列表之后,可以查询资源调度系统中其他任务的资源积累列表。
这里,若其他任务的资源积累列表中为其他任务所累积分配的其他可用资源量、以及为目标任务所累积分配的目标可用资源量的和值大与或等于目标任务的资源需求量,则从其他可用资源量中选取与目标任务的资源需求量匹配的其他可用资源量,并将该其他可用资源量以及目标可用资源量所指示的集群资源分配给目标任务;并更新其他任务的资源积累列表。
也即,本公开实施例中,在确定一个目标任务的优先级比较高的情况下,可以通过资源抢占的方式抢占为其它任务所累积分配的其它可用资源量,以确保目标任务的顺利执行,更具适应性。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与资源调度方法对应的资源调度装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述资源调度方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
实施例二
参照图3所示,为本公开实施例二提供的一种资源调度装置的示意图,装置包括:接收模块301、确定模块302、第一判断模块、第一响应模块304和第二响应模块305;其中,
接收模块301,用于接收针对目标任务的资源分配触发请求,资源分配触发请求中携带有目标任务的资源需求量;
确定模块302,用于接收资源调度系统中多个资源节点的可用资源量;
第一判断模块303,用于判断多个资源节点可用资源量的总和是否小于资源需求量;
第一响应模块304,用于响应于小于资源需求量的第一判断结果,基于可用资源量的总和更新目标任务的资源积累列表;资源积累列表用于记录为目标任务所累积分配的目标可用资源量在多个资源节点上的分布信息;
第二响应模块305,用于响应于大于或者等于资源需求量的第二判断结果,则从多个资源节点可用资源量的总和中选取与目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给目标任务。
采用上述资源调度装置,在确定出当前集群中具有多个资源节点可用资源量的总和可以满足目标任务的资源需求量的情况下,可以基于具有的可用资源量为目标任务分配资源,并能够在确定出可用资源量的总和无法满足目标任务的资源需求量的情况下,通过资源的累积分配为目标任务分配资源,也即,要么在资源足够时一次性分配给目标任务,要么在资源不够时,累积到资源需求量再进行资源分配,以避免各任务因仅分配到一部分资源而导致均不能启动的问题,提升资源利用率。
在一种实施方式中,装置还包括:
第二判断模块306,用于在基于可用资源量的总和更新目标任务的资源积累列表之后,判断在达到预设累积截止条件之前,为目标任务所累积分配的目标可用资源量是否达到目标任务的资源需求量;若达到目标任务的资源需求量,则将目标可用资源量所指示的集群资源分配给目标任务;若未达到目标任务的资源需求量,则生成资源分配失败信息。
在一种实施方式中,装置还包括:
查询模块307,用于在基于可用资源量的总和更新目标任务的资源积累列表之后,查询资源调度系统中其他任务的资源积累列表;若其他任务的资源积累列表中为其他任务所累积分配的其他可用资源量、以及为目标任务所累积分配的目标可用资源量的和值大与或等于目标任务的资源需求量,则从其他可用资源量中选取与目标任务的资源需求量匹配的其他可用资源量,并将该其他可用资源量以及目标可用资源量所指示的集群资源分配给目标任务;并更新其他任务的资源积累列表。
在一种实施方式中,第二判断模块306,用于按照如下步骤得到为目标任务所累积分配的目标可用资源量:
在接收到本次针对目标任务的资源分配触发请求后,获取在前次为目标任务所累积分配的目标可用资源量;
若在前次为目标任务所累积分配的目标可用资源量未达到目标任务的资源需求量,则确定在本次资源分配触发请求下,是否能够为目标任务分配新的待使用集群资源;
若能够分配新的待使用集群资源,则基于分配的新的待使用集群资源对目标任务进行本次的资源累积分配,确定为目标任务所累积分配的目标可用资源量。
在一种实施方式中,第二判断模块306,用于按照如下步骤确定在本次资源分配触发请求下,是否能够为目标任务分配新的待使用集群资源:
在本次资源分配触发请求下,逐个遍历集群中的各台物理机,并在遍历到每一台物理机后,判断本次已遍历到的所有物理机的剩余资源量与前次为目标任务所累积分配的目标可用资源量的和值是否能够满足目标任务的资源需求量;
若能够满足目标任务的资源需求量,则基于本次已遍历到的所有物理机的剩余资源量,为目标任务分配新的待使用集群资源;
若不能够满足目标任务的资源需求量,则继续遍历下一台物理机,直至本次已遍历到的所有物理机的剩余资源量与前次为目标任务所累积分配的目标可用资源量的和值能够满足目标任务的资源需求量,或者,直至遍历完集群中的各台物理机。
在一些实施例中,预设累积截止条件包括以下条件中的任意一种或多种:
当前累积时间达到预设时间;
集群资源的剩余量小于预设阈值;
资源分配触发请求的请求次数达到预设次数。
实施例三
本公开实施例三所提供了一种电子设备,如图4所示,该电子设备包括:处理器401、存储器402和总线403,存储器402存储有处理器401可执行的机器可读指令(比如图3中的资源调度装置中接收模块301、确定模块302、第一判断模块303、第一响应模块304和第二响应模块305对应的执行指令等),当电子设备运行时,处理器401与存储器402之间通过总线403通信,机器可读指令被处理器401执行时执行如下处理:
接收针对目标任务的资源分配请求,资源分配请求中携带有目标任务的资源需求量;
接收资源调度系统中多个资源节点的可用资源量;
判断多个资源节点可用资源量的总和是否小于资源需求量;
响应于小于资源需求量的第一判断结果,基于可用资源量的总和更新目标任务的资源积累列表;资源积累列表用于记录为目标任务所累积分配的目标可用资源量在多个资源节点上的分布信息;
响应于大于或者等于资源需求量的第二判断结果,则从多个资源节点可用资源量的总和中选取与目标任务的资源需求量匹配的目标可用资源量,并将该目标可用资源量所指示目标资源节点上的集群资源分配给目标任务。
在一种实施方式中,在基于可用资源量的总和更新目标任务的资源积累列表之后,上述处理器401执行的指令还包括:
判断在达到预设累积截止条件之前,为目标任务所累积分配的目标可用资源量是否达到目标任务的资源需求量;
若达到目标任务的资源需求量,则将目标可用资源量所指示的集群资源分配给目标任务;
若未达到目标任务的资源需求量,则生成资源分配失败信息。
在一种实施方式中,在基于可用资源量的总和更新目标任务的资源积累列表之后,上述处理器401执行的指令还包括:
查询资源调度系统中其他任务的资源积累列表;
若其他任务的资源积累列表中为其他任务所累积分配的其他可用资源量、以及为目标任务所累积分配的目标可用资源量的和值大与或等于目标任务的资源需求量,则从其他可用资源量中选取与目标任务的资源需求量匹配的其他可用资源量,并将该其他可用资源量以及目标可用资源量所指示的集群资源分配给目标任务;并更新其他任务的资源积累列表。
在一种实施方式中,上述处理器401执行的指令中,按照如下步骤得到为目标任务所累积分配的目标可用资源量:
在接收到本次针对目标任务的资源分配触发请求后,获取在前次为目标任务所累积分配的目标可用资源量;
若在前次为目标任务所累积分配的目标可用资源量未达到目标任务的资源需求量,则确定在本次资源分配触发请求下,是否能够为目标任务分配新的待使用集群资源;
若能够分配新的待使用集群资源,则基于分配的新的待使用集群资源对目标任务进行本次的资源累积分配,确定为目标任务所累积分配的目标可用资源量。
在一种实施方式中,上述处理器401执行的指令中,确定在本次资源分配触发请求下,是否能够为目标任务分配新的待使用集群资源,包括:
在本次资源分配触发请求下,逐个遍历集群中的各台物理机,并在遍历到每一台物理机后,判断本次已遍历到的所有物理机的剩余资源量与前次为目标任务所累积分配的目标可用资源量的和值是否能够满足目标任务的资源需求量;
若能够满足目标任务的资源需求量,则基于本次已遍历到的所有物理机的剩余资源量,为目标任务分配新的待使用集群资源;
若不能够满足目标任务的资源需求量,则继续遍历下一台物理机,直至本次已遍历到的所有物理机的剩余资源量与前次为目标任务所累积分配的目标可用资源量的和值能够满足目标任务的资源需求量,或者,直至遍历完集群中的各台物理机。
在一些实施例中,预设累积截止条件包括以下条件中的任意一种或多种:
当前累积时间达到预设时间;
集群资源的剩余量小于预设阈值;
资源分配触发请求的请求次数达到预设次数。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器401运行时执行上述方法实施例中的资源调度方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的资源调度方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的资源调度方法的步骤,具体可参见上述方法实施例,在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。