为ETL任务分配节点的方法和调度系统转让专利

申请号 : CN201010157778.5

文献号 : CN102236580B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨柏刚蒋延辉刘敏戌

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请实施例公开了一种为ETL任务分配节点的方法,包括:调度系统查询数据库中存储的ETL任务中是否存在当前能够运行的ETL任务;如果存在,则从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务;所述调度系统判断是否存在专用于运行所述选择的ETL任务的节点;如果存在,则所述调度系统命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,所述调度系统从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,命令选择的节点运行所述选择的ETL任务,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。本申请实施例还提供了一种调度系统。

权利要求 :

1.一种为抽取-转换-加载ETL任务分配节点的方法,其特征在于,适用于包括调度系统、用于运行ETL任务的节点和数据库的数据仓库系统,所述数据库中存储的多个ETL任务中的每个都对应一个优先级,当前至少有一组节点专用于运行当前最高优先级的ETL任务,所述方法包括:所述调度系统查询所述数据库中存储的ETL任务中是否存在当前能够运行的ETL任务,所述当前能够运行的ETL任务是指所有的父任务都运行完成的ETL任务;

如果存在,则从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务;

所述调度系统判断是否存在专用于运行所述选择的ETL任务的节点;

如果存在,则所述调度系统命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,所述调度系统从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,命令选择的节点运行所述选择的ETL任务,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。

2.如权利要求1所述的方法,其特征在于,从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务具体为:从当前能够运行的ETL任务中选择一个优先级最高的ETL任务。

3.如权利要求1所述的方法,其特征在于,在所述调度系统查询所述数据库中存储的所有ETL任务中是否存在当前能够运行的ETL任务之前,还包括:所述调度系统确定当前有一个节点能够运行ETL任务;

从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务具体为:从当前能够运行的ETL任务中选择一个优先级最高的ETL任务;

在所述调度系统从当前能够运行的ETL任务中选择一个优先级最高的ETL任务之后,所述方法还包括:所述调度系统命令所述能够运行ETL任务的节点运行所述选择的优先级最高的ETL任务。

4.如权利要求1所述的方法,其特征在于,还包括:如果所述数据库中存储的一个优先级的ETL任务的数量少于当前专用于运行所述优先级的ETL任务的节点的数量,则所述当前专用于运行所述优先级的ETL任务的节点还用于运行比所述优先级的ETL任务的优先级低的ETL任务。

5.如权利要求1-4任意一项所述的方法,其特征在于,所有ETL任务的优先级分为最高优先级、中间优先级和最低优先级;

如果所述数据库中存储的所有ETL任务中包括所有优先级的ETL任务,则至少有一组专用于运行最高优先级的ETL任务的节点,至少有一组专用于运行中间优先级的ETL任务的节点,最低优先级的ETL任务没有专用的节点运行。

6.如权利要求1-4任意一项所述的方法,其特征在于,所述数据库中存储的每个ETL任务都对应一个优先级标识,每个节点都对应一个优先级标识,所述优先级标识用于表示ETL任务对应的优先级;

所述调度系统按照下述方式判断是否存在专用于运行所述选择的ETL任务的节点:

所述调度系统查找所述选择的ETL任务对应的优先级标识;

所述调度系统根据查找到的所述选择的ETL任务对应的优先级标识,判断是否存在与所述选择的ETL任务对应的优先级标识对应的节点。

7.一种调度系统,其特征在于,适用于包括调度系统、用于运行ETL任务的节点和数据库的数据仓库系统,所述数据库中存储的多个ETL任务中的每个都对应一个优先级,当前至少有一组节点专用于运行当前最高优先级的ETL任务,所述调度系统包括:查询单元,用于查询信息;

选择单元,用于从多个ETL任务中选择一个ETL任务,从多个节点中选择一个节点;

命令单元,用于命令节点运行ETL任务;

其中,所述查询单元具体用于查询所述数据库中存储的ETL任务中是否存在当前能够运行的ETL任务;如果存在,则所述选择单元从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务,所述当前能够运行的ETL任务是指所有的父任务都运行完成的ETL任务;所述查询单元查询是否存在专用于运行所述选择的ETL任务的节点;如果存在,则所述命令单元命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,所述选择单元从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,所述命令单元命令选择的节点运行所述选择的ETL任务,其中,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。

8.如权利要求7所述的调度系统,其特征在于,所述选择单元具体用于从当前能够运行的ETL任务中选择一个优先级最高的ETL任务。

9.如权利要求7所述的调度系统,其特征在于,所述查询单元查询所述数据库中存储的所有ETL任务中是否存在当前能够运行的ETL任务之前,确定当前有一个节点能够运行ETL任务;

所述选择单元具体用于从当前能够运行的ETL任务中选择一个优先级最高的ETL任务;

在所述选择单元从当前能够运行的ETL任务中选择一个优先级最高的ETL任务之后,所述命令单元命令所述能够运行ETL任务的节点运行所述选择单元选择的优先级最高的ETL任务。

10.如权利要求7所述的调度系统,其特征在于,如果所述数据库中存储的一个优先级的ETL任务的数量少于当前专用于运行所述优先级的ETL任务的节点的数量,则所述当前专用于运行所述优先级的ETL任务的节点还用于运行比所述优先级的ETL任务的优先级低的ETL任务。

11.如权利要求7-10任意一项所述的调度系统,其特征在于,所有ETL任务的优先级分为最高优先级、中间优先级和最低优先级;

如果所述数据库中存储的所有ETL任务中包括所有优先级的ETL任务,则至少有一组专用于运行最高优先级的ETL任务的节点,至少有一组专用于运行中间优先级的ETL任务的节点,最低优先级的ETL任务没有专用的节点运行。

12.如权利要求7-10任意一项所述的调度系统,其特征在于,所述数据库中存储的每个ETL任务都对应一个优先级标识,每个节点都对应一个优先级标识,所述优先级标识用于表示ETL任务对应的优先级;

所述查询单元具体用于查找所述选择单元选择的ETL任务对应的优先级标识,并根据查找到的所述选择单元选择的ETL任务对应的优先级标识,查询是否存在与所述选择单元选择的ETL任务对应的优先级标识对应的节点。

说明书 :

为ETL任务分配节点的方法和调度系统

技术领域

[0001] 本申请涉及网络技术,尤其涉及为抽取-转换-加载(ETL,Extraction-Transformation-Loading)任务分配节点的方法和调度系统。

背景技术

[0002] 通常,一个数据仓库系统每晚需要运行大量的ETL任务。有些ETL任务耗用的资源多、有些ETL任务耗用的资源少。有些ETL任务需要优先运行,有些ETL任务则没这种要求。有些ETL任务的父任务少,所以这些ETL任务很快就可以启动运行,而有些ETL任务的父任务很多,这样,这些ETL任务需要等待一段时间后才能启动运行。
[0003] 在对现有技术的研究和实践过程中,发明人发现现有技术中存在以下问题:在实际应用中,经常会发生这样的情形,即,一些最重要的ETL任务的父任务很多,等到这些最重要的ETL任务的父任务运行完之后,才能轮到这些最重要的ETL任务启动运行,而一些最不重要的ETL任务的父任务很少,很快就可以启动运行。这种情况下,最重要的ETL任务一般都要在最不重要的ETL任务启动运行之后才启动运行。而由于最不重要的ETL任务先启动运行而占用了数据仓库系统的一些资源,并且,数据仓库系统的资源是有限的,所以,即使重要的ETL任务的父任务已经运行完,重要的ETL任务也可能会因为数据仓库系统没有足够的资源而延迟启动运行,进而导致重要的ETL任务得不到及时处理。

发明内容

[0004] 本申请实施例的目的是提供为ETL任务分配节点的方法和调度系统,以解决现有技术中的重要的ETL任务经常会得不到及时处理的问题。
[0005] 为解决上述技术问题,本申请实施例提供了为ETL任务分配节点的方法,这种方法适用于包括调度系统、用于运行ETL任务的节点和数据库的数据仓库系统,所述数据库中存储的多个ETL任务中的每个都对应一个优先级,当前至少有一组节点专用于运行当前最高优先级的ETL任务,这种方法包括:所述调度系统查询所述数据库中存储的ETL任务中是否存在当前能够运行的ETL任务;如果存在,则从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务;所述调度系统判断是否存在专用于运行所述选择的ETL任务的节点;如果存在,则所述调度系统命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,所述调度系统从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,命令选择的节点运行所述选择的ETL任务,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。
[0006] 此外,本申请实施例还提供了一种调度系统,这种调度系统适用于包括调度系统、用于运行ETL任务的节点和数据库的数据仓库系统,所述数据库中存储的多个ETL任务中的每个都对应一个优先级,当前至少有一组节点专用于运行当前最高优先级的ETL任务,所述调度系统包括:查询单元,用于查询信息;选择单元,用于从多个ETL任务中选择一个ETL任务,从多个节点中选择一个节点;命令单元,用于命令节点运行ETL任务;其中,所述查询单元具体用于查询所述数据库中存储的ETL任务中是否存在当前能够运行的ETL任务;如果存在,则所述选择单元从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务;所述查询单元查询是否存在专用于运行所述选择的ETL任务的节点;如果存在,则所述命令单元命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,所述选择单元从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,所述命令单元命令选择的节点运行所述选择的ETL任务;其中,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。
[0007] 可见,本申请实施例中,可以由专用的节点运行优先级高的ETL任务,即使当前没有专用的节点可以运行优先级高的ETL任务,也可以从专用于运行优先级低的ETL任务的节点中选择节点来运行优先级高的ETL任务,这样,在需要运行重要的ETL任务时,始终能够找到节点来运行重要的ETL任务,保证了重要的ETL任务能够及时得到处理。

附图说明

[0008] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0009] 图1为本申请实施例的数据仓库系统的逻辑结构示意图;
[0010] 图2为本申请实施例的一种为ETL任务分配节点的方法的流程图;
[0011] 图3为本申请实施例的一种调度系统的逻辑结构示意图。

具体实施方式

[0012] 本申请实施例提供为ETL任务分配节点的方法和调度系统。
[0013] 为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
[0014] 首先介绍本申请实施例所应用的网络环境。本申请实施例所应用的网络环境是指数据仓库系统。如图1所示,数据仓库系统包括调度系统101、用于运行ETL任务的节点102和数据库103,节点102可以由服务器来实现。数据库103中可以预先存储ETL任务,节点102可以从数据库103中获得并运行ETL任务。调度系统101可以为数据库103存储的ETL任务分配节点102。
[0015] 需要说明的是,数据库103中存储的每个ETL任务都可以对应一个优先级,这个优先级可以用于表示ETL任务的优先运行级别。例如,可以将所有ETL任务的优先级分为最高优先级、中间优先级和最低优先级,每个ETL任务都对应其中的一个优先级。在具体实现时,数据库103中可以存储一个列表,列表中记录有存储的每个ETL任务对应的优先级,优先级可以用优先级标识来表示,随着存储的ETL任务的增加和删除,可以实时更新这个列表。
[0016] 需要说明的是,在实际实现时,当前最好至少有一组节点专用于运行当前最高优先级的ETL任务。例如,假设将所有ETL任务的优先级分为最高优先级、中间优先级和最低优先级,并且假设数据库103中当前存储有最高优先级的ETL任务,那么至少有一组节点只能运行最高优先级的ETL任务,而不能运行中间优先级和最低优先级的ETL任务。在具体实现时,调度系统也可以存储有一个列表,列表中记录有每个节点当前对应的优先级,优先级可以用优先级标识来表示。每个节点对应的优先级都可以由调度系统来设置。在实际应用中,有的节点对应的优先级有可能会被改变,所以,调度系统可以实时更新这个列表。
[0017] 下面再介绍本发明涉及的一些专业知识。
[0018] 数据仓库是一个面向主题的、集成的、不可更新的、随时间不断变化的数据集合,它用于支持企业或组织的决策分析处理。数据仓库通常用于存储企业的历史数据,并通过ETL过程,产生企业报表等。
[0019] ETL是指将分布的、异构数据源中的数据(例如关系数据、平面数据文件)等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库中,成为企业报表、联机分析处理、数据挖掘的基础。ETL任务一般在夜间运行,处理企业的大批量数据,形成关键运营指标(KPI,Key Performance Indication)装载到报表中。
[0020] 数据源是指ETL运算某个任务所需要的源头数据,有时是生产数据库的数据,有时是另外一个ETL程序所产生的数据。
[0021] 生产数据库是企业的日间营业活动所使用的数据库,是数据仓库最大的数据源。
[0022] 一个ELT任务可以有至少一个父任务。父任务是指产生某个数据源的ETL任务,对一个ETL任务来说,只有其所有的父任务(数据源)都运行完成时,这个ETL任务才可以开始运行。
[0023] 一个ELT任务也可以有至少一个子任务。子任务是指以某父任务作为数据源的ETL任务。
[0024] 下面介绍本申请的一种为ETL任务分配节点的方法的实施例,如图2所示,这种方法包括:
[0025] S201:调度系统查询数据库中存储的ETL任务中是否存在当前能够运行的ETL任务。
[0026] 调度系统和所有的节点可以共享数据库,或者说,调度系统和所有的节点都可以访问数据库。数据库中存储有ETL任务,调度系统可以在数据库中查询数据库中存储的ETL任务,并可以进一步查询是否存在当前能够运行的ETL任务。当前能够运行的ETL任务可以是指所有的父任务都运行完成的ETL任务。
[0027] 调度系统如果确定数据库中存储的ETL任务中存在当前能够运行的ETL任务,则执行S202,否则,继续执行S201。
[0028] S202:如果存在,则从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务。
[0029] 调度系统如果查询到存在当前能够运行的ETL任务,那么就从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务。作为一种实现方式,调度系统可以从当前能够运行的ETL任务中选择一个优先级最高的ETL任务,这样可以保证优先级高的ETL任务能够得到优先处理。
[0030] S203:所述调度系统判断是否存在专用于运行所述选择的ETL任务的节点。
[0031] 具体的,调度系统可以通过多种方式查询是否存在专用于运行选择的ETL任务的节点。前面提到过,数据库中可以存储有记录ETL任务对应的优先级的列表,调度系统可以存储有记录每个节点对应的优先级的列表。调度系统在选择一个当前能够运行的ETL任务时,可以同时通过数据库中存储的列表查询到选择的ETL任务对应的优先级,之后,调度系统可以以选择的ETL任务对应的优先级为关键词,在调度系统中存储的列表中查询是否存在专用于运行选择的ETL任务对应的优先级所对应的节点,如果存在,则调度系统可以确定存在专用于运行所述选择的ETL任务的节点,否则,调度系统可以确定不存在专用于运行所述选择的ETL任务的节点。
[0032] 在实际应用中,有的节点当前可能正在运行一个ETL任务,这种情况,这样的节点一般不会再运行其他ETL任务。所以,如果调度系统查询到存在多个专用于运行所述选择的ETL任务的节点,那么调度系统可以进一步判断这些专用于运行所述选择的ETL任务的节点中是否存在能够运行选择的ETL任务的节点,能够运行选择的ETL任务的节点可以是指当前没有运行ETL任务的节点。
[0033] 调度系统可以通过多种方式判断专用于运行所述选择的ETL任务的节点中是否存在能够运行选择的ETL任务的节点。
[0034] 例如,调度系统可以在记录每个节点对应的优先级的列表中记录每个节点运行ETL任务的状况信息,每个节点运行ETL任务的状况信息例如是指每个节点当前是否运行ETL任务以及运行哪个ETL任务的信息。当然,每个节点运行ETL任务的状况会发生变化,所以,调度系统需要实时更新列表中的每个节点运行ETL任务的状况信息。当调度系统查询到存在专用于运行所述选择的ETL任务的节点时,调度系统可以在列表中进一步查询专用于运行所述选择的ETL任务的节点中是否存在没有运行ETL任务的节点,如果存在,则调度系统确定专用于运行所述选择的ETL任务的节点中存在能够运行所述选择的ETL任务的节点,否则,调度系统确定专用于运行所述选择的ETL任务的节点中不存在能够运行所述选择的ETL任务的节点。
[0035] 再例如,调度系统可以向所有的专用于运行所述选择的ETL任务的节点发出请求消息,这个请求消息可以携带请求返回当前是否能够运行ETL任务的信息,每个专用于运行所述选择的ETL任务的节点在接收到这个请求消息后,可以向调度系统返回一个应答消息,这个应答消息可以携带自己当前是否能够运行ETL任务的信息,调度系统获得每个专用于运行所述选择的ETL任务的节点返回的应答消息后,就能够确定所有的专用于运行所述选择的ETL任务的节点中是否存在能够运行ETL任务的节点。
[0036] 再例如,每个节点可以间隔性(例如周期性)的主动向调度系统提供自己当前是否能够运行ETL任务的信息,调度系统获得这些信息后,记录或更新这些信息。这样,调度系统通过记录的上述信息就可以确定专用于运行所述选择的ETL任务的节点中是否存在能够运行ETL任务的节点。
[0037] 再例如,每个节点可以在自身状态发生变化时主动的向调度系统提供自己当前是否能够运行ETL任务的信息,具体来说,一个节点在开始运行一个ETL任务后,可以主动的向调度系统提供自己当前不能再运行ETL任务的信息,当这个节点运行完这个ETL任务后,可以主动的向调度系统提供自己当前能够运行ETL任务的信息。调度系统获得这些信息后,记录或更新这些信息。这样,调度系统通过记录的上述信息就可以确定专用于运行所述选择的ETL任务的节点中是否存在能够运行ETL任务的节点。
[0038] 当然,调度系统还可以通过其他方式确定所有的专用于运行所述选择的ETL任务的节点中是否存在能够运行ETL任务的节点,这里不再一一举例说明。
[0039] S204:如果存在,则所述调度系统命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,所述调度系统从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,命令选择的节点运行所述选择的ETL任务,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。
[0040] 具体的,调度系统如果确定存在多个专用于运行所述选择的ETL任务并且当前能够运行ETL任务的节点,则可以从这些节点中选择一个节点,命令选择的节点运行所述选择的ETL任务。选择节点时,可以随机选择,也可以按照一定的策略来选择,例如,按照节点的编号顺序选择。
[0041] 调度系统如果确定不存在多个专用于运行所述选择的ETL任务的节点,则可以从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,之后,命令选择的节点运行所述选择的ETL任务,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。例如,假设所有的ETL任务分为最高优先级、中间优先级和最低优先级三个级别,数据仓库系统中共有20个节点,其中的一部分节点专用于运行最高优先级的ETL任务,一部分节点专用于运行中间优先级的ETL任务,剩余的一部分节点可以运行任何一个优先级的ETL任务。再假设调度系统选择的ETL任务对应的优先级是最高优先级,如果此时专用于运行最高优先级的ETL任务的节点当前都在运行ETL任务,那么调度系统可以确定当前不存在专用于运行所述选择的ETL任务的节点,这种情况下,调度系统可以查询专用于运行中间优先级的ETL任务的节点和可以运行任何一个优先级的ETL任务的节点中是否存在当前能够运行ETL任务的节点,如果存在,则从中选择一个节点运行所述选择的ETL任务。简单来说,高优先级的ETL任务可以抢占低优先级对应的节点和可以运行任何一个优先级的ETL任务的节点。
[0042] 调度系统可以通过多种方式命令一个节点运行ETL任务。例如,调度系统可以向这个节点发出命令,这个命令携带有需要这个节点运行的ETL任务的信息,ETL任务的信息例如是ETL任务的标识。这个节点接收到这个命令后,可以访问数据库,从数据库中获得需要运行的ETL任务,这个节点获得这个ETL任务后,运行这个ETL任务。当然,调度系统还可以通过其他方式命令一个节点运行ETL任务,这里不再赘述。
[0043] 在实际应用中,在执行S201之前,调度系统可以首先确定当前有一个节点能够运行ETL任务,确定当前能够运行ETL任务的实现方式可以参照前面的描述,这里不再赘述。确定当前有一个节点能够运行ETL任务后,执行S201,即,查询数据库中存储的ETL任务中是否存在当前能够运行的ETL任务,如果存在,则可以从当前能够运行的ETL任务中选择一个优先级最高的ETL任务,之后,命令之前确定的能够运行ETL任务的节点运行所述选择的优先级最高的ETL任务。在实际应用中,如果数据库中存储的一个优先级的ETL任务的数量少于当前专用于运行所述优先级的ETL任务的节点的数量,那么所述当前专用于运行所述优先级的ETL任务的节点还用于运行比所述优先级的ETL任务的优先级低的ETL任务。
也就是说,当专用于运行某个优先级的ETL任务的节点比较多时,专用于运行这个优先级的ETL任务的节点可以不再只运行这个优先级的ETL任务,而是还可以运行优先级比这个优先级低的ETL任务。在本发明中,将高优先级对应的节点设置为还对应低优先级的方式称为资源释放。
[0044] 前面提到过,优先级可以用优先级标识来表示,所以,数据库中存储的每个ETL任务都对应一个优先级标识,每个节点都对应一个优先级标识,所述优先级标识用于表示ETL任务对应的优先级。调度系统可以按照下述方式判断是否存在专用于运行选择的ETL任务的节点:调度系统查找所述选择的ETL任务对应的优先级标识,根据查找到的所述选择的ETL任务对应的优先级标识,判断是否存在与所述选择的ETL任务对应的优先级标识对应的节点。
[0045] 前面提到过,在本发明中,所有ETL任务的优先级可以分为最高优先级、中间优先级和最低优先级。这种情况下,如果数据库中存储的所有ETL任务中包括所有优先级的ETL任务,那么至少有一组专用于运行最高优先级的ETL任务的节点,至少有一组专用于运行中间优先级的ETL任务的节点,最低优先级的ETL任务可以没有专用的节点运行。
[0046] 与上述的为ETL任务分配节点的方法相对应,本发明还提供一种调度系统。如图3所示,这种调度系统包括:查询单元301,用于查询信息;选择单元302,用于从多个ETL任务中选择一个ETL任务,从多个节点中选择一个节点;命令单元303,用于命令节点运行ETL任务;其中,查询单元301具体用于查询数据库中存储的ETL任务中是否存在当前能够运行的ETL任务;如果存在,则选择单元302从当前能够运行的ETL任务中选择一个当前能够运行的ETL任务;查询单元301查询是否存在专用于运行所述选择的ETL任务的节点;如果存在,则命令单元303命令所述专用于运行所述选择的ETL任务的节点运行所述选择的ETL任务,否则,选择单元302从专用于运行优先级低的ETL任务的节点和能够运行所有优先级的ETL任务的节点中选择一个节点,命令单元303命令选择的节点运行所述选择的ETL任务,其中,所述优先级低的ETL任务是指优先级比所述选择的ETL任务低的ETL任务。
[0047] 当前能够运行的ETL任务可以是指所有的父任务都运行完成的ETL任务。
[0048] 选择单元302具体可以用于从当前能够运行的ETL任务中选择一个优先级最高的ETL任务。
[0049] 查询单元301查询所述数据库中存储的ETL任务中是否存在当前能够运行的ETL任务之前,可以确定当前有一个节点能够运行ETL任务。选择单元302具体可以用于从当前能够运行的ETL任务中选择一个优先级最高的ETL任务。在选择单元302从当前能够运行的ETL任务中选择一个优先级最高的ETL任务之后,命令单元303可以命令所述能够运行ETL任务的节点运行选择单元302选择的优先级最高的ETL任务。
[0050] 如果数据库中存储的一个优先级的ETL任务的数量少于当前专用于运行所述优先级的ETL任务的节点的数量,则所述当前专用于运行所述优先级的ETL任务的节点还可以用于运行比所述优先级的ETL任务的优先级低的ETL任务。
[0051] 所有ETL任务的优先级可以分为最高优先级、中间优先级和最低优先级。如果数据库中存储的所有ETL任务中包括所有优先级的ETL任务,则至少有一组专用于运行最高优先级的ETL任务的节点,至少有一组专用于运行中间优先级的ETL任务的节点,最低优先级的ETL任务没有专用的节点运行。
[0052] 数据库中存储的每个ETL任务都可以对应一个优先级标识,每个节点都对应一个优先级标识,所述优先级标识用于表示ETL任务对应的优先级。查询单元301具体可以用于查找选择单元302选择的ETL任务对应的优先级标识,并根据查找到的选择单元302选择的ETL任务对应的优先级标识,查询是否存在与选择单元302选择的ETL任务对应的优先级标识对应的节点。
[0053] 由于图3所示的调度系统与图2所示的方法是对应的,所以,图3所示的调度系统中的各个单元的功能以及各个单元之间的相互配合关系的具体描述可以参见图2所示的方法中的相关描述,这里不再赘述。
[0054] 通过以上的实施方式的描述可知,在本申请实施例中,可以由专用的节点运行优先级高的ETL任务,即使当前没有专用的节点可以运行优先级高的ETL任务,也可以从专用于运行优先级低的ETL任务的节点中选择节点来运行优先级高的ETL任务,这样,在需要运行重要的ETL任务时,始终能够找到节点来运行重要的ETL任务,保证了重要的ETL任务能够及时得到处理。
[0055] 另外,如果高优先级对应的节点足够多时,那么其中的一些节点也可以用于运行低优先级的ETL任务,这样,在保证优先处理高优先级的ETL任务的同时,还可以尽量不影响低优先级的ETL任务的处理。
[0056] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
[0057] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0058] 本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0059] 本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0060] 虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。