CN105893122A - 数据处理作业调度方法、装置及系统 - Google Patents
数据处理作业调度方法、装置及系统 Download PDFInfo
- Publication number
- CN105893122A CN105893122A CN201510526866.0A CN201510526866A CN105893122A CN 105893122 A CN105893122 A CN 105893122A CN 201510526866 A CN201510526866 A CN 201510526866A CN 105893122 A CN105893122 A CN 105893122A
- Authority
- CN
- China
- Prior art keywords
- run
- running status
- data processing
- running
- premise
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Abstract
本发明实施例提供一种数据处理作业调度方法、装置及系统,所述方法包括:获取预先配置的数据处理流程的各个作业之间的依赖关系;初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;响应所述第一更新指令,将不存在前提作业的运行状态更新为可以运行;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。本发明实施例减少作业调度时间,提高了作业调度效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据处理作业调度方法、装置及系统。
背景技术
在进行数据处理的流程中,特别是大数据领域比较复杂的数据处理流程中,通常是将数据处理流程划分为若干作业对数据进行处理。
这些作业之间有的需要依赖其他作业的正确运行结果才能够运行,有的作业之间并无这种依赖关系,可以并发运行。而整个数据处理流程的全部作业均运行成功,数据处理流程才会认为运行成功,如果一个作业依赖的前提作业还未运行或运行失败,该作业即开始执行,则会造成数据错误,数据处理流程也会认为运行失败,因此需要对作业进行有效的调度。
现有技术的一种数据处理作业调度方法中,是由技术人员根据数据处理流程中各个作业之间的依赖关系,首先将各个作业划分多个执行阶段。根据依赖关系可知,这些执行阶段之间存在执行顺序。在进行作业调度时,即按照执行阶段的执行顺序,分阶段的进行作业调度,每一个阶段的作业全部运行成功之后,再调度下一个阶段中的作业执行。比如,假设数据处理流程包括作业A、B、C、D、E,作业A为数据处理流程中的初始作业,作业E为最终的作业,作业B和作业C分别依赖作业A的运行结果,作业D依赖作业B的运行结果,作业E依赖作业C和作业D的执行结果。因此根据各个作业之间的依赖关系,划分的执行阶段为:第一个执行阶段包括作业A;由于作业C分别与作业B和作业D不存在依赖关系,可以放在一个执行阶段并发执行,而作业B和作业D之间存在依赖关系,不能放在一个执行阶段执行,因此第二执行阶段只包括作业B和作业C,作业D划分为第三执行阶段;第四执行阶段即包括作业E。
由上述描述过程可知,现有的数据处理作业调度方法,虽然可以保证作业有序执行,不会造成数据错误,但是分阶段执行这种方式,使得作业调度效率较低,比如上述假设中,作业B和作业D之间存在依赖关系,作业B运行成功之后,作业D即可以运行了,但是按照分阶段执行的方式,作业C若未运行完成,作业D仍无法运行,这就会导致作业调度时间较长,降低了作业调度效率。
发明内容
本发明实施例提供一种数据处理作业调度方法、装置及系统,用以解决现有技术中作业调度时间长,作业调度效率低的技术问题。
本发明实施例提供一种数据处理作业调度方法,包括:
获取预先配置的数据处理流程的各个作业之间的依赖关系;
初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;
响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;
调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
本发明实施例提供一种数据处理作业调度装置,包括:
作业调度模块,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
所述规则确定模块,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
本发明提供一种数据处理作业调度系统,包括至少一个作业调度节点、至少一个规则推理节点以及多个计算节点;
任一个作业调度节点,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;将运行状态为可以运行的作业提供给所述多个计算节点,由至少一个计算节点运行至少一个运行状态为可以运行的作业;根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
任一个规则推理节点,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行;
所述计算节点,用于运行所述作业调度节点提供的运行状态为可以运行的作业。
本发明实施例提供的数据处理作业调度方法、装置及系统,通过规则推导的方式,根据作业之间依赖关系,可以更新各个作业的运行状态,从而存在运行状态为可以运行的作业时,即可以该调度运行状态为可以运行的作业运行。既可以保证存在依赖关系的作业能够有序执行,不会出现数据错误,且当前作业在其前提作业运行成功之后,即可以运行,无需等待,减少了作业调度时间,同时无依赖关系的作业可以并发执行,进一步减少了作业调度时间,提高了作业调度的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明数据处理作业调度方法一实施例的流程图;
图2为本发明提供的DAG(Directed Acyclic Graph,有向无环图)的一种示意图;
图3为本发明数据处理作业调度方法又一实施例流程图;
图4为本发明数据处理作业调度装置一实施例结构示意图;
图5为本发明数据处理作业调度装置又一实施例结构示意图;
图6为本发明数据处理作业调度装置又一实施例结构示意图;
图7为本发明数据处理作业调度系统一实施例结构示意图;
图8为本发明数据处理作业调度系统又一实施例结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
正如背景技术中所述,现有技术中分阶段的数据处理作业调度方法,为了保证作业能够有序执行,在一个执行阶段中的作业未运行成功时,下一个执行阶段中的作业将无法调度运行,这就会导致作业调度时间较长,降低了作业调度效率。特别是当数据处理流程中作业较多,作业之间的依赖关系很复杂时,作业调度效率将受到很大的影响,且由于执行阶段需要人工来划分,工作量较大,也会影响作业调度时间,且执行阶段划分的准确性也无法完全保证。
为了解决现有技术中存在的技术问题,发明人经过不断的研究发现,为了保证作业调度时间,提高作业调度效率,作业有序执行的同时,就要减少作业等待执行的时间。
发明人进一步发现,为了减少作业等待执行时间,又保证作业有序的执行,可以将无依赖关系的作业最大化的并行运行,也即将无依赖关系的作业同时运行,将会大大提高作业调度效率,且可以充分的利用计算资源。
因此,发明人基于这一创造性的思维,提出了本发明的技术方案:
在本发明实施例中,首先将数据处理流程的各个作业的运行初始化为不可运行;根据预先配置的作业之间依赖关系,再将不存在前提作业的作业的运行状态更新为可以运行;从而根据作业的运行状态,可以调度运行状态为可以运行的作业运行,并根据运行结果更新所述作业的运行状态为运行成功或运行失败;根据作业之间的依赖关系,可以将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。采用根据各个作业的运行状态进行调度的方式,不存在前提作业的作业首先运行,每一个作业在前提作业均运行成功之后运行,保证了作业能够有序执行;且当前作业在其前提作业运行成功之后,即可以运行,无需等待,减少了作业调度时间;且由于作业的前提作业均运行成功,作业即可以运行,使得无依赖关系的作业,可以最大化的并发运行,进一步减少了作业调度时间,提高了作业调度的效率。同时,作业的并发运行,也使得计算资源也得到了充分利用。
且本发明实施例中,直接根据预先配置的数据处理流程的各个作业之间的依赖关系进行调度,无需由人工划分为多个执行阶段,也节省了人工工作量,从而进一步提高了作业调度效率。
下面结合附图对本发明技术方案进行详细描述。
图1为本发明实施例提供的一种数据处理作业调度方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:获取预先配置的数据处理流程的各个作业之间的依赖关系。
102:初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令。
103:响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行。
按照所述数据处理流程的各个作业之间的依赖关系,可以确定出不存在前提作业的作业,因此通过响应第一更新指令,可以将该不存在前提作业的作业的运行状态更新为可以运行。
104:调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令。
105:响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
按照所述数据处理流程的各个作业之间的依赖关系,可以确定出存在前提作业的作业。通过响应第二更新指令,可以将存在前提作业的作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
一个数据处理流程中的作业之间存在依赖关系,根据作业之间的依赖关系,最终会汇聚到一个作业,即数据处理流程中最后一个作业。
前提作业是指任一个作业需要依赖其运行结果才能运行的作业。例如作业B依赖作业A的运行结果,作业A即为作业B的依赖的前提作业。
由作业之间的依赖关系形成的拓扑结构中,部分作业可能是不存在依赖关系的,这些不存在依赖关系的作业是可以并行执行的。
因此,本发明实施例中,为数据处理流程中的各个作业记录运行状态,运行状态至少包括不可运行、可以运行、运行成功、运行失败或放弃运行。如果作业的运行状态为可以运行,则可以调度运行状态为可以运行的作业运行;
如果运行状态为不可运行,则处于等待状态,等待可以运行的作业。
在数据处理流程处理过程中,首先初始化数据处理流程的各个作业的运行状态为不可运行,之后生成第一更新指令;检测到第一更新指令之后,可以将数据处理流程中不存在前提作业的作业的运行状态更新为可以运行。从而即可以调度运行状态为可以运行的作业运行,并可以根据运行结果更新所述作业的运行状态为运行成功或运行失败,同时生成第二更新指令;检测到第二更新指令之后,即可以将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
本发明实施例从不存在前提作业的作业,也即初始作业开始调度运行,通过规则推导的方式,根据作业之间依赖关系,可以更新各个作业的运行状态,从而可以调度运行状态为可以运行的作业运行。既可以保证存在依赖关系的作业能够有序执行,不会出现数据错误,同时使得无依赖关系的作业可以并发执行,减少了作业调时间,提高作业调度效率,且提高了资源的利用率。
在进行规则推导时,是根据作业之间的依赖关系进行的,且为了避免死循环,在数据处理流程的各个作业的运行状态均为运行成功、运行失败或放弃运行时,即可以结束流程,停止作业调度。
其中,为了方便区分作业的运行状态,本发明实施例中,通过响应所述第二更新指令,还可以将存在前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
从而,如果检测到的作业为放弃运行,即不会运行该作业,从而可以减少计算步骤。
在实际应用中,本发明实施例可以通过软件实现时,响应第二更新指令更新作业运行状态的执行程序可以如下所述:
其中,node表示作业,dependency即表示前提作业。
数据处理流程的各个作业可以保存在数据库,以作业状态表的形式存储。在进行作业调度时,通过读取作业状态表,获得各个作业的运行状态,进而将运行状态为可以运行的作业调度运行,并根据运行结果,修改作业状态表中所述作业的运行状态。
其中,将不存在前提作业的作业的运行状态更新为可以运行,以及将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态的状态推导过程,是按照作业之间的依赖关系进行推导。
为了清楚表示作业之间的依赖关系,且可以方便获取作业之间的依赖关系,作业之间的依赖关系可以采用DAG(Directed Acyclic Graph,有向无环图)的方式进行表示,当然也可以采用其他方式表示,比如采用关系树来表示,关系树中根节点依赖叶子节点运行,任一个前提作业可以作为依赖其运行结果的作业的叶子节点,依赖前提作业运行结果的作业可以作为该前提作业的根节点。
因此,步骤102中响应所述第一更新指令,将不存在前提作业的作业的运行状态更新为可以运行可以是:
响应所述第一更新指令,按照DAG表示的所述数据处理流程的各个作业的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;
步骤104中响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行可以是:
响应所述第二更新指令,按照DAG表示的所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
如图2所示,示出了一种DAG示意图,表示一种作业依赖关系。
由图2可知,作业E依赖的前提作业为作业C和作业D;作业D依赖的前提作业为作业B;作业B和作业C依赖的前提作业均为作业A。
作业E需要在作业C以及作业D都运行成功之后才能开始运行;作业D需要在作业B运行成功之后才能开始运行;作业B和作业C需要在作业A运行成功之后才能开始运行。
下面以结合图2所述的作业依赖关系,来详细描述本发明实施例的技术方案,如图3所示提供的本发明数据处理作业调度方法又一个实例的流程图中:
301:初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令。
此时作业A、作业B、作业C、作业D以及作业E的运行状态均为不可运行。作业A、作业B、作业C、作业D以及作业E之间的依赖关系预先配置好,可以采用DAG表示。
302:响应第一更新指令,将作业A的运行状态更新为可以运行。
根据预先配置的各个作业之间的依赖关系,可知作业A即为不存在前提作业的作业。
303:检测存在可以运行的作业A,调度作业A运行。
304:根据作业A的运行结果,更新作业A的运行状态为运行成功,并生成第二更新指令。
本实施例中,假设作业A的运行结果为运行成功。
305:响应第二更新指令,将作业B和作业C的运行状态更新为可以运行。
根据预先配置的各个作业之间的依赖关系,可知作业B和作业C的前提作业为作业A,且作业A的运行状态为运行成功,因此可以推导得到作业B以及作业C可以运行,将其状态进行更新。
306:检测存在可以运行的作业B以及作业C,调度作业B和调度C运行。
307:根据作业B和作业C的运行结果,更新作业B的运行状态为运行成功,更新作业C的运行状态为运行成功,并生成第二更新指令。
本实施例中,假设作业B以及作业B均运行成功。
308:响应第二更新指令,将作业D的运行状态更新为可以运行。
由于作业E依赖与作业B和作业D的运行结果,由于作业D未运行,因此无法推导作业E的运行状态,因此仍为不可以运行。
309:检测存在可以运行的作业D,调度作业D运行。
310:根据作业D的运行结果,更新作业D的运行状态为运行失败,并生成第二更新指令。
311:响应所述第二更新指令,将作业E的运行状态更新为放弃运行。
根据预先配置的各个作业之间的依赖关系,可知作业E的前提作业为作业的B和作业D,由于作业D的运行状态为运行失败,因此将作业E的运行状态更新为放弃运行。
此时,各个作业的运行状态为运行成功、运行失败或放弃运行,因此即结束流程。
通过本实施例,作业B和作业C无依赖关系,可以并发执行,因此减少了作业调时间,可以提高资源利用率。且根据本实施例的运行状态更新以及推导,只有前提作业运行成功的作业的运行状态才会更新为可以运行,否则继续保持不可运行或者放弃运行的状态,从而保证了存在依赖关系的作业的有序执行,避免出现数据错误。
本发明实施例在实际应用中,可以应用于任一个节点中,由该节点执行本发明实施例的技术方案。其中,节点可以是指在服务器中部署的一个软件程序。在运行状态为可以运行的作业包括多个时,调度运行状态可以运行的作业运行,具体可以是以并行方式运行所述作业调度模块调度的运行状态为可以运行的作业,也即将运行状态为可以运行的作业同时运行。
而由于数据处理流程的作业可能包括多个,特别是大数据领域,数据处理流程很复杂,作业数目也会很多,依赖关系也会复杂,可能存在大量需要并发执行的作业。而一个节点可利用的资源是有限的,在大量作业并发运行时,可能导致资源不够用。
因此,本发明实施例可以具体应用于分布式系统中,该分布式系统可以包括多个计算节点。计算节点也即是指在服务器中部署的一个用于运行作业的计算程序。
因此,本发明实施例中,调度运行状态为可以运行的作业运行可以是:
将运行状态为可以运行的作业提供给多个计算节点,由至少一个计算节点获取并运行至少一个运行状态为可以运行的作业。
多个计算节点可以分别部署在不同的服务器中,也可以部署在同一台服务器中。
在运行状态为可以运行的作业包括多个时,每一个可以运行的作业可以分配到一个计算节点中运行,每一个计算节点可以运行至少一个运行状态为可以运行的作业从而通过多个计算节点,分摊了作业运行量,实现了作业的分布式执行。使作业调度和作业执行可以分离开来,且可以根据不同的需求设计分布式的系统,以实现大量作业的同时执行。
图4本发明实施例提供的一种作业调度装置一个实施例的结构示意图,该装置可以包括:
作业调度模块401,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
所述规则确定模块402,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
规则确定模块主要负责根据作业之间的依赖关系,对作业的运行状态进行推导,以确定出可以运行的作业。
作业调度模块在存在运行状态为可以运行的作业时,即可以对可以运行的作业进行调度。
本发明实施例从不存在前提作业的作业,也即初始作业开始调度运行,通过规则推导的方式,根据作业之间依赖关系,可以更新各个作业的运行状态,只有前提作业运行成功的作业的运行状态才会更新为可以运行,否则继续保持不可运行或者放弃运行的状态,从而既保证了存在依赖关系的作业的有序执行,不会出现数据错误,且前提作业如果存在多个依赖其的作业时,只要其运行状态为运行成功,依赖其的多个作业均可以更新可以运行,从而运行状态为可以运行的作业即可以进行运行,同时保证了无依赖关系的作业可以并发执行,提高资源的利用率。
作为又一个实施例,所述规则确定模块402响应所述第二更新指令,还用于,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
作业调度模块生成的第一更新指令以及第二更新指令,可以发送至规则确定模块,以触发规则确定模块对作业的运行状态进行更新。
作业调度模块如果检测到的作业为放弃运行,即不会运行该作业,从而可以减少计算步骤。
作业调度模块还用于在各个作业的运行状态均为运行成功、运行失败或放弃运行时,即可以停止作业调度。
因此规则确定模块响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行具体是,响应第二更新指令,将运行状态为不可运行,且存在前提作业,以及所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
其中,将不存在前提作业的作业的运行状态更新为可以运行,以及将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态的状态推导过程,是按照作业之间的依赖关系进行推导。
为了清楚表示作业之间的依赖关系,且可以方便获取作业之间的依赖关系,作业之间的依赖关系可以采用DAG(Directed Acyclic Graph,有向无环图)的方式进行表示,当然也可以采用其他方式表示,比如采用关系树来表示,关系树中根节点依赖叶子节点运行,任一个前提作业可以作为依赖其运行结果的作业的叶子节点,依赖前提作业运行结果的作业可以作为该前提作业的根节点
因此,作为又一个实施例,所述规则确定模块402可以具体用于获取预设配置的表示数据处理流程的各个作业之间的依赖关系的DAG;响应所述第一更新指令,按照所述DAG表示的所述数据处理流程各个作业的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述DAG表示的所述数据处理流程各个作业的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
本发明实施例的数据处理流程的各个作业的运行状态可以保存在数据存储模块中。
因此如图5所示,作为又一个实施例,本发明实施例提供的数据处理作业调度装置还包括数据存储模块403,用于存储各个作业的运行状态。
作业调度模块以及规则确定模块可以对数据存储模块中的作业的运行状态进行更新。
作业调度模块401具体是:
初始化数据处理流程的各个作业的运行状态为不可运行,存储在数据存储模块403中,并生成第一更新指令;调度所述数据存储模块403中运行状态为可以运行的作业运行,根据运行结果更新所述数据存储模块403中所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
所述规则确定模块402具体是:
响应所述第一更新指令,将所述数据存储模块403中不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,将所述数据存储模块403中存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
数据存储模块可以具体将各个作业的运行状态保存在作业状态表中。
作业调度模块以及规则确定模块通过读取数据存储模块中的作业状态表,获得各个作业的运行状态,进而可以进行作业调度或更新。
在一种可能的实现方式中,如图6所示,作为又一个实施例,该装置还可以包括一作业执行模块404,用于以并行方式运行所述作业调度模块401调度的运行状态为可以运行的作业。
本发明实施例提供的数据处理作业调度装置在实际应用中,即可以应用于一个节点,由该节点实现作业的调度运行。
而由于数据处理流程的作业可能包括多个,特别是大数据领域,数据处理流程很复杂,作业数目也会很多,依赖关系也会复杂,可能存在大量需要并发执行的作业。而一个计算节点的资源是有限的,在大量作业并发运行时,可能导致资源不够用。
因此,作为另一种可能的实现方式,该作业调度模块调度运行状态为可以运行的作业运行可以是:
将运行状态为可以运行的作业提供给多个计算节点,由至少一个计算节点运行至少一个运行状态为可以运行的作业。
在运行状态为可以运行的作业包括多个时,可以由多个计算节点分摊运行,从而实现了分布式执行,有利于作业的并发执行。
且可以根据不同的需求设计分布式的系统,可以方便计算节点的扩展,以实现大量作业的同时执行。
该多个计算节点可以分别部署在一个或多个服务器中,一个服务器中可以至少部署一个计算节点。
结合上述描述,本发明实施例还提供了一种数据处理作业调度系统,如图7所示,为本发明实施例提供的一种数据处理作业调度系统一个实施例的结构示意图,该系统可以包括至少一个作业调度节点701、至少一个规则推理节点702以及多个计算节点703;
任一个作业调度节点701,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;将运行状态为可以运行的作业提供给所述多个计算节点,由至少一个计算节点运行至少一个运行状态为可以运行的作业;根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
任一个规则推理节点702,用于响应所述第一更新指令,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行;
所述计算节点703,用于运行所述作业调度节点提供的运行状态为可以运行的作业。
该作业调度节点响应第二更新指令,还可以将存在前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
本实施例中,由作业调度节点进行作业运行状态的初始化、更新以及作业调度,可以调度多个计算节点运行,运行状态为可以运行的作业。
采用本实施例所述的系统架构,可以方便扩展计算节点,以满足大量的并发执行的作业。也可以方便的扩展作业调度节点和规则引擎节点,以提升系统处理能力,具有高度容错能力。
此外,如图8所示,该分布式系统还可以包括作业存储节点704,各个作业的运行状态可以存储在作业存储节点704。作业调度节点以及规则推理节点通过与作业存储节点的交互,更新作业存储节点中作业的运行状态。
其中,作业调度节点、规则推理节点、计算节点以及作业存储节点等节点可以分别是在服务器中部署的一个软件程序。
一个服务器可以部署不同类型的节点,例如作业调度节点、规则推理节点、计算节点以及作业存储节点可以同时部署在一台服务器中,使得该服务器可以提供多种服务;也可以仅部署一种类型节点,例如作业调度节点、规则推理节点、计算节点以及数据存储节点分别部署在不同的服务器中,每台服务器提供一种服务。可以根据服务器资源的充足程度,确定服务器中部署的节点类型。
在本发明实施例提供的另一种数据处理作业调度系统中,该数据处理作业调度系统可以包括至少一个控制节点以及多个计算节点;
由控制节点初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;响应所述第一更新指令,将不存在前提作业的作业的运行状态更新为可以运行;将运行状态为可以运行的作业提供给所述多个计算节点,由至少一个计算节点获取并运行至少一个运行状态为可以运行的作业;获取并根据运行结果更新所述作业的运行状态为运行成功或运行失败,生成第二更新指令;响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
其中,控制节点可以是服务器中部署的实现控制功能的一个软件程序。
在实际应用中,本发明实施例的数据处理作业调度系统可以采用Jenkins作为计算作业执行的底层实现,可以使用主/从模式方便的扩展不同类型的节点,以满足不断增加的计算需求。检测到运行状态为可以运行的作业后,会调用Jenkins API将这些作业分发到每个计算节点执行,并可以定时读取作业的执行结果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据处理作业调度方法,其特征在于,包括:
获取预先配置的数据处理流程的各个作业之间的依赖关系;
初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;
响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;
调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
2.根据权利要求1所述的方法,其特征在于,调度运行状态为可以运行的作业运行,并根据运行结果更新所述作业的运行状态为运行成功或运行失败,生成第二更新指令之后,所述方法还包括:
响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
3.根据权利要求1所述的方法,其特征在于,所述调度运行状态为可以运行的作业运行包括:
将运行状态为可以运行的作业提供给多个计算节点,由至少一个计算节点运行至少一个运行状态为可以运行的作业。
4.根据权利要求1所述的方法,其特征在于,所述数据处理流程的各个作业之间的依赖关系通过有向无环图表示;
获取预先配置的数据处理流程的各个作业之间的依赖关系包括:
获取预先配置的表示数据处理流程的各个作业之间的依赖关系有向无环图;
所述响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行包括:
响应所述第一更新指令,按照所述有向无环图表示的数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;
所述响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行包括:
响应所述第二更新指令,按照所述有向无环图表示的所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
5.一种数据处理作业调度装置,其特征在于,包括:
作业调度模块,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
规则确定模块,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
6.根据权利要求5所述的装置,其特征在于,所述规则确定模块还用于:
响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
7.根据权利要求5所述的装置,其特征在于,所述作业调度模块调度运行状态为可以运行的作业运行具体是:
将运行状态为可以运行的作业提供给至少一个计算节点运行,由至少一个计算节点运行至少一个运行状态为可以运行的作业。
8.根据权利要求5所述的装置,其特征在于,还包括作业执行模块;
所述作业执行模块,用于以并行方式运行所述作业调度模块调度的运行状态为可以运行的作业。
9.根据权利要求5所述的方法,其特征在于,所述数据处理流程的各个作业之间的依赖关系通过有向无环图表示;
所述规则确定模块具体用于获取预设配置的表示数据处理流程的各个作业之间的依赖关系的有向无环图;响应所述第一更新指令,按照所述有向无环图表示的所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述有向无环图表示的所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
10.一种数据处理作业调度系统,其特征在于,包括至少一个作业调度节点、至少一个规则推理节点以及多个计算节点;
任一个作业调度节点,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;将运行状态为可以运行的作业提供给所述多个计算节点,由至少一个计算节点运行至少一个运行状态为可以运行的作业;根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;
任一个规则推理节点,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行;
所述计算节点,用于运行所述作业调度节点提供的运行状态为可以运行的作业。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526866.0A CN105893122A (zh) | 2015-08-25 | 2015-08-25 | 数据处理作业调度方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526866.0A CN105893122A (zh) | 2015-08-25 | 2015-08-25 | 数据处理作业调度方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105893122A true CN105893122A (zh) | 2016-08-24 |
Family
ID=57002781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510526866.0A Pending CN105893122A (zh) | 2015-08-25 | 2015-08-25 | 数据处理作业调度方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105893122A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694046A (zh) * | 2017-03-03 | 2018-10-23 | 中国移动通信集团山西有限公司 | 容器装配方法和装置 |
CN109783208A (zh) * | 2017-11-13 | 2019-05-21 | 阿里巴巴集团控股有限公司 | 大数据作业调度方法、平台、设备和介质 |
CN110895484A (zh) * | 2018-09-12 | 2020-03-20 | 北京奇虎科技有限公司 | 任务调度方法及装置 |
CN111736969A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN113741872A (zh) * | 2021-09-03 | 2021-12-03 | 上海新炬网络信息技术股份有限公司 | 基于作业调度的软件应用自动化发布方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011137672A1 (zh) * | 2010-05-05 | 2011-11-10 | 中兴通讯股份有限公司 | 基于数据库的任务执行方法及装置 |
CN102981904A (zh) * | 2011-09-02 | 2013-03-20 | 阿里巴巴集团控股有限公司 | 一种任务调度方法及系统 |
CN103942034A (zh) * | 2014-03-21 | 2014-07-23 | 深圳华大基因科技服务有限公司 | 任务调度方法及实现该方法的电子装置 |
CN104657212A (zh) * | 2015-02-13 | 2015-05-27 | 北京亚信数据有限公司 | 一种任务调度的方法及系统 |
KR20150089918A (ko) * | 2014-01-27 | 2015-08-05 | 숭실대학교산학협력단 | 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치 |
-
2015
- 2015-08-25 CN CN201510526866.0A patent/CN105893122A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011137672A1 (zh) * | 2010-05-05 | 2011-11-10 | 中兴通讯股份有限公司 | 基于数据库的任务执行方法及装置 |
CN102981904A (zh) * | 2011-09-02 | 2013-03-20 | 阿里巴巴集团控股有限公司 | 一种任务调度方法及系统 |
KR20150089918A (ko) * | 2014-01-27 | 2015-08-05 | 숭실대학교산학협력단 | 멀티 프로세서 시스템에서 태스크 의존성 그래프를 이용한 스케줄링 방법 및 장치 |
CN103942034A (zh) * | 2014-03-21 | 2014-07-23 | 深圳华大基因科技服务有限公司 | 任务调度方法及实现该方法的电子装置 |
CN104657212A (zh) * | 2015-02-13 | 2015-05-27 | 北京亚信数据有限公司 | 一种任务调度的方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108694046A (zh) * | 2017-03-03 | 2018-10-23 | 中国移动通信集团山西有限公司 | 容器装配方法和装置 |
CN109783208A (zh) * | 2017-11-13 | 2019-05-21 | 阿里巴巴集团控股有限公司 | 大数据作业调度方法、平台、设备和介质 |
CN110895484A (zh) * | 2018-09-12 | 2020-03-20 | 北京奇虎科技有限公司 | 任务调度方法及装置 |
CN111736969A (zh) * | 2020-06-16 | 2020-10-02 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN111736969B (zh) * | 2020-06-16 | 2024-04-16 | 中国银行股份有限公司 | 分布式作业调度方法及装置 |
CN113741872A (zh) * | 2021-09-03 | 2021-12-03 | 上海新炬网络信息技术股份有限公司 | 基于作业调度的软件应用自动化发布方法 |
CN113741872B (zh) * | 2021-09-03 | 2024-04-23 | 上海新炬网络信息技术股份有限公司 | 基于作业调度的软件应用自动化发布方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105893122A (zh) | 数据处理作业调度方法、装置及系统 | |
CN105912387A (zh) | 数据处理作业调度方法及装置 | |
Wang et al. | An effective artificial bee colony algorithm for the flexible job-shop scheduling problem | |
Lin et al. | Minimization of total tardiness on unrelated parallel machines with sequence-and machine-dependent setup times under due date constraints | |
CN104216785A (zh) | 通用策略任务系统及其实现方法 | |
CN103744724A (zh) | 定时任务集群方法及其装置 | |
CN107621973A (zh) | 一种跨集群的任务调度方法及装置 | |
Ying et al. | Unrelated parallel machine scheduling with sequence-and machine-dependent setup times and due date constraints | |
US11947996B2 (en) | Execution of services concurrently | |
CN106293893A (zh) | 作业调度方法、装置及分布式系统 | |
CN103678051B (zh) | 一种集群数据处理系统中的在线故障容错方法 | |
CN105808346B (zh) | 一种任务调度方法与装置 | |
CN106776008A (zh) | 一种基于zookeeper实现负载均衡的方法及系统 | |
CN110611707A (zh) | 一种任务调度的方法及装置 | |
CN105589748A (zh) | 一种业务请求处理方法及装置 | |
CN103823719A (zh) | 针对可执行程序的分布式云计算系统及针对可执行程序的分布式云计算方法 | |
CN107203421A (zh) | 一种云计算环境中自适应的组合工作流方法 | |
CN105450684A (zh) | 云计算资源调度方法和系统 | |
CN103399787A (zh) | 一种基于Hadoop云计算平台的MapReduce作业流式调度方法及调度系统 | |
CN109165210A (zh) | 一种集群Hbase数据迁移的方法及装置 | |
CN111857694A (zh) | 一种基于云原生程序开发与部署的代码编辑方法及装置 | |
CN107807845A (zh) | 一种增量式数据并行处理装置与方法 | |
CN103019849B (zh) | 云计算环境下的虚拟机管理方法 | |
CN102799474A (zh) | 一种基于可靠性驱动的云资源容错调度方法 | |
Lei et al. | Local search with controlled deterioration for multi-objective scheduling in dual-resource constrained flexible job shop |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160824 |