一种任务调度方法、装置、设备及可读存储介质与流程
未命名
10-26
阅读:55
评论:0
1.本技术涉及任务调度技术领域,更具体地说,涉及一种任务调度方法、装置、设备及可读存储介质。
背景技术:
2.在数据仓库中,数据加工的粒度为大数据任务,一个大数据任务中存在一个或多个业务逻辑加工。
3.目前,在对数据仓库中的任务进行调度时,是通过手动配置任务调度的串并行,这种方式无法使服务器资源得到充分利用,并会导致某些任务因排在后面位置而无法被调度到。
4.综上所述,如何提高任务调度的合理性,是目前本领域技术人员亟待解决的技术问题。
技术实现要素:
5.有鉴于此,本技术的目的是提供一种任务调度方法、装置、设备及可读存储介质,用于提高任务调度的合理性。
6.为了实现上述目的,本技术提供如下技术方案:
7.一种任务调度方法,包括:
8.获取各任务的资源值及所述任务间的依赖关系;
9.根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;
10.获取所述任务执行计划对应的运行日志,根据所述运行日志确定各所述任务的资源值,返回所述根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个所述任务执行计划;
11.从多个所述任务执行计划中选取最优任务执行计划,按照所述最优任务执行计划进行任务调度。
12.优选的,根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划,包括:
13.当进行第一步任务调度测算时,根据各所述任务的资源值及所述系统当前可占用资源确定当前待执行任务;
14.执行所述当前待执行任务,在所述当前待执行任务执行结束后,根据所述当前待执行任务、所述任务间的依赖关系及所述系统当前可占用资源,从未执行任务中确定当前待执行任务,返回所述执行所述当前待执行任务的步骤,直至执行完各所述任务,以得到所述任务执行计划。
15.优选的,在获取各任务的资源值及所述任务间的依赖关系时,还包括:
16.获取数据仓库中的任务层级被划分出多个泳道及各所述泳道的最低可用资源值和最高可用资源值,并确定各所述任务所属的泳道;其中,各所述泳道的优先级不同,优先级高的泳道的最低可用资源值、最高可用资源值对应大于优先级低的泳道的最低可用资源值、最高可用资源值,且任一所述泳道的最高可用资源值与其余所述泳道的最低可用资源值之和不超过系统整体可用资源值;
17.根据各所述任务的资源值及所述系统当前可占用资源确定当前待执行任务,包括:
18.根据各所述泳道包含的每个所述任务的资源值、各所述泳道的优先级、各所述泳道的最低可用资源值、最高可用资源值及所述系统当前可占用资源,分别确定各所述泳道中的当前待执行任务;
19.根据所述当前待执行任务、所述任务间的依赖关系及所述系统当前可占用资源,从未执行任务中确定当前待执行任务,包括:
20.根据所述泳道中的当前待执行任务、所述任务间的依赖关系、所述泳道中未执行任务的资源值、各所述泳道的优先级及所述系统当前可占用资源,确定所述泳道中的当前待执行任务。
21.优选的,根据各所述泳道包含的每个所述任务的资源值、各所述泳道的优先级、各所述泳道的最低可用资源值、最高可用资源值及所述系统当前可占用资源,分别确定各所述泳道中的当前待执行任务,包括:
22.根据所述泳道的最低可用资源值,为所述泳道分配最低可用资源;
23.根据泳道包含的每个所述任务的资源值及所述任务间的依赖关系,确定所述泳道中的当前待执行任务;
24.若为所述泳道分配的最低可用资源小于所述泳道中的当前待执行任务的资源值,则根据所述泳道的优先级、为所述泳道分配的最低可用资源及所述当前待执行任务的资源值,从所述系统当前可占用资源中为所述泳道分配资源;所述泳道分配到的资源不超过所述泳道对应的最高可用资源值。
25.优选的,在根据所述当前待执行任务、所述任务间的依赖关系及所述系统当前可占用资源,从未执行任务中确定当前待执行任务后,还包括:
26.若存在多个资源值相同的当前待执行任务,则选择执行时间最长或依赖任务最多的未执行任务作为最终确定的所述当前待执行任务。
27.优选的,获取所述任务执行计划对应的运行日志,包括:
28.获取所述任务执行计划对应的任务执行日志及系统监控日志;
29.根据所述运行日志确定各所述任务的资源值,包括:
30.从所述任务执行日志中获取所述任务的运行时长,从所述系统监控日志中获取执行所述任务占用的系统资源;
31.根据所述任务的运行时长及所述任务占用的系统资源,确定所述任务的资源值。
32.优选的,在根据所述任务的运行时长及所述任务占用的系统资源,确定所述任务的资源值之后,还包括:
33.接收用户输入的所述任务的干预资源值,并根据所述干预资源值对相应任务的资源值进行调整。
34.一种任务调度装置,包括:
35.第一获取模块,用于获取各任务的资源值及所述任务间的依赖关系;
36.测算执行模块,用于根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;
37.返回模块,用于获取所述任务执行计划对应的运行日志,根据所述运行日志确定各所述任务的资源值,返回所述根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个所述任务执行计划;
38.调度模块,用于从多个所述任务执行计划中选取最优任务执行计划,按照所述最优任务执行计划进行任务调度。
39.一种任务调度设备,包括:
40.存储器,用于存储计算机程序;
41.处理器,用于执行所述计算机程序时实现如上述任一项所述的任务调度方法的步骤。
42.一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的任务调度方法的步骤。
43.本技术提供了一种任务调度方法、装置、设备及可读存储介质,其中,该方法包括:获取各任务的资源值及任务间的依赖关系;根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;获取任务执行计划对应的运行日志,根据运行日志确定各任务的资源值,返回根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个任务执行计划;从多个任务执行计划中选取最优任务执行计划,按照最优任务执行计划进行任务调度。
44.本技术公开的上述技术方案,根据各任务的资源值以及任务之间的依赖关系,以占满系统当前可占用资源为目标进行任务调度的测算和执行,以得到任务执行计划,并根据任务执行计划对应的日志对各任务的资源值进行更新,且重复执行根据各任务的资源值以及任务之间的依赖关系,以占满系统当前可占用资源为目标进行任务调度的测算和执行,以得到多个任务执行计划,然后,从多个任务执行计划中选择最优的任务执行计划进行任务调度,以提高对系统资源的利用率,减少系统资源的浪费和缩短任务执行耗费的时间,避免出现某些任务调度不到的情况,从而提高任务调度的合理性。
附图说明
45.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
46.图1为本技术实施例提供的一种任务调度方法的流程图;
47.图2为本技术实施例提供的任务资源值确定方法流程图;
48.图3为本技术实施例提供的etl资源配置表的示意图;
49.图4为本技术实施例提供的作业依赖配置表的示意图;
50.图5为本技术实施例提供的任务执行计划优化原理图;
51.图6为本技术实施例提供的采用现有任务调度方式与采用本技术的任务调度方式进行任务调度时所占用资源和任务运行时间对比图;
52.图7为本技术实施例提供的另一种任务调度方法流程图;
53.图8为本技术实施例提供的数据加工过程中划分出的泳道示意图;
54.图9为本技术实施例提供的一种任务调度装置的结构示意图;
55.图10为本技术实施例提供的一种任务调度设备的结构示意图。
具体实施方式
56.目前,在oracle(数据库管理系统)+kettle(开源的etl(数据抽取、转换和加载)工具)的环境下,通过手动配置任务调度的串并行,无法使oracle所在服务器充分利用资源,服务器显示资源利用在20%-30%左右。
57.为此,本技术提供一种任务调度方法、装置、设备及可读存储介质,用于提高任务调度的合理性。
58.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
59.参见图1,其示出了本技术实施例提供的一种任务调度方法的流程图,本技术实施例提供的一种任务调度方法,可以包括:
60.s11:获取各任务的资源值及任务间的依赖关系。
61.在本技术中,首先,可以根据数据仓库中各任务按照原有的调度方式运行时对应的任务运行日志,并可获取对应的系统监控日志。其中,任务运行日志中包含任务运行的参数,例如任务运行时长等,系统监控日志中包含任务运行时所消耗的系统资源,例如每分钟内存指标、每分钟cpu指标等。然后,可以根据任务运行日志、系统监控日志和人为经验设定各任务的初始资源值。具体地,可以根据任务运行日志、系统监控日志确定资源值影响参数,此部分参数包含运行时长与运行时所占系统资源,其中,运行时所占系统资源包含但不限于每分钟内存指标、每分钟cpu指标等。运行时长可通过历史任务执行日志得出,运行时所占资源可通过在历史任务执行时对系统资源使用情况进行监控得出。在得到各任务的运行时长和各任务运行时所占系统资源后,设定两个参数之间的权重,初步设置为各站五分之五十,最终可对得出的各任务初始资源值依据人为经验加以调整,具体地,可适当加大印象中涉及数据量比较多的任务对应的资源值,降低印象中涉及数据量比较少的任务对应的资源值,将评估结果存入一张配置表中,可取名为etl资源配置表。具体可以参见图2和图3,其中,图2示出了任务资源值确定方法流程图,图3示出了etl资源配置表的示意图,从图2和图3中可以看出,其中,干预的资源值即为人为干预调整的资源值,原始资源值即为任务在上次执行时的资源值。当然,也可以直接人为确定各任务的初始资源值,相应地,数据仓库系统(具体可为数据仓库系统中的调度平台)可以直接获取各任务的初始资源值,或者,调度平台也可以通过其他方式获取各任务的资源值。
62.另外,为了实现数据仓库系统对任务间的执行计划的自动编排,则还需要对任务间的依赖关系(即数据仓库血缘关系)进行整理,以免自动编排执行计划时无差别编排而无法实现任务间的互相。因此,数据仓库系统还可以获取任务间的依赖关系,其中,存在依赖关系的任务指的是依赖任务的执行需要被依赖任务的执行结果,即只有被依赖任务执行得到执行结果,依赖任务才能根据被依赖任务的执行结果进行执行,也即在任务编码时,需要优先执行被依赖任务,再执行依赖任务。
63.需要说明的是,任务间的依赖关系可以分为强依赖和弱依赖这两种类型,强依赖为被依赖任务未完成或执行失败的情况下,后续依赖到被依赖任务的任务不可以执行,弱依赖为在被依赖任务未完成或执行失败的情况下,后续依赖到被依赖任务的任务仍然可以执行。在获取到任务间的依赖关系之后,可以将任务间的依赖关系以及依赖类型存入一张表中,该表可以取名为作业依赖配置表,具体可以参见图4,其示出了作业依赖配置表的示意图。
64.s12:根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划。
65.在获取到各任务的资源值以及任务间的依赖关系之后,数据仓库系统可以根据所获取的参数进行任务间执行计划的编排,得到任务执行计划,此过程可被称为测算调度,测算调度可采用贪心算法实现。也即在获取到各任务的资源值以及任务间的依赖关系之后,可以根据各任务的资源值以及任务间的依赖关系,以占满系统当前可占用资源为目标,采用贪心算法进行任务测算和任务执行,以得到任务执行计划。其中,当某任务占用一部分系统当前可占用资源进行运行时,在上述任务未运行完之前,该部分系统可占用资源则不可被其他任务再占用(即采用数据锁机制)进行系统资源占用。任务执行计划即为多个任务之间的执行顺序。
66.其中,贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。即一步一步进行,基于当前的情况根据某个计算依据得出当前的最优选择,不考虑整体的情况,将问题简化成一个个规模更小的子问题,通过每一步的贪心选择,从而得到问题的最优解。在投射到本技术上时,由于系统内包含多个任务,期望是在多个任务的执行计划上获得最优解,此最优解要求尽可能提高对系统资源的利用率,所以,在决定哪个任务先启动时,以占满系统当前可占用资源为目标进行选择,每次都选择可占满系统当前可占用资源的任务进行执行,一步一步选择下一次需要执行的任务,得出最终的执行任务最优解,也即得到一个任务执行计划,在该任务执行计划下,各任务在执行时均尽量占满系统当前可占用资源,从而可以提高系统资源利用率,减少系统资源的浪费,提高任务调度合理性。
67.需要说明的是,在进行数据仓库中任务调度时,各地方(如各省)的总资源情况可以配置到系统的调度平台中,调度平台产生的任务执行计划所消耗的资源不能长时间超过各地方的总资源。在加工任务繁忙阶段,所消耗的资源尽量保持在较高的水平线,充分利用各地方的资源。
68.s13:获取任务执行计划对应的运行日志,根据运行日志确定各任务的资源值,返回根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个任务执行计划。
69.考虑到随着etl不断运行,业务数据也有所变化,各任务的初始资源值离实际所需要的资源值会有一定的偏差,为了保证测算调度的准确性,则在进行下一次测算调度之前,可以调整任务的资源值。其中,任务资源值的大小会直接影响到任务执行计划的合理性,因此,为了便于准确调整、获取各任务的资源值,则可以根据历史系统资源负荷(包括内存、cpu等)、etl调度时间以及运维经验干预值等,通过权重和算法测算出任务的资源值。具体地,在得到一个任务执行计划后,可以获取该任务执行计划对应的运行日志,其中,该运行日志具体可以包括任务运行日志及系统监控日志,之后,可以根据运行日志确定各任务的资源值,具体可以参见图2。
70.另外,由于业务不断发展,不仅单个任务所需资源会发生变化,任务总量及系统资源等都会随着时间不断发生变化,因此,通过一次测算调度无法得出最优任务执行计划,故需要进行多次测算调度以得出更优的任务执行计划。
71.因此,在重新获取各任务的资源值之后,可以返回执行根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,也即可以返回步骤s12,也即重复执行步骤s12和步骤s13,从而得到多个任务执行计划。其中,测算调度具体可以执行预设时长(可以根据需求进行设定)或者得到n个(n为大于1的整数,具体大小可以根据需求进行设定)后结束。
72.通过上述过程实现对任务执行计划的不断优化,具体可以参见图5,其示出了任务执行计划优化原理图。调度平台根据测试调度所得到的任务执行计划执行etl任务,并产生运行日志。然后,根据运行日志对每个任务的资源值进行验证,不断将其调整成更合适的资源值,再次经过测算算法得出新的任务执行计划,从而获取到更优化的执行计划。如此循环,使任务执行计划越来越优化,起到自动优化执行计划的目的。而且,通过多次进行任务测算调度可以实现对任务的动态调配,可支持根据菜单动态调整etl加工任务,以提高任务调度的灵活性。
73.其中,任务执行计划科采用树型结构,即根结点任务是树杈的父节点,当父节点执行完成后,子结点才能被执行,当所有子结点执行完后,相应的所有任务也就执行完毕。
74.s14:从多个任务执行计划中选取最优任务执行计划,按照最优任务执行计划进行任务调度。
75.在得到多个任务执行计划后,可以根据执行时长和系统资源消耗情况对任务执行计划进行评估,以从中选择出最优任务执行计划。具体地,可以选择系统性能指标时间维度较为平稳(具体可为系统持续利用率最高)或运行执行时长最短的执行计划作为最优任务执行计划。之后,可以将最优任务执行计划进行固定(具体可以在某一时间段进行维持此固定的任务执行计划),后续则按照固定下来的最优任务执行计划进行任务调度。上述过程即为固定调度。通过上述方式可以使得任务调度时充分利用系统资源,提高系统资源利用率,降低系统资源消耗,并可提高任务调度效率,从而提高任务调度合理性。
76.其中,对于任务测算调度与任务固定调度,具体可以参见表1,其为任务测算调度和任务固定调度的对比表:
[0077][0078]
通过上述可知,任务测算调度和任务固定调度之间进行配合,在项目上线初期,可以使用“任务测算调度”根据各方因素对任务进行测算,边测算边调度,以得到一份完整的任务执行计划,待多次测算得出多份任务执行计划后,可以从中选择一份最优的任务执行计划固定下来,使用“任务固定调度”进行调度执行工作。
[0079]
通过上述可以改变任务执行计划,在设定的水位线(即系统可占用资源峰值,或者说是使用资源峰值)下,实现尽可能地最大化利用资源,尽可能地缩短任务的总时长,在有限的资源下实现任务的高效运行,提高任务的时效性,具体可以参见图6,其示出了采用现有任务调度方式与采用本技术的任务调度方式进行任务调度时所占用资源和任务运行时间对比图,从图中可以看出,由于整体的etl调度是根据etl配置资源进行实时调整,因此对应的能够充分保障系统资源更合理的利用,在打满系统资源的情况下,对应的etl加工周期也将会产生明显的缩短。
[0080]
本技术公开的上述技术方案,根据各任务的资源值以及任务之间的依赖关系,以占满系统当前可占用资源为目标进行任务调度的测算和执行,以得到任务执行计划,并根据任务执行计划对应的日志对各任务的资源值进行更新,且重复执行根据各任务的资源值以及任务之间的依赖关系,以占满系统当前可占用资源为目标进行任务调度的测算和执行,以得到多个任务执行计划,然后,从多个任务执行计划中选择最优的任务执行计划进行任务调度,以提高对系统资源的利用率,减少系统资源的浪费和缩短任务执行耗费的时间,避免出现某些任务调度不到的情况,从而提高任务调度的合理性。
[0081]
本技术实施例提供的一种任务调度方法,根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划,可以包括:
[0082]
当进行第一步任务调度测算时,根据各任务的资源值及系统当前可占用资源确定当前待执行任务;
[0083]
执行当前待执行任务,在当前待执行任务执行结束后,根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务,返回执行当前待执行任务的步骤,直至执行完各任务,以得到任务执行计划。
[0084]
在本技术中,在根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划时,在当前次测算调度时,若是进行第一步任务调度测试执行时,则会根据各任务的资源值以及系统当前可占用资源,以占满系统当前可占用资源为目标,确定当前待执行计划。其中,所确定的当前待执行任务可
以为一个,也可以为多个不存在依赖关系的多个任务,具体根据系统当前可占用资源进行确定,当为多个任务时,则多个任务可以并行进行。
[0085]
在确定出当前待执行任务之后,可以执行当前待执行任务。在当前待执行任务执行结束后(在执行完第一次的当前待执行任务后,后续的任务调度测算执行则均为非第一步任务调度测算),可以根据当前待执行任务(此时已变为最新已执行完任务)、任务间的依赖关系以及未执行任务,从未执行任务中确定依赖该最新已执行完任务的任务,并将这些任务作为待选任务。然后,可以根据各待选任务的资源值及系统当前可占用资源,以占满系统当前可占用资源为目标,从各待选任务中确定当前待执行任务,并返回执行当前待执行任务的步骤,直至执行完所有任务,从而得到任务执行计划。
[0086]
通过上述可知,在测算调度的每一步任务调度测算时均是以占满系统当前可占用资源为目标进行待执行任务的确定和执行,因此,可以提高任务调度对系统资源的利用率,缩短任务执行所耗费的时间,提高任务执行效率。
[0087]
参见图7,其示出了本技术实施例提供的另一种任务调度方法流程图。本技术实施例提供的一种任务调度方法,在获取各任务的资源值及任务间的依赖关系时,还可以包括:
[0088]
获取数据仓库中的任务层级被划分出多个泳道及各泳道的最低可用资源值和最高可用资源值,并确定各任务所属的泳道;其中,各泳道的优先级不同,优先级高的泳道的最低可用资源值、最高可用资源值对应大于优先级低的泳道的最低可用资源值、最高可用资源值,且任一泳道的最高可用资源值与其余泳道的最低可用资源值之和不超过系统整体可用资源值;
[0089]
根据各任务的资源值及系统当前可占用资源确定当前待执行任务,可以包括:
[0090]
根据各泳道包含的每个任务的资源值、各泳道的优先级、各泳道的最低可用资源值、最高可用资源值及系统当前可占用资源,分别确定各泳道中的当前待执行任务;
[0091]
根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务,可以包括:
[0092]
根据泳道中的当前待执行任务、任务间的依赖关系、泳道中未执行任务的资源值、各泳道的优先级及系统当前可占用资源,确定泳道中的当前待执行任务。
[0093]
数据仓库系统中需要将原始数据进行清理汇总得出分析类汇总类的结果供客户决策支持时使用,一般需要的业务要求相对复杂,为分解目标、使用存储换区查询效率等原因,会将多个任务按照层级进行管理,多个任务层级间相互依赖,最后一个任务层级给应用功能提供数据。考虑到数据仓库系统中任务分不同的层级且不同层级对功能数据交付使用的时效性产生影响,因此,可以根据功能数据更新的时效性要求,将数据仓库系统中的每个任务层级均拆分出多个泳道,且各泳道的优先级不同,同一泳道的多个任务层级间顺序执行,多个泳道之间互不影响,可以同时执行。例如可以划分出极速泳道、重点泳道和普通泳道,且优先级依次降低,也即极速泳道优先级最高、普通泳道优先级最低、重点泳道优先级位于中间。具体可以参见图8,其示出了数据加工过程中划分出的泳道示意图,其中,图8以数据仓库系统包含五个任务层级且任务层级划分出极速泳道、重点泳道和普通泳道为例进行说明。
[0094]
在设置系统整体可用资源值时,还可为划分出的每个泳道配置对地可用资源值和最高可用资源值。其中,优先级高的泳道的最低可用资源值大于优先级低的泳道的最低可
用资源值,优先级高的泳道的最高可用资源值对应大于优先级低的泳道的最高可用资源值,也即优先级最高的泳道占有最大的最低可用资源值和最高可用资源值。而且,任一泳道的最高可用资源值与其余泳道的最低可用资源值之和不超过系统整体可用资源值。另外,所有泳道最高可用资源加在一起是可以超过系统整体可用资源值的,当某些泳道资源利用率比较低的情况下,其它泳道可以有更多的利用资源。而且每个泳道的最低可用资源值均可以大于0,以使得各泳道均可以进行任务调度,从而避免某些泳道的任务长时间执行不到。
[0095]
以极速泳道、重点泳道和普通泳道为例,系统整体可用资源值可为100,极速泳道最低可用资源值可为30,最高可用资源值可为70;重点泳道最低可用资源值可为20,最高可用资源值可为60;普通泳道最低可用资源值可为10,普通可用资源值可为50。
[0096]
在上述基础上,可以确定各任务所属的泳道,也即可以将优化等级不同的加工任务归属到相应优先级等级的泳道中。调度平台可以以泳道为单位进行调度,且可按时效性和频度进行调度。
[0097]
在划分泳道的基础上,当进行第一步任务调度测算时,根据各任务的资源值及系统当前可占用资源确定当前待执行任务具体可以为根据各所述泳道包含的每个所述任务的资源值、各所述泳道的优先级、各所述泳道的最低可用资源值、最高可用资源值及所述系统当前可占用资源,分别确定各泳道中的当前待执行任务,其中,当前待执行任务的资源值不小于对应泳道的最低可用资源值且不高于对应泳道的最高可用资源值,系统当前可占用资源优先满足优先级最高的泳道的需求,且为泳道分配的可用资源不超过泳道的最高可用资源值。在确定各泳道的当前待执行任务后,则可以在各泳道分别执行对应的当前待执行任务。
[0098]
当泳道中的当前待执行任务执行完(此时已变为泳道中最新已执行完任务)后,在根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务时,则可以根据泳道中最新已执行完任务、任务间的依赖关系以及泳道中的未执行任务,从泳道中的未执行任务中确定依赖泳道中最新已执行完任务的任务,并将这些任务作为泳道中的待选任务。之后,可以根据泳道中的待选任务的资源值,以占满泳道当前可占用资源为目标确定当前待执行任务,若确定出的当前待执行任务的资源值大于泳道当前可占用资源,则在系统当前可占用资源不为0的情况下可以根据各泳道的优先级及系统当前可占用资源,按照优先级由高到低的顺序为泳道分配系统当前可占用资源。然后,则可以执行泳道对应的当前待执行任务,并重复上述过程,直至执行完各泳道的所有任务,以得到任务执行计划,此时的任务执行计划即为各泳道中所包含任务的任务执行顺序。
[0099]
具体而言,即在每个泳道启动时(也即为泳道直接分配其对应的最低可用资源值时),第一次执行任务或某任务结束时,会根据任务间的依赖关系以及已运行任务和未运行任务的情况,得出当前可加入执行的任务队列。每个泳道首先以占满当前泳道已被分配的资源值为目标,如需要的资源值比泳道已分配资源值更多,则向系统申请新的资源值分配,此申请及分配的过程遵循优先分配给优先级更高的泳道,系统已使用和未使用的资源值不可超过最初设置的“系统整体可用资源值”。
[0100]
通过进行泳道划分和按照泳道进行任务测算和调度的方式可实现根据任务重要等级而进行任务调度,缩短重要任务执行所花费的时间,提高重要任务执行效率。且还可实
现多任务并行执行,从而缩短所有任务整体花费的时间,提高所有任务调度效率。另外,还可根据各地方配置的菜单、客户关系菜单的重要等级进行etl任务动态划分以及动态调整,使得各地方任务调度更加灵活,并能够更快地给客户最关心的菜单功能。
[0101]
本技术实施例提供的一种任务调度方法,根据各泳道包含的每个任务的资源值、各泳道的优先级、各泳道的最低可用资源值、最高可用资源值及系统当前可占用资源,分别确定各泳道中的当前待执行任务,可以包括:
[0102]
根据泳道的最低可用资源值,为泳道分配最低可用资源;
[0103]
根据泳道包含的每个任务的资源值及任务间的依赖关系,确定泳道中的当前待执行任务;
[0104]
若为泳道分配的最低可用资源小于泳道中的当前待执行任务的资源值,则根据泳道的优先级、为泳道分配的最低可用资源及当前待执行任务的资源值,从系统当前可占用资源中为泳道分配资源;泳道分配到的资源不超过泳道对应的最高可用资源值。
[0105]
在本技术中,根据各泳道包含的每个任务的资源值、各泳道的优先级、各泳道的最低可用资源值、最高可用资源值及系统当前可占用资源,分别确定各泳道中的当前待执行任务的具体过程可以如下,也即在划分泳道的情况下,每次测算调度的过程中,第一次确定当前待执行任务的具体过程可以如下:
[0106]
首先,根据各泳道的最低可用资源值,为每个泳道分别分配相应的最低可用资源。然后,根据各泳道中包含的每个任务的资源值以及任务间的依赖关系(具体优先考虑后续依赖任务较多的任务等),以占满相应泳道当前可占用资源为目标,确定各泳道中的当前待执行任务。此时,若为泳道分配的最低可用资源不小于泳道中的当前待执行任务的资源值,表明为泳道分配的最低可用资源可以满足当前待执行任务的执行,因此,则可以直接执行泳道中的当前待执行任务。若为泳道分配的最低可用资源小于泳道中的当前待执行任务的资源值,则表明为泳道分配的最低可用资源无法满足当前待执行任务的执行,因此,则可以根据为泳道分配的最低可用资源以及泳道中当前待执行任务的资源值确定还需为泳道分配的资源值,然后,可以按照泳道优先级由高到低的顺序以及还需为泳道分配的资源值,在系统当前可占用资源不为零的情况下,从系统当前可占用资源中为泳道分配相应的资源值。其中,泳道分配到的资源不能超过泳道对应的最高可用资源值。
[0107]
本技术实施例提供的一种任务调度方法,在根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务后,还可以包括:
[0108]
若存在多个资源值相同的当前待执行任务,则选择执行时间最长或依赖任务最多的未执行任务作为最终确定的当前待执行任务。
[0109]
在本技术中,在根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务后,若存在多个资源值相同的当前待执行任务,则可以选择执行时长最长或者后续的依赖任务最多的未执行任务作为最终确定的当前待执行任务,以实现在前期进行执行时长最长或者后续的依赖任务最多的未执行任务的执行,从而避免因运行执行时长最长或者后续的依赖任务最多的未执行任务比较晚而导致任务整体耗费时间偏长,以有效缩短任务执行时间,提高任务执行效率。
[0110]
本技术实施例提供的一种任务调度方法,获取任务执行计划对应的运行日志,可以包括:
[0111]
获取任务执行计划对应的任务执行日志及系统监控日志;
[0112]
根据运行日志确定各任务的资源值,可以包括:
[0113]
从任务执行日志中获取任务的运行时长,从系统监控日志中获取执行任务占用的系统资源;
[0114]
根据任务的运行时长及任务占用的系统资源,确定任务的资源值。
[0115]
在本技术中,具体可以获取任务执行计划对应的任务执行日志以及系统监控日志,并可从任务执行日志中获取各任务的运行时长,从系统监控日志中获取任务在执行时所占用的系统资源(具体可以包括cpu资源和内存资源等),然后,可以根据各任务的运行时长及其占用的系统资源、以及分别为运行时长和占用系统资源所分配的权重,采用加权计算方式确定任务的资源值,以提高任务资源值确定合理性和准确性。
[0116]
当然,为了进一步提高任务资源值确定的准确性,还可以获取任务的原始资源值(即上一次的资源值),并根据任务的原始资源值、任务运行时长、任务所占用的系统资源以及这三项分别对应的权重,采用加权计算的方式得到任务的资源值。
[0117]
本技术实施例提供的一种任务调度方法,在根据任务的运行时长及任务占用的系统资源,确定任务的资源值之后,还可以包括:
[0118]
接收用户输入的任务的干预资源值,并根据干预资源值对相应任务的资源值进行调整。
[0119]
在本技术中,在根据任务的运行时长及任务占用的系统资源,确定任务的资源值之后,可以对各任务的资源值进行显示,以使得用户获取各任务的资源值。用户可根据经验、需求等调整某个或某些任务的资源值,具体地,可以将相应任务的干预资源值输入到数据仓库系统中。相应地,数据仓库系统可以接收用户输入的任务的干预资源值,并可以根据接收到的相应任务的干预资源值对相应任务的资源值进行调整,从而使得任务的资源值能够更加符合需求,提高任务调度灵活性。
[0120]
本技术实施例还提供了一种任务调度装置,参见图9,其示出了本技术实施例提供的一种任务调度装置的结构示意图,可以包括:
[0121]
第一获取模块91,用于获取各任务的资源值及任务间的依赖关系;
[0122]
测算执行模块92,用于根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;
[0123]
返回模块93,用于获取任务执行计划对应的运行日志,根据运行日志确定各任务的资源值,返回根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个任务执行计划;
[0124]
调度模块94,用于从多个任务执行计划中选取最优任务执行计划,按照最优任务执行计划进行任务调度。
[0125]
本技术实施例提供的一种任务调度装置,测算执行模块92可以包括:
[0126]
第一确定单元,用于当进行第一步任务调度测算时,根据各任务的资源值及系统当前可占用资源确定当前待执行任务;
[0127]
得到执行计划单元,用于执行当前待执行任务,在当前待执行任务执行结束后,根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务,返回执行当前待执行任务的步骤,直至执行完各任务,以得到任务执行计划。
[0128]
本技术实施例提供的一种任务调度装置,还可以包括:
[0129]
第二获取模块,用于获取数据仓库中的任务层级被划分出多个泳道及各泳道的最低可用资源值和最高可用资源值,并确定各任务所属的泳道;其中,各泳道的优先级不同,优先级高的泳道的最低可用资源值、最高可用资源值对应大于优先级低的泳道的最低可用资源值、最高可用资源值,且任一泳道的最高可用资源值与其余泳道的最低可用资源值之和不超过系统整体可用资源值;
[0130]
第一确定单元可以包括:
[0131]
第一确定子单元,用于根据各泳道包含的每个任务的资源值、各泳道的优先级、各泳道的最低可用资源值、最高可用资源值及系统当前可占用资源,分别确定各泳道中的当前待执行任务;
[0132]
得到执行计划单元可以包括:
[0133]
第二确定子单元,用于根据泳道中的当前待执行任务、任务间的依赖关系、泳道中未执行任务的资源值、各泳道的优先级及系统当前可占用资源,确定泳道中的当前待执行任务。
[0134]
本技术实施例提供的一种任务调度装置,第一确定子单元可以包括:
[0135]
第一分配子单元,用于根据泳道的最低可用资源值,为泳道分配最低可用资源;
[0136]
第三确定子单元,用于根据泳道包含的每个任务的资源值及任务间的依赖关系,确定泳道中的当前待执行任务;
[0137]
第二分配子单元,用于若为泳道分配的最低可用资源小于泳道中的当前待执行任务的资源值,则根据泳道的优先级、为泳道分配的最低可用资源及当前待执行任务的资源值,从系统当前可占用资源中为泳道分配资源;泳道分配到的资源不超过泳道对应的最高可用资源值。
[0138]
本技术实施例提供的一种任务调度装置,测算执行模块92还可以包括:
[0139]
选择单元,用于在根据当前待执行任务、任务间的依赖关系及系统当前可占用资源,从未执行任务中确定当前待执行任务后,若存在多个资源值相同的当前待执行任务,则选择执行时间最长或依赖任务最多的未执行任务作为最终确定的当前待执行任务。
[0140]
本技术实施例提供的一种任务调度装置,测算执行模块92还可以包括:
[0141]
第一获取单元,用于获取任务执行计划对应的任务执行日志及系统监控日志;
[0142]
第二获取单元,用于从任务执行日志中获取任务的运行时长,从系统监控日志中获取执行任务占用的系统资源;
[0143]
第二确定单元,用于根据任务的运行时长及任务占用的系统资源,确定任务的资源值。
[0144]
本技术实施例提供的一种任务调度装置,测算执行模块92还可以包括:
[0145]
调整单元,用于在根据任务的运行时长及任务占用的系统资源,确定任务的资源值之后,接收用户输入的任务的干预资源值,并根据干预资源值对相应任务的资源值进行调整。
[0146]
本技术实施例还提供了一种任务调度设备,参见图10,其示出了本技术实施例提供的一种任务调度设备的结构示意图,可以包括:
[0147]
存储器101,用于存储计算机程序;
[0148]
处理器102,用于执行存储器101存储的计算机程序时可实现如下步骤:
[0149]
获取各任务的资源值及任务间的依赖关系;根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;获取任务执行计划对应的运行日志,根据运行日志确定各任务的资源值,返回根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个任务执行计划;从多个任务执行计划中选取最优任务执行计划,按照最优任务执行计划进行任务调度。
[0150]
本技术实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
[0151]
获取各任务的资源值及任务间的依赖关系;根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;获取任务执行计划对应的运行日志,根据运行日志确定各任务的资源值,返回根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个任务执行计划;从多个任务执行计划中选取最优任务执行计划,按照最优任务执行计划进行任务调度。
[0152]
该可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0153]
本技术提供的一种任务调度装置、设备及可读存储介质中相关部分的说明可以参见本技术实施例提供的一种任务调度方法中对应部分的详细说明,在此不再赘述。
[0154]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
[0155]
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种任务调度方法,其特征在于,包括:获取各任务的资源值及所述任务间的依赖关系;根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;获取所述任务执行计划对应的运行日志,根据所述运行日志确定各所述任务的资源值,返回所述根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个所述任务执行计划;从多个所述任务执行计划中选取最优任务执行计划,按照所述最优任务执行计划进行任务调度。2.根据权利要求1所述的任务调度方法,其特征在于,根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划,包括:当进行第一步任务调度测算时,根据各所述任务的资源值及所述系统当前可占用资源确定当前待执行任务;执行所述当前待执行任务,在所述当前待执行任务执行结束后,根据所述当前待执行任务、所述任务间的依赖关系及所述系统当前可占用资源,从未执行任务中确定当前待执行任务,返回所述执行所述当前待执行任务的步骤,直至执行完各所述任务,以得到所述任务执行计划。3.根据权利要求1所述的任务调度方法,其特征在于,在获取各任务的资源值及所述任务间的依赖关系时,还包括:获取数据仓库中的任务层级被划分出多个泳道及各所述泳道的最低可用资源值和最高可用资源值,并确定各所述任务所属的泳道;其中,各所述泳道的优先级不同,优先级高的泳道的最低可用资源值、最高可用资源值对应大于优先级低的泳道的最低可用资源值、最高可用资源值,且任一所述泳道的最高可用资源值与其余所述泳道的最低可用资源值之和不超过系统整体可用资源值;根据各所述任务的资源值及所述系统当前可占用资源确定当前待执行任务,包括:根据各所述泳道包含的每个所述任务的资源值、各所述泳道的优先级、各所述泳道的最低可用资源值、最高可用资源值及所述系统当前可占用资源,分别确定各所述泳道中的当前待执行任务;根据所述当前待执行任务、所述任务间的依赖关系及所述系统当前可占用资源,从未执行任务中确定当前待执行任务,包括:根据所述泳道中的当前待执行任务、所述任务间的依赖关系、所述泳道中未执行任务的资源值、各所述泳道的优先级及所述系统当前可占用资源,确定所述泳道中的当前待执行任务。4.根据权利要求3所述的任务调度方法,其特征在于,根据各所述泳道包含的每个所述任务的资源值、各所述泳道的优先级、各所述泳道的最低可用资源值、最高可用资源值及所述系统当前可占用资源,分别确定各所述泳道中的当前待执行任务,包括:根据所述泳道的最低可用资源值,为所述泳道分配最低可用资源;
根据泳道包含的每个所述任务的资源值及所述任务间的依赖关系,确定所述泳道中的当前待执行任务;若为所述泳道分配的最低可用资源小于所述泳道中的当前待执行任务的资源值,则根据所述泳道的优先级、为所述泳道分配的最低可用资源及所述当前待执行任务的资源值,从所述系统当前可占用资源中为所述泳道分配资源;所述泳道分配到的资源不超过所述泳道对应的最高可用资源值。5.根据权利要求2所述的任务调度方法,其特征在于,在根据所述当前待执行任务、所述任务间的依赖关系及所述系统当前可占用资源,从未执行任务中确定当前待执行任务后,还包括:若存在多个资源值相同的当前待执行任务,则选择执行时间最长或依赖任务最多的未执行任务作为最终确定的所述当前待执行任务。6.根据权利要求1所述的任务调度方法,其特征在于,获取所述任务执行计划对应的运行日志,包括:获取所述任务执行计划对应的任务执行日志及系统监控日志;根据所述运行日志确定各所述任务的资源值,包括:从所述任务执行日志中获取所述任务的运行时长,从所述系统监控日志中获取执行所述任务占用的系统资源;根据所述任务的运行时长及所述任务占用的系统资源,确定所述任务的资源值。7.根据权利要求6所述的任务调度方法,其特征在于,在根据所述任务的运行时长及所述任务占用的系统资源,确定所述任务的资源值之后,还包括:接收用户输入的所述任务的干预资源值,并根据所述干预资源值对相应任务的资源值进行调整。8.一种任务调度装置,其特征在于,包括:第一获取模块,用于获取各任务的资源值及所述任务间的依赖关系;测算执行模块,用于根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;返回模块,用于获取所述任务执行计划对应的运行日志,根据所述运行日志确定各所述任务的资源值,返回所述根据各所述任务的资源值及所述任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个所述任务执行计划;调度模块,用于从多个所述任务执行计划中选取最优任务执行计划,按照所述最优任务执行计划进行任务调度。9.一种任务调度设备,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的任务调度方法的步骤。10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的任务调度方法的步骤。
技术总结
本申请公开了一种任务调度方法、装置、设备及可读存储介质,方法包括:获取各任务的资源值及任务间的依赖关系;根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划;确定各任务的资源值,返回根据各任务的资源值及任务间的依赖关系,以占满系统当前可占用资源为目标进行任务调度测算和执行,得到任务执行计划的步骤,以得到多个任务执行计划;从多个任务执行计划中选取最优任务执行计划,按照最优任务执行计划进行任务调度。本申请公开的技术方案,以占满系统当前可占用资源为目标进行任务调度测算而得到多个任务执行计划,从中选择最优计划进行任务调度,以提高任务调度的合理性。任务调度的合理性。任务调度的合理性。
技术研发人员:杨彤 钱晓雷 吴海洋 汪维 李铭 邱磊 唐冬平
受保护的技术使用者:税友软件集团股份有限公司
技术研发日:2023.08.04
技术公布日:2023/10/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种基石震动夯实装置的制作方法 下一篇:一种键盘底板上料装置的制作方法