一种任务调度方法、装置及系统的制作方法

文档序号:6524661阅读:284来源:国知局
一种任务调度方法、装置及系统的制作方法
【专利摘要】本发明实施例公开了一种任务调度方法、装置及系统,方法包括:获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架,其中,所述计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况;将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。应用本发明实施例,在获得各个计算节点的计算资源信息时,考虑了计算资源的多样性,使得任务分配到的计算资源更合理。
【专利说明】一种任务调度方法、装置及系统
【技术领域】
[0001]本发明涉及计算机应用【技术领域】,特别涉及一种任务调度方法、装置及系统。
【背景技术】
[0002]在分布式计算系统中,通常使用物理机或虚拟机作为计算单元,称为计算节点。每个计算节点中拥有多种计算资源类型,如中央处理器CPU (Central Processing Unit)、内存、硬盘、网络带宽等。另外,在分布式计算系统中,将一系列计算任务的集合称为计算框架,每个计算框架对应一个或一组特定的功能,例如,用于统计用户行为的计算框架、用于进行视频转码的计算框架,等等。
[0003]任务调度的作用是将这些计算资源公平地分配给各个计算框架下的各个计算任务,使得每个任务都尽可能快地完成,同时高优先级的任务能够更优先完成。
[0004]现有技术中,一种实现任务调度方法是指定一个计算节点可以运行几个任务,然后将任务无差别地分配到这些计算节点上。
[0005]然而,在实际应用中,不同计算任务所需的计算资源不同,比如视频转码任务需要更多的CPU,图像处理任务需要更多内存,应用上述将任务无差别的分配到计算节点的方法,就会出现一个计算节点只有单一种类任务的情况,比如都是内存占用较多的任务,CPU就可能处于空闲状态,计算资源分配不合理。

【发明内容】

[0006]本发明实施例的目的在于提供一种任务调度方法、装置及系统,解决现有技术中计算资源分配不合理的问题。
[0007]为达到上述目的,本发明实施例公开了一种任务调度方法,包括:
[0008]获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架,其中,所述计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况;
[0009]将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
[0010]较佳的,所述将空闲计算资源分配给各个计算框架,具体包括:
[0011]计算各个计算框架当前占用各种计算资源的情况;
[0012]根据计算结果,确定各个计算框架的主计算资源;
[0013]根据各个计算框架的主计算资源的比值和预设的各个计算框架的权值的比值,将空闲计算资源分配给各个计算框架。
[0014]较佳的,所述方法还包括:
[0015]接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中。
[0016]较佳的,所述接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中,具体包括:
[0017]接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源;
[0018]根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列。
[0019]较佳的,所述将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务,具体包括:
[0020]判断计算框架当前是否有空闲计算资源;
[0021]判断计算框架当前有的空闲计算资源是否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行;
[0022]如果计算框架当前有空闲计算资源、且这些计算资源满足任务X的执行,将当前的空闲计算资源分配给任务X ;
[0023]如果计算框架当前没有空闲计算资源或者这些计算资源不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0024]较佳的,所述计算框架,预留部分计算资源作为资源插槽;
[0025]所述将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务,具体包括:
[0026]检测是否有空闲的资源插槽;
[0027]检测空闲的资源插槽否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行;
[0028]如果有空闲资源插槽、且这些空闲插槽满足任务X的执行,将空闲资源插槽分配给任务X ;
[0029]如果没有空闲资源插槽或者这些资源插槽不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0030]较佳的,所述方法还包括:
[0031]检测是否有资源插槽被占用;
[0032]当有资源插槽被占用的情况下,将与占用的资源插槽等量的空闲计算资源转换为资源插槽。
[0033]较佳的,所述方法还包括:
[0034]获得各个计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值信息;
[0035]根据该信息,对各个计算节点各个任务当前执行需要的各种可动态增减的计算资源进行调整。
[0036]较佳的,所述方法还包括:
[0037]资源回报器采集计算节点的各种计算资源信息,并将采集到的信息上报。
[0038]较佳的,所述资源回报器采集计算节点的各种计算资源信息,并将采集到的信息上报,具体包括:
[0039]资源回报器采集计算节点各种计算资源当前实际占用值;
[0040]判断各种计算资源实际占用值是否达到其对应的计算资源最大值;
[0041]如果否,将没有达到计算资源最大值的计算资源的信息上报。
[0042]较佳的,在资源回报器采集计算节点各种计算资源当前实际占用值之前,还包括:
[0043]资源回报器采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值;
[0044]将采集到的信息上报。
[0045]为达到上述目的,本发明实施例公开了一种任务调度装置,包括:
[0046]框架级调度器,用于获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架,其中,所述计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况;
[0047]任务级调度器,用于将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
[0048]较佳的,所述框架级调度器,具体用于:
[0049]计算各个计算框架当前占用各种计算资源的情况;
[0050]根据计算结果,确定各个计算框架的主计算资源;
[0051]根据各个计算框架的主计算资源的比值和预设的各个计算框架的权值的比值,将空闲计算资源分配给各个计算框架。
[0052]较佳的,所述装置还包括:任务管理器,
[0053]所述任务管理器,用于在接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中。
[0054]较佳的,所述任务管理器,具体用于:
[0055]接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源;
[0056]根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列。
[0057]较佳的,所述任务级调度器包括:第一判断子模块、第二判断子模块、第一计算资源分配子模块和第一资源抢占子模块,
[0058]所述第一判断子模块,用于判断计算框架当前是否有空闲计算资源;
[0059]所述第二判断子模块,用于判断计算框架当前有的空闲计算资源是否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行;
[0060]所述第一计算资源分配子模块,用于如果计算框架当前有空闲计算资源、且这些计算资源满足任务X的执行,将当前的空闲计算资源分配给任务X ;
[0061]所述第一资源抢占子模块,用于如果计算框架当前没有空闲计算资源或者这些计算资源不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。[0062]较佳的,所述计算框架,预留部分计算资源作为资源插槽,所述任务级调度器包括:第一检测子模块、第二检测子模块、第二计算资源分配子模块和第二资源抢占子模块,
[0063]所述第一检测子模块,用于检测是否有空闲的资源插槽;
[0064]所述第二检测子模块,用于检测空闲的资源插槽否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行;
[0065]所述第二计算资源分配子模块,用于如果有空闲资源插槽、且这些空闲插槽满足任务X的执行,将空闲资源插槽分配给任务X ;
[0066]所述第二资源抢占子模块,用于如果没有空闲资源插槽或者这些资源插槽不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0067]较佳的,所述任务级调度器还包括:第三检测子模块和资源插槽转换子模块,
[0068]所述第三检测子模块,用于检测是否有资源插槽被占用;
[0069]所述资源插槽转换子模块,用于当有资源插槽被占用的情况下,将与占用的资源插槽等量的空闲计算资源转换为资源插槽。
[0070]较佳的,所述框架级调度器还用于:
[0071]获得各个计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值信息;
[0072]根据该信息,对各个计算节点各个任务当前执行需要的各种可动态增减的计算资源进行调整。
[0073]为达到上述目的,本发明实施例公开了一种任务调度系统,包括:资源回报器以及上述任意一项所述的任务调度装置,
[0074]所述资源回报器,用于采集计算节点的各种计算资源信息,并将采集到的信息上报至任务调度装置。
[0075]较佳的,所述资源回报器包括第一采集子模块、第三判断子模块和第一上报子模块,
[0076]所述第一采集子模块,用于采集计算节点各种计算资源当前实际占用值;
[0077]所述第三判断子模块,用于判断各种计算资源实际占用值是否达到其对应的计算资源最大值;
[0078]所述第一上报子模块,用于当第三判断子模块判断结果为否时,将没有达到计算资源最大值的计算资源的信息上报。
[0079]较佳的,所述资源回报器还包括第二采集子模块和第二上报子模块,
[0080]所述第二采集子模块,用于在采集计算节点各种计算资源当前实际占用值之前,采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值;
[0081]所述第二上报子模块,用于将第二采集子模块采集到的信息上报。
[0082]由上述的技术方案可见,本发明实施例提供了一种任务调度方法、装置及系统,在获得各个计算节点的计算资源信息时,考虑了计算资源的多样性,使得任务分配到的计算资源更合理。【专利附图】

【附图说明】
[0083]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0084]图1为本发明实施例提供的一种任务调度系统的结构示意图;
[0085]图2为本发明实施例提供的第一种任务调度方法的流程示意图;
[0086]图3为本发明实施例提供的第二种任务调度方法的流程示意图;
[0087]图4为本发明实施例提供的第三种任务调度方法的流程示意图;
[0088]图5为本发明实施例提供的第四种任务调度方法的流程示意图;
[0089]图6为本发明实施例提供的一种计算资源上报过程的流程示意图;
[0090]图7为本发明实施例提供的一种任务调度装置的结构示意图;
[0091]图8为本发明实施例提供的另一种任务调度装置的结构示意图。
【具体实施方式】
[0092]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0093]本发明实施例提供一种任务调度方法、装置及系统,该方案中,获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架;将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
[0094]下面通过具体实施例,对本发明进行详细说明。
[0095]图1为本发明实施例提供的一种任务调度系统的结构示意图,包括资源回报器、若干计算节点和任务调度装置,
[0096]其中,任务调度装置包括框架级调度器和若干任务级调度器,每一任务级调度器对应一计算框架,每一计算框架还对应一任务管理器。
[0097]资源回报器,用于采集各个计算节点的各种计算资源信息,并将采集到的信息上报至任务调度装置中的框架级调度器。
[0098]框架级调度器,用于获得资源回报器上报的各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架;
[0099]任务管理器,用于接收用户向计算框架添加的任务,即时将该任务添加到该计算框架的任务队列中;
[0100]任务级调度器,用于将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
[0101]其中,资源回报器可以是独立于计算节点的外部模块,也可以是计算节点的内部模块,本实施例中仅给出资源回报器是独立于计算节点的外部模块的情况,用于采集若干计算节点的各种计算资源信息,实际应用中,资源回报器还可以是计算节点的内部模块,用于采集其对应计算节点的各种计算资源信息。[0102]应用本发明图1所示实施例,资源回报器能够采集计算节点的各种计算资源信息,并将采集到的信息上报给任务调度装置的框架级调度器,框架级调度器在获得各个计算节点的计算资源信息时,考虑了计算资源的多样性,使得任务分配到的计算资源更合理。
[0103]图2为本发明实施例提供的一种任务调度方法的流程示意图,包括如下步骤:
[0104]S201:获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架;
[0105]其中,所述计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况;
[0106]假设:任务调度系统中有三台计算机A、B、C作为计算节点,其中该系统还运行两个计算框架,一个是日志框架,用于统计用户登录信息;一个是转码框架,用于进行视频的转码计算。
[0107]如果计算节点内核数为64,其中16核的计算能力被任务占用,则CPU空闲75%。
[0108]例如:计算节点A的计算资源信息的使用情况为:CPU空闲75%,内存空闲1044MB,硬盘空间空闲3088MB ;
[0109]计算节点B的计算资源信息的使用情况为:CPU空闲60%,内存空闲925MB,硬盘空间空闲3456MB ;
[0110]计算节点C的计算资源信息的使用情况为:CPU空闲55%,内存空闲1567MB,硬盘空间空闲2877MB ;
[0111]框架级调度器获得资源回报器上报的计算节点A、B、C的计算资源信息,根据计算节点A、B、C上报的计算资源信息,将空闲资源分配给日志框架和转码框架。
[0112]进一步,在实际应用中框架级调度器可以计算各个计算框架当前占用各种计算资源的情况;根据计算结果,确定各个计算框架的主计算资源;根据各个计算框架的主计算资源的比值和预设的各个计算框架的权值的比值,将空闲计算资源分配给各个计算框架。
[0113]假设:计算出转码框架当前占用CPU60%,内存50%,日志框架当前占用CPU30%,内存40%,确定转码框架的主计算资源为CPU,日志框架的主计算资源为内存。预设的转码框架的权值和日志框架的权值比值为2:1。
[0114]转码框架的主计算资源和日志框架的主计算资源比值为:60%:40%即3:2,大于2:1,将空闲计算资源优先分配给转码框架。
[0115]S202:将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
[0116]例如:转码框架的任务队列中存在任务X和任务y,日志框架的任务队列中存在任务Zo
[0117]任务级管理器将转码框架获得的空闲计算资源分配给任务队列中的X任务和y任务,将日志框架获得的空闲计算资源分配给任务队列中的z任务。
[0118]应用本发明图2所示实施例,在获得各个计算节点的计算资源信息时,考虑了计算资源的多样性,使得任务分配到的计算资源更合理,并且考虑到计算框架对计算资源的实际需求程度,使得计算框架分配到的计算资源更合理。
[0119]需要说明的是,本实施例默认计算框架中的任务队列中已存在任务,没有考虑新任务向任务队列中的添加情况,下面针对新任务向任务队列中的添加情况,本发明实施例还提供第二种任务调度方法,参见图3所示,
[0120]本发明图3所示实施例在图2所示实施例基础上,增加S2011接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中的步骤。
[0121]应用本发明图2所示实施例,任务管理器接收到新任务后,即时将其添加到任务队列,添加任务的过程无需等待,减少任务以固定时间间隔添加时,大量任务涌入,任务添加出现拥堵的现象。
[0122]考虑到在实际应用中,存在优先级较高的任务需要被更快执行的情况,本发明实施例还提供第三种任务调度方法,参见图4所示,该方法包括如下步骤:
[0123]S201:获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架;
[0124]S2012:接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源;
[0125]S2013:根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列;
[0126]S2014:判断计算框架当前是否有空闲计算资源,如果是,执行S2015,如果否,执行 S2017 ;
[0127]S2015:判断计算框架当前有的空闲计算资源是否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行,如果是,执行S2016,如果否,执行S2017 ;
[0128]S2016:将当前的空闲计算资源分配给任务X ;
[0129]S2017:在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0130]例如:任务队列中存在3个队列,一个高优先级I队列,一个标准优先级II队列,
一个低优先级III队列,其中优先级关系为高 > 标准 > 低。
[0131]用户向转码框架添加的任务为高优先级X任务和标准优先级I任务,判断出X任务的优先级为高,y任务的优先级为标准,预估X任务执行所需要的计算资源为:需要占用转码框架35%的CPU,512MB内存,预估y任务执行所需要的计算资源为:需要占用转码框架25%的CPU,512MB内存,将x任务添加到高优先级I队列,将y任务添加到标准优先级II队列。
[0132]如果转码框架当前有40%的CPU空闲、1000MB内存空闲,满足最高优先级队列中x任务的执行,则当前的空闲计算资源分配给任务X。
[0133]如果转码框架当前没有空闲计算资源或者有30%的CPU空闲、400MB内存空闲,不满足最高优先级队列中X任务的执行,则进行计算资源的抢占。
[0134]假设当前执行三个任务a、b、c,
[0135]其中任务a为高优先级任务,占用55%CPU、1024MB内存,任务b为标准优先级任务,占用24%CPU、768MB内存,任务c为低优先级任务,占用21%CPU、256MB内存。
[0136]在任务a、b、c中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,查找结果为:任务b和任务C,将任务b和任务C杀死,将释放出的计算资源分配给任务X。[0137]应用本发明图4所示实施例,计算框架获得资源后,能将计算资源分配给任务队列中优先级较高的任务,并且能选出适当的优先级较低的任务将其杀死或者暂停,释放出计算资源,保证优先级较高的任务优先被执行,从而保证优先级较高任务的完成。
[0138]为了保证任务的快速添加和执行,本发明实施例还提供第四种任务调度方法,参见图5所示,在本方法中,计算框架预留部分计算资源作为资源插槽,方法包括如下步骤:
[0139]S201:获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架;
[0140]S2012:接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源;
[0141]S2013:根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列;
[0142]S2018:检测是否有空闲的资源插槽,如果是,执行S2019,如果否,执行S2021 ;
[0143]S2019:检测空闲的资源插槽否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行,如果是,执行S2020,如果否,执行S2021 ;
[0144]S2020:将空闲资源插槽分配给任务X ;
[0145]S2021:在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0146]例如:任务队列中存在3个队列,一个高优先级I队列,一个标准优先级II队列,
一个低优先级III队列,其中优先级关系为高 > 标准 > 低。
[0147]用户向转码框架添加的任务为高优先级X任务和标准优先级I任务,判断出X任务的优先级为高,y任务的优先级为标准,预估X任务执行所需要的计算资源为:需要占用转码框架35%的CPU,512MB内存,预估y任务执行所需要的计算资源为:需要占用转码框架25%的CPU,512MB内存,将x任务添加到高优先级I队列,将y任务添加到标准优先级II队列。
[0148]转码框架预留50%CPU,1024MB内存的计算资源作为资源插槽,其中这些计算资源可以作为一个资源插槽,还可以分为若干资源插槽,这些资源插槽分到的计算资源,可以相同。
[0149]如果转码框架当前的资源插槽中有40%的CPU空闲、1000MB内存空闲,满足最高优先级队列中X任务的执行,则当前的空闲的资源插槽分配给任务X。
[0150]如果转码框架当前没有空闲的资源插槽或者资源插槽中有30%的CPU空闲、400MB内存空闲,不满足最高优先级队列中X任务的执行,则进行计算资源的抢占。
[0151]假设当前执行三个任务a、b、c,
[0152]其中任务a为高优先级任务,占用10%CPU、300MB内存,任务b为标准优先级任务,占用5%CPU、150MB内存,任务c为低优先级任务,占用5%CPU、175MB内存。
[0153]在任务a、b、c中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,查找结果为:任务b和任务C,将任务b和任务C杀死,将释放出的计算资源分配给任务X。
[0154]进一步,在实际应用中,还可以检测是否有资源插槽被占用;当有资源插槽被占用的情况下,将与占用的资源插槽等量的空闲计算资源转换为资源插槽。
[0155]例如:计算框架预留50%CPU,1024MB内存的计算资源作为资源插槽,当有10%的CPU, 500MB的内存被任务占用时,将空闲计算资源中10%的CPU,500MB的内存转换成资源插槽,使计算框架预留的资源插槽不变,保证任务的快速添加。
[0156]应用本发明图5所示实施例,计算框架预留部分计算资源作为资源插槽,检测是否有空闲的资源插槽,如果有且满足任务队列中任务的执行的情况下,立刻将任务放入到资源插槽中执行,当任务量较少的时候,任务可以被快速的分发出去,整个过程可以保证任务的快速添加。
[0157]在实际应用中,框架级调度器还可以获得各个计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值信息;根据该信息,对各个计算节点各个任务当前执行需要的各种可动态增减的计算资源进行调整,保证任务的执行。
[0158]例如:计算资源CPU为可动态增减的计算资源,框架级调度器获得计算节点A执行的X任务当前执行需要50%CPU,而X任务被执行所需的预估CPU的占用值为35%,根据x任务实际执行需要的计算资源进行调整,在X任务已获得的计算资源基础上,再分配15%CPU。
[0159]图6为本发明实施例提供的一种计算资源上报过程流程示意图,包括如下步骤:
[0160]S601:资源回报器采集计算节点的各种计算资源信息;
[0161]S602:资源回报器将采集到的信息上报给任务调度装置的框架级调度器。
[0162]例如:资源回报器采集计算节点A的计算资源信息为:CPU空闲75%,内存空闲10MMB ;
[0163]采集计算节点B的计算资源信息为:CPU空闲60%,内存空闲925MB ;
[0164]采集计算节点C的计算资源信息为:CPU空闲55%,内存空闲1567MB ;
[0165]资源回报器将采集到的计算节点A、B、C的计算资源信息上报给任务调度装置的框架级调度器。
[0166]进一步,在实际应用中资源回报器采集计算节点各种计算资源当前实际占用值;判断各种计算资源实际占用值是否达到其对应的计算资源最大值;如果否,将没有达到计算资源最大值的计算资源的信息上报。
[0167]例如:资源回报器采集计算节点A当前计算资源实际占用值为:CPU占用100%,内存占用1044MB,而计算节点A内存共2048MB ;判断出CPU占用达到最大值,而内存占用没有达到其对应计算资源最大值,将计算节点A空闲的1004MB内存上报。
[0168]进一步,在资源回报器采集计算节点各种计算资源当前实际占用值之前,资源回报器采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值;将采集到的信息上报。
[0169]例如:计算资源CPU为可动态增减的计算资源,计算节点A当前执行X任务,其中X任务当前执行所需的计算资源实际占用值为:10%CPU,将X任务当前执行所需的计算资源实际占用10%CPU的信息上报。
[0170]应用本发明图6所示实施例,资源回报器能采集计算节点的各种计算资源信息,并将采集到的信息上报给任务调度装置的框架级调度器,进一步资源回报器还能采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值,并将采集到的信息上报给任务调度装置的框架级调度器,实时采集上报的计算资源信息更准确。[0171]图7为本发明实施例提供的一种任务调度装置,包括框架级调度器701和任务级调度器702,
[0172]其中,框架级调度器701,用于获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架,计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况;
[0173]任务级调度器702,用于将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
[0174]其中,框架级调度器701,具体用于计算各个计算框架当前占用各种计算资源的情况;根据计算结果,确定各个计算框架的主计算资源;根据各个计算框架的主计算资源的比值和预设的各个计算框架的权值的比值,将空闲计算资源分配给各个计算框架。
[0175]应用本发明图7所示实施例,在获得各个计算节点的计算资源信息时,考虑了计算资源的多样性,使得任务分配到的计算资源更合理,并且考虑到计算框架对计算资源的实际需求程度,使得计算框架分配到的计算资源更合理。
[0176]图8为本发明实施例提供的另一种任务调度装置,包括框架级调度器701、任务级调度器702和任务管理器801,
[0177]其中,任务管理器801,用于在接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中。
[0178]任务管理器801,具体用于接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源;根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列。
[0179]本实施例中的任务级调度器702包括:第一判断子模块、第二判断子模块、第一计算资源分配子模块和第一资源抢占子模块(图中未示出),
[0180]所述第一判断子模块,用于判断计算框架当前是否有空闲计算资源;
[0181]所述第二判断子模块,用于判断计算框架当前有的空闲计算资源是否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行;
[0182]所述第一计算资源分配子模块,用于如果计算框架当前有空闲计算资源、且这些计算资源满足任务X的执行,将当前的空闲计算资源分配给任务X ;
[0183]所述第一资源抢占子模块,用于如果计算框架当前没有空闲计算资源或者这些计算资源不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0184]应用本发明图8所示实施例,任务管理器接收到新任务后,即时将其添加到任务队列,添加任务的过程无需等待,减少任务以固定时间间隔添加时,大量任务涌入,任务添加出现拥堵的现象,并且较高优先级任务能抢占比其优先级低的任务的计算资源,使得优先级较高的任务能被优先执行。
[0185]本实施例中计算框架预留部分计算资源作为资源插槽,任务级调度器702包括:第一检测子模块、第二检测子模块、第二计算资源分配子模块和第二资源抢占子模块(图中未示出),
[0186]所述第一检测子模块,用于检测是否有空闲的资源插槽;[0187]所述第二检测子模块,用于检测空闲的资源插槽否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行;
[0188]所述第二计算资源分配子模块,用于如果有空闲资源插槽、且这些空闲插槽满足任务X的执行,将空闲资源插槽分配给任务X ;
[0189]所述第二资源抢占子模块,用于如果没有空闲资源插槽或者这些资源插槽不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
[0190]任务级调度器还包括:第三检测子模块和资源插槽转换子模块(图中未示出),
[0191]所述第三检测子模块,用于检测是否有资源插槽被占用;
[0192]所述资源插槽转换子模块,用于当有资源插槽被占用的情况下,将与占用的资源插槽等量的空闲计算资源转换为资源插槽。
[0193]所述框架级调度器701,还用于获得各个计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值信息;根据该信息,对各个计算节点各个任务当前执行需要的各种可动态增减的计算资源进行调整。
[0194]应用本发明图8所示实施例,计算框架预留部分计算资源作为资源插槽,检测是否有空闲的资源插槽,如果有且满足任务队列中任务的执行的情况下,立刻将任务放入到资源插槽中执行,当任务量较少的时候,任务可以被快速的分发出去,整个过程可以保证任务的快速添加。
[0195]本发明实施例还提供一种任务调度系统包括:资源回报器和上述的任务调度装置,
[0196]所述资源回报器,用于采集计算节点的各种计算资源信息,并将采集到的信息上报至任务调度装置。
[0197]本实施例中的资源回报器包括:第一采集子模块、第三判断子模块和第一上报子模块,
[0198]所述第一采集子模块,用于采集计算节点各种计算资源当前实际占用值;
[0199]所述第三判断子模块,用于判断各种计算资源实际占用值是否达到其对应的计算资源最大值;
[0200]所述第一上报子模块,用于当第三判断子模块判断结果为否时,将没有达到计算资源最大值的计算资源的信息上报。
[0201]本实施例中的资源回报器还包括:第二采集子模块和第二上报子模块,
[0202]所述第二采集子模块,用于在采集计算节点各种计算资源当前实际占用值之前,采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值;
[0203]所述第二上报子模块,用于将第二采集子模块采集到的信息上报。
[0204]应用本实施例,资源回报器能采集计算节点的各种计算资源信息,并将采集到的信息上报给任务调度装置的框架级调度器,进一步资源回报器还能采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值,并将采集到的信息上报给任务调度装置的框架级调度器,实时采集上报的计算资源信息更准确。
[0205]对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0206]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0207]本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的 存储介质,如:R0M/RAM、磁碟、光盘等。
[0208]以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【权利要求】
1.一种任务调度方法,其特征在于,所述方法包括: 获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架,其中,所述计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况; 将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
2.根据权利要求1所述的方法,其特征在于,所述将空闲计算资源分配给各个计算框架,具体包括: 计算各个计算框架当前占用各种计算资源的情况; 根据计算结果,确定各个计算框架的主计算资源; 根据各个计算框架的主计算资源的比值和预设的各个计算框架的权值的比值,将空闲计算资源分配给各个计算框架。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中。
4.根据权利要求3所述的方法,其特征在于,所述接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中,具体包括: 接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源; 根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列。
5.根据权利要求4所述的方法,其特征在于,所述将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务,具体包括: 判断计算框架当前是否有空闲计算资源; 判断计算框架当前有的空闲计算资源是否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行; 如果计算框架当前有空闲计算资源、且这些计算资源满足任务X的执行,将当前的空闲计算资源分配给任务X ; 如果计算框架当前没有空闲计算资源或者这些计算资源不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务Xo
6.根据权利要求4所述的方法,其特征在于,所述计算框架,预留部分计算资源作为资源插槽; 所述将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务,具体包括: 检测是否有空闲的资源插槽; 检测空闲的资源插槽否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行; 如果有空闲资源插槽、且这些空闲插槽满足任务X的执行,将空闲资源插槽分配给任务X ; 如果没有空闲资源插槽或者这些资源插槽不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括: 检测是否有资源插槽被占用; 当有资源插槽被占用的情况下,将与占用的资源插槽等量的空闲计算资源转换为资源插槽。
8.根据权利要求4至7任意一项所述的方法,其特征在于,所述方法还包括: 获得各个计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值信息; 根据该信息,对各个计算节点各个任务当前执行需要的各种可动态增减的计算资源进行调整。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括: 资源回报器采集计算节点的各种计算资源信息,并将采集到的信息上报。
10.根据权利要求9所述的方法,其特征在于,所述资源回报器采集计算节点的各种计算资源信息,并将采集 到的信息上报,具体包括: 资源回报器采集计算节点各种计算资源当前实际占用值; 判断各种计算资源实际占用值是否达到其对应的计算资源最大值; 如果否,将没有达到计算资源最大值的计算资源的信息上报。
11.根据权利要求10所述的方法,其特征在于,在资源回报器采集计算节点各种计算资源当前实际占用值之前,还包括: 资源回报器采集计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值; 将采集到的信息上报。
12.—种任务调度装置,其特征在于,所述装置包括: 框架级调度器,用于获得各个计算节点的计算资源信息,根据该信息,将空闲计算资源分配给各个计算框架,其中,所述计算节点的计算资源信息包括:该计算节点的多种类型计算资源的使用情况; 任务级调度器,用于将各个计算框架所获得的空闲计算资源,分别分配给该计算框架的任务队列中的各个任务。
13.根据权利要求12所述的装置,其特征在于,所述框架级调度器,具体用于: 计算各个计算框架当前占用各种计算资源的情况; 根据计算结果,确定各个计算框架的主计算资源; 根据各个计算框架的主计算资源的比值和预设的各个计算框架的权值的比值,将空闲计算资源分配给各个计算框架。
14.根据权利要求12所述的装置,其特征在于,所述装置还包括:任务管理器, 所述任务管理器,用于在接收用户向计算框架添加的任务后,即时将该任务添加到该计算框架的任务队列中。
15.根据权利要求14所述的装置,其特征在于,所述任务管理器,具体用于: 接收用户向计算框架添加的任务后,判断该任务的优先级,并预估该任务执行所需占用的计算资源; 根据该任务的优先级信息和所预估的该任务执行所需占用的计算资源信息,将该任务添加到其对应优先级的任务队列。
16.根据权利要求15所述的装置,其特征在于,所述任务级调度器包括:第一判断子模块、第二判断子模块、第一计算资源分配子模块和第一资源抢占子模块, 所述第一判断子模块,用于判断计算框架当前是否有空闲计算资源; 所述第二判断子模块,用于判断计算框架当前有的空闲计算资源是否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行; 所述第一计算资源分配子模块,用于如果计算框架当前有空闲计算资源、且这些计算资源满足任务X的执行,将当前的空闲计算资源分配给任务X ; 所述第一资源抢占子模块,用于如果计算框架当前没有空闲计算资源或者这些计算资源不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的计算资源之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
17.根据权利要求15所述的装置,其特征在于,所述计算框架,预留部分计算资源作为资源插槽,所述任务级调度器包括:第一检测子模块、第二检测子模块、第二计算资源分配子模块和第二资源抢占子模块, 所述第一检测子模块,用于`检测是否有空闲的资源插槽; 所述第二检测子模块,用于检测空闲的资源插槽否满足最高优先级任务队列中预估所需占用最少计算资源的任务X的执行; 所述第二计算资源分配子模块,用于如果有空闲资源插槽、且这些空闲插槽满足任务X的执行,将空闲资源插槽分配给任务X ; 所述第二资源抢占子模块,用于如果没有空闲资源插槽或者这些资源插槽不满足任务X的执行,在当前执行的任务中,查找比任务X优先级低的、且占用的计算资源与空闲的资源插槽之和大于任务X需要的计算资源的任务,将这些任务暂停或杀死,将释放出的计算资源分配给任务X。
18.根据权利要求17所述的装置,其特征在于,所述任务级调度器还包括:第三检测子模块和资源插槽转换子模块, 所述第三检测子模块,用于检测是否有资源插槽被占用; 所述资源插槽转换子模块,用于当有资源插槽被占用的情况下,将与占用的资源插槽等量的空闲计算资源转换为资源插槽。
19.根据权利要求15至18任意一项所述的装置,其特征在于,所述框架级调度器还用于: 获得各个计算节点各个任务当前执行需要的各种可动态增减的计算资源实际占用值信息; 根据该信息,对各个计算节点各个任务当前执行需要的各种可动态增减的计算资源进行调整。
20.一种任务调度系统,包括资源回报器以及权利要求12至19任意一项所述的任务调度装置, 所述资源回报器,用于采集计算节点的各种计算资源信息,并将采集到的信息上报至任务调度装置。
21.根据权利要求20所述的系统,其特征在于,所述资源回报器包括第一采集子模块、第三判断子模块和第一上报子模块, 所述第一采集子模块,用于采集计算节点各种计算资源当前实际占用值; 所述第三判断子模块,用于判断各种计算资源实际占用值是否达到其对应的计算资源最大值; 所述第一上报子模块,用于当第三判断子模块判断结果为否时,将没有达到计算资源最大值的计算资源的信息上报。
22.根据权利要求21所述的系统,其特征在于,所述资源回报器还包括第二采集子模块和第二上报子模块, 所述第二采集子模块,用于在采集计算节点各种计算资源当前实际占用值之前,采集计算节点各个任务当 前执行需要的各种可动态增减的计算资源实际占用值; 所述第二上报子模块,用于将第二采集子模块采集到的信息上报。
【文档编号】G06F9/50GK103699445SQ201310706764
【公开日】2014年4月2日 申请日期:2013年12月19日 优先权日:2013年12月19日
【发明者】许立剑, 龚林洪, 杨根星, 吴杰珂 申请人:北京奇艺世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1