发明内容
有鉴于此,本申请提供一种数据仓库中任务的调度方法、装置,可以解决现有的任务的调度和管理效率低的问题。
为了解决上述技术问题,本申请第一方面提供一种数据仓库中任务的调度方法,当用户需要批量启动某一批任务节点时,数据仓库调度系统根据用户的输入信息执行如下步骤:
接收用户输入的新建虚拟任务节点的操作;
接收用户输入的将所述新建的虚拟任务节点与所述批量启动的某一批任务节点关联的操作;
当所述新建的虚拟任务节点启动后,所述数据仓库调度系统从所述新建的虚拟任务节点开始,根据所述批量启动的某一批任务节点的叶子节点路径上各任务节点的执行顺序调度各任务节点执行任务;
当各任务节点执行完任务后,输出所述批量启动的某一批任务节点的执行结果给用户。
其中,所述的方法还包括:
检测到用户点击新建虚拟任务节点的按钮,向用户展示待启动的任务节点的任务流图和输入界面,所述任务流图中包括所述待启动的任务节点的所有上游任务节点的标识和依赖关系。
其中,所述的方法还包括:
检测到用户在所述输入界面中输入所述待启动的任务节点的若干上游根任务节点的标识,建立所述新建的虚拟任务节点与所述待启动的任务节点的若干上游根任务节点的关联关系。
其中,所述的方法还包括:
检测到用户点击所述新建的虚拟任务节点的启动按钮,将与所述新建的虚拟任务节点关联的若干上游根任务节点作为一个执行单位,创建一个任务执行进程进行整体调度。
其中,所述的方法还包括:
分别确定所述若干上游根任务节点到所述待启动的任务节点的叶子节点路径;
根据每个叶子节点路径上各上游任务节点的执行顺序调度各上游任务节点执行任务;
当每个叶子节点路径上任务节点的任务执行完毕之后,将每个叶子节点路径的任务执行结果输出给所述待启动的任务节点进行任务执行。
本发明还提供一种数据仓库中任务的调度装置,位于数据仓库调度系统中,当用户需要批量启动某一批任务节点时,数据仓库调度系统包括:
接收模块,用于接收用户输入的新建虚拟任务节点的操作;
所述接收模块,还用于接收用户输入的将所述新建的虚拟任务节点与所述批量启动的某一批任务节点关联的操作;
调度模块,用于当所述新建的虚拟任务节点启动后,所述数据仓库调度系统从所述新建的虚拟任务节点开始,根据所述批量启动的某一批任务节点的叶子节点路径上各任务节点的执行顺序调度各任务节点执行任务;
输出模块,用于当各任务节点执行完任务后,输出所述批量启动的某一批任务节点的执行结果给用户。
其中,所述的装置还包括:
展示模块,用于在检测到用户点击新建虚拟任务节点的按钮,向用户展示待启动的任务节点的任务流图和输入界面,所述任务流图中包括所述待启动的任务节点的所有上游任务节点的标识和依赖关系。
其中,所述的装置还包括:
关联模块具体用于:在检测到用户在所述输入界面中输入所述待启动的任务节点的若干上游根任务节点的标识,建立所述新建的虚拟任务节点与所述待启动的任务节点的若干上游根任务节点的关联关系。
其中,所述的装置还包括:
启动模块具体用于:检测到用户点击所述新建的虚拟任务节点的启动按钮,将与所述新建的虚拟任务节点关联的若干上游根任务节点作为一个执行单位,创建一个任务执行进程进行整体调度。
其中,所述调度模块具体用于:分别确定所述若干上游根任务节点到所述待启动的任务节点的叶子节点路径;根据每个叶子节点路径上各上游任务节点的执行顺序调度各上游任务节点执行任务;当每个叶子节点路径上任务节点的任务执行完毕之后,将每个叶子节点路径的任务执行结果输出给所述待启动的任务节点进行任务执行。
本发明实施例中,当用户需要批量启动某一批任务节点时,可以向用户展示该某一批任务节点的任务流图,以便用户新建虚拟任务节点并关联所述批量启动的某一批任务节点,当用户启动该新建虚拟任务节点,即可将所述批量启动的某一批任务节点进行整体调度,并从所述新建的虚拟任务节点至所述批量启动的某一批任务节点的叶子节点路径上各任务节点的执行顺序调度各任务节点执行任务,当所有任务节点执行完任务后,输出所述批量启动的某一批任务节点的执行结果给用户。本发明的技术方案使得所有任务节点的总执行时间得到了尽可能的短,提升任务调度的效率,也使得系统的资源利用率尽可能提高。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
数据仓库是一个为决策者提供联机分析处理(如决策支持、数据挖掘)所需要信息的仓储,它是面向主题的、集成的、随时间改变的、持久的数据集合,主要用于支持经营管理中的决策制定多工程。数据仓库中的数据是按主题组织的,具有不同的粒度级别,并支持多种前端分析应用。因此,数据仓库中的处理过程众多,包括建立数据仓库的数据抽取、转换、加载、数据集市生成、数据立方生成过程,数据仓库管理的更新、归档过程以及应用报表生成程序等。对于企业级数据仓库系统,其中的处理程序成千上万,如何有效率地调度和管理这些处理任务是数据仓库管理中非常重要的工作,也是提高数据仓库性能和资源利用率的关键。
图1为一种数据仓库的任务流的示意图,如图1所示,数据仓库中的各种任务处理过程以及任务之间的相互依赖关系构成了一个有向图,其中,每个任务的运行依赖的顺序如箭头所示。例如,数据仓库在回溯Z任务的数据时,在现有技术中,数据仓库管理员会先把A/C这两个任务分别手工启动起来,等待这两个任务运行完成后,再启动E任务。启动A/C任务之后再手工启动B/F/I/G任务、D/H任务、K任务,当B任务运行完成后F/I两个任务会自动运行,而G/J两个任务需要数据仓库管理员手工启动。待Z任务以上所有任务按依赖顺序完成之后,最后运行Z任务。这中间的过程都需要数据仓库管理员手工启动任务,并且需要实时关注任务的运行状况再决定下一步任务何时开始。但是,数据仓库系统中作业的数量巨大,完全由数据仓库管理员手工安排是不现实的,即使可以安排,也是粒度很粗的安排,启动任务效率低且容易出错。
因此,需要研究在满足某种要求前提下的数据仓库中任务的自动调度策略。为此,本发明申请提供基于任务流的思想和方法来完成任务流的调度。
在进行本发明申请的任务流调度的说明之前,首先明确几个与数据仓库任务调度相关的基本概念。
任务:一个任务是一个在特定环境下运行的一个程序或命令,也称为作业。一个任务有很多描述其调度和执行需求的属性。任务调度系统利用任务的属性和系统的资源信息以及调度策略,决定何时何地如何运行一个任务,在一个实际数据仓库系统中,一个任务可以是一个数据集的抽取程序或一个报表的生成程序等。
任务调度:就是按照一定的策略将任务按照他们之间的依赖关系先后调度执行的过程。
任务依赖:描述了在一个任务流中任务执行的顺序,一个任务T1依赖于另一个任务T2达到某种状态或满足某种条件时,才能开始执行,称任务T1依赖于T2,称T2为T1的前导任务上游任务。一个任务只有在它的所有前导任务上游任务都运行结束之后才能开始执行。在数据仓库中,任务间的依赖关系体现在,一个任务的前导任务上游任务的输出(数据集)是该任务的输入。很多情况下,一个任务可能需要多个数据集作为输入。
如图1所示,一个任务的所有前导任务上游任务之间的关系是“与”关系,即只有一个任务的所有前导任务上游任务都完成,它才可以开始执行。在数据仓库环境下,任务流具有动态性,这体现在两个方面,一方面是随着数据仓库系统中应用数量的改变,任务流中的任务数和任务的连接关系在动态的改变;另一方面,任务流中各任务的估计执行时间在改变,这是因为随着时间的推移,数据源不断有新数据到达,各个任务处理的数据量在动态的变化,因而各个任务的执行时间在动态的变化。
任务调度问题的关键是如何找出数据仓库及其应用中任务之间的时序关系,并按照一定的策略选择一批任务投入运行,使得所有任务的执行所占CPU的时间尽可能短,并能够监视和控制任务的执行。
本发明申请衡量任务调度的指标是使得所有任务的总的周转时间尽可能短,所谓一批任务的周转时间是指从他们开始运行到全部运行结束所经历的时间。
根据图1中的任务流图中描述的任务间的时序关系,控制对任务的排序,对任务进行合理分批,目标是使得系统的资源利用率尽可能提高。
本发明技术方案的思想是:由于所有待调度的任务是可以预先知道的,因此调度执行也具有相对的稳定性;具体方法:在每一次调度任务时,寻找任务流图中的叶子节点路径,将具有同一个叶子节点路径内部的任务进行拓扑排序,一个叶子节点路径作为一个执行单位整体进行调度,排序在前的任务先执行,排序在后的任务后执行。
图2为本发明实施例提供的一种数据仓库中任务的调度方法的流程图;位于数据仓库调度系统中执行,当用户需要批量启动某一批任务节点时,数据仓库调度系统根据用户的输入信息执行如图2所示的步骤:
201、接收用户输入的新建虚拟任务节点的操作;
具体地步骤201在实现时包括:
检测到用户点击新建虚拟任务节点的按钮,向用户展示待启动的任务节点的任务流图和输入界面,所述任务流图中包括所述待启动的任务节点的所有上游任务节点的标识和依赖关系。
202、接收用户输入的将所述新建的虚拟任务节点与所述批量启动的某一批任务节点关联的操作;
基于步骤201中展示的任务流图和输入界面,步骤202在具体实现时:
检测到用户在所述输入界面中输入所述待启动的任务节点的若干上游根任务节点的标识,建立所述新建的虚拟任务节点与所述待启动的任务节点的若干上游根任务节点的关联关系。
203、当所述新建的虚拟任务节点启动后,所述数据仓库调度系统从所述新建的虚拟任务节点开始至所述批量启动的某一批任务节点的叶子节点路径上各任务节点的执行顺序调度各任务节点执行任务;
具体地步骤203在实现时包括:
检测到用户点击所述新建的虚拟任务节点的启动按钮,将与所述新建的虚拟任务节点关联的若干上游根任务节点作为一个执行单位,创建一个任务执行进程进行整体调度;
分别确定所述若干上游根任务节点到所述待启动的任务节点的叶子节点路径;
根据每个叶子节点路径上各上游任务节点的执行顺序调度各上游任务节点执行任务。
204、当各任务节点执行完任务后,输出所述批量启动的某一批任务节点的执行结果给用户;
具体地步骤204在实现时包括:
当每个叶子节点路径上任务节点的任务执行完毕之后,将每个叶子节点路径的任务执行结果输出给所述待启动的任务节点进行任务执行,并将所述待启动的任务节点的任务执行结果给用户,即为所述批量启动的某一批任务节点的执行结果。
本发明实施例中,当用户需要批量启动某一批任务节点时,可以向用户展示该某一批任务节点的任务流图,以便用户新建虚拟任务节点并关联所述批量启动的某一批任务节点,当用户启动该新建虚拟任务节点,即可将所述批量启动的某一批任务节点进行整体调度,并从所述新建的虚拟任务节点至所述批量启动的某一批任务节点的叶子节点路径上各任务节点的执行顺序调度各任务节点执行任务,当所有任务节点执行完任务后,输出所述批量启动的某一批任务节点的执行结果给用户。本发明的技术方案使得所有任务节点的总执行时间得到了尽可能的短,提升任务调度的效率,也使得系统的资源利用率尽可能提高。
图3为本发明实施例提供的一种数据仓库中任务的调度方法的流程图;位于数据仓库调度系统中执行,如图3所示,包括:
301、检测到客户端发送的创建虚拟任务节点的操作请求;
其中,所述创建虚拟任务节点的操作请求中包括待启动的任务节点的标识和与所述待启动的任务节点具有依赖关系的所有上游任务节点的标识;
在实际应用中,举例来说,当需要启动某一任务节点的时候,用户通过客户端点击虚拟节点添加按钮即可触发创建虚拟任务节点的操作请求,此时,客户端弹出一个对话框,用户可以在客户端弹出的对话框中添加关联节点的信息,其中,关联节点是与待启动的任务节点具有依赖关系的所有上游任务节点。当用户在对话框中添加关联节点的信息(上游任务节点的标识)之后向任务调度系统发送创建虚拟任务节点的操作请求。
需要说明的是,本实施例中,上述关联节点的信息(上游任务节点的标识)的获取方式例如包括:
根据所述待启动的任务节点的标识,获取所述待启动的任务节点的任务配置信息;
根据所述任务配置信息中包括的依赖关系信息,确定与所述待启动的任务节点具有依赖关系的所有上游任务节点的标识。
302、根据与所述待启动的任务节点具有依赖关系的所有上游任务节点的标识,将所述虚拟任务节点与所有上游任务节点进行关联操作;
步骤302具体实现时例如包括:
根据与所述待启动的任务节点具有依赖关系的所有上游任务节点的标识,获取每个上游任务节点的任务配置信息;
根据每个上游任务节点的任务配置信息中包括的任务执行顺序信息,确定每个上游任务节点的任务执行顺序;
在所述虚拟任务节点中标记每个上游任务节点的任务执行顺序,对所有上游任务节点进行拓扑排序,得到所有上游任务节点的拓扑序列。
303、启动所述虚拟任务节点,执行所述虚拟任务节点关联的所有上游任务节点的任务;
步骤303具体实现时例如包括:
将所有上游任务节点所述任务子集对应的拓扑序列作为一个执行单位,创建一个任务执行进程进行整体调度,并根据拓扑序列中的任务执行顺序执行对应的任务。
304、在所有上游任务节点执行完任务后输出给所述待启动的任务节点执行任务并输出执行结果。
需要说明的是,上述任务节点的任务配置信息的获取方式例如包括:
通过存储有任务及其任务配置信息的任务元数据管理器提供的应用程序接口获取任务节点对应的任务配置信息;或者
通过预设的任务列表中获取任务节点对应的任务配置信息;或者
通过客户端提供的新增任务的应用程序接口,获取任务节点对应的任务配置信息。
本发明实施例根据待启动任务节点对应的任务配置信息,确定与其存在任务依赖关系的所有上游任务节点;在所有上游任务节点之前添加虚拟任务节点,将该虚拟任务节点和所有上游任务节点进行关联,之后,启动虚拟任务节点,将所有上游任务节点整体调度,按执行顺序执行每一个任务;由于本发明实施例在每一次调度任务时,寻找该任务的叶子节点路径,将具有同一个叶子节点路径内部的任务进行拓扑排序,一个叶子节点路径作为一个执行单位整体进行调度,排序在前的任务先执行,排序在后的任务后执行,使得所有任务集的总的执行时间得到了尽可能的短,因此可以提升任务调度的效率,也使得系统的资源利用率尽可能提高。
下面通过具体的实现方式对本发明所述的技术方案进行详细的说明。
图4为本发明实施例采用的一种数据仓库调度系统的架构图,如图4所示,数据仓库管理员通过任务登记器登记每个任务的编号和存放的物理路径等任务配置信息,这些任务配置信息存放在元数据管理器中,任务登记器根据这些任务配置信息,对任务的源码进行扫描,得到每个任务的输入数据集和输出数据集,扫描结束,启动任务流生成器,任务流生成器根据任务登记器提供的信息,得到每个任务的上游任务和后继任务,生成该数据仓库系统中任务集的任务流图,假设生成的任务流图如图1所示。
基于图4数据仓库系统生成的如图1所示的任务流图,例如可以采集Static Schedule的任务调度算法,图5为本发明实施例提供的一种数据仓库中任务的调度方法的流程图,假设需要回溯任务节点Z的任务,如图5所示,具体方法包括:
401、用户点击新建虚拟任务节点的按钮;
402、向用户展示待启动的任务节点Z的任务流程图和输入界面;
根据展示的任务流图,找出与任务节点Z具有依赖关系的所有上游任务节点;
如图1所示的任务流图,例如,有编号分别为A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、Z共15个任务节点,它们之间的依赖关系如图1所示,其中,任务节点A/B/C/D/K/E/F/G/H/I/J是任务节点Z所有的上游任务节点,其中,任务节点A/B/C/D/K为任务节点Z的上游根任务节点。
403、用户在输入界面中输入任务节点Z的上游根任务节点。
即用户在输入界面中输入的任务节点A/B/C/D/K。
404、创建虚拟任务节点V,将虚拟任务节点V与任务节点A/B/C/D/K进行关联。
图6本发明实施例新增虚拟任务后的任务流图,如图6所示,具体地,在任务节点Z的所有上游根任务节点A/B/C/D/K之前创建虚拟任务节点V,并标记虚拟任务节点V与任务节点A/B/C/D/K关联。
虚拟任务节点V也是数据仓库的任务节点,但是虚拟任务节点V不承担任何计算逻辑,只标记任务节点之间运行的依赖关系。虚拟任务节点作为实际任务节点的上游任务节点,实际任务节点都依赖于该虚拟任务节点。
405、用户点击启动虚拟任务节点V的按钮。
406、整体调度与虚拟任务节点V关联的任务节点A/B/C/D/K。
407、确定从任务节点A/B/C/D/K到任务节点Z的所有叶子节点路径。
如图6所示,从任务节点A/B/C/D/K到任务节点Z之间总共有7个叶子节点路径。
408、根据每个叶子节点路径中各任务节点的执行顺序执行任务。
具体地,对任务节点Z的每个叶子节点路径中的各上游任务节点进行拓扑排序,得到对应的拓扑序列,根据对应的拓扑序列,运行的顺序会自动按照拓扑序列中的依赖关系依次运行下去。
409、将每个叶子节点路径的任务执行结果输出给任务节点Z进行任务执行。
410、向用户输出任务节点Z的任务执行结果。
本发明实施例根据待启动的任务节点Z,创建虚拟任务节点,该创建的虚拟任务节点可以关联任务节点Z的所有上游根任务节点,从而启动虚拟任务节点整体调度上游根任务节点,并按照该创建的虚拟任务节点到任务节点Z之间的各叶子节点路径中各上游任务节点之间的依赖关系以及时序关系,对任务进行科学合理的分批和排序,使得所有任务集的总的执行时间得到了尽可能的短,因此可以提升任务调度的效率,也使得系统的资源利用率尽可能提高;同时,本发明只基于任务流图的连通性和拓扑结构进行调度执行,调度简单,执行的拓扑序列在执行前便已经确定,不需要修改任务列表,调度开销小。
图7为本发明实施例提供的一种数据仓库中任务的调度装置的结构图,位于数据仓库调度系统中,当用户需要批量启动某一批任务节点时,数据仓库调度系统如图7所示包括:
接收模块71,用于接收用户输入的新建虚拟任务节点的操作;
所述接收模块71,还用于接收用户输入的将所述新建的虚拟任务节点与所述批量启动的某一批任务节点关联的操作;
调度模块72,用于当所述新建的虚拟任务节点启动后,所述数据仓库调度系统从所述新建的虚拟任务节点开始,根据所述批量启动的某一批任务节点的叶子节点路径上各任务节点的执行顺序调度各任务节点执行任务;
输出模块73,用于当各任务节点执行完任务后,输出所述批量启动的某一批任务节点的执行结果给用户。
其中,所述的装置还包括:
展示模块74,用于在检测到用户点击新建虚拟任务节点的按钮,向用户展示待启动的任务节点的任务流图和输入界面,所述任务流图中包括所述待启动的任务节点的所有上游任务节点的标识和依赖关系。
关联模块75具体用于:在检测到用户在所述输入界面中输入所述待启动的任务节点的若干上游根任务节点的标识,建立所述新建的虚拟任务节点与所述待启动的任务节点的若干上游根任务节点的关联关系。
启动模块76具体用于:
检测到用户点击所述新建的虚拟任务节点的启动按钮,将与所述新建的虚拟任务节点关联的若干上游根任务节点作为一个执行单位,创建一个任务执行进程进行整体调度。
调度模块72具体用于:
分别确定所述若干上游根任务节点到所述待启动的任务节点的叶子节点路径;根据每个叶子节点路径上各上游任务节点的执行顺序调度各上游任务节点执行任务;当每个叶子节点路径上任务节点的任务执行完毕之后,将每个叶子节点路径的任务执行结果输出给所述待启动的任务节点进行任务执行。
图7所示装置可以执行图2、图3和图5所示实施例所述的调度方法,其实现原理和技术效果不再赘述。
上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。