CN105912387A - 数据处理作业调度方法及装置 - Google Patents
数据处理作业调度方法及装置 Download PDFInfo
- Publication number
- CN105912387A CN105912387A CN201510526423.1A CN201510526423A CN105912387A CN 105912387 A CN105912387 A CN 105912387A CN 201510526423 A CN201510526423 A CN 201510526423A CN 105912387 A CN105912387 A CN 105912387A
- Authority
- CN
- China
- Prior art keywords
- premise
- current work
- run
- running
- data processing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000032258 transport Effects 0.000 description 5
- 239000002699 waste material Substances 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
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为本发明数据处理作业调度装置又一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
正如背景技术中所述,现有技术中分阶段的作业调度方法,为了保证作业能够有序执行,在一个执行阶段中的作业未运行成功时,下一个执行阶段中的作业将无法调度运行,这就会导致作业调度时间较长,降低了作业调度效率。特别是当数据处理流程中作业较多,作业之间的依赖关系很复杂时,作业调度效率将受到很大的影响,且由于执行阶段需要人工来划分,工作量较大,也会影响作业调度时间,且执行阶段划分的准确性也无法完全保证。
为了解决现有技术中存在的技术问题,发明人经过不断的研究发现,为了保证作业调度时间,提高作业调度效率,作业有序执行的同时,就要减少作业等待执行的时间。
发明人进一步发现,为了减少作业等待执行时间,又保证作业有序的执行,可以将无依赖关系的作业最大化的并行运行,也即将无依赖关系的作业同时运行,将会大大提高作业调度效率,且可以充分的利用计算资源。
因此,发明人基于这一创造性的思维,提出了本发明的技术方案:
在本发明实施例中,进行作业调度时,从存在依赖关系的各个作业的最终作业开始,针对每一个进行调度的当前作业,首先对其进行判断,判断是否存在前提作业,如果存在前提作业且前提作业未运行,则对前提作业进行调度;如果存在前提作业且前提作业均运行成功,或者不存在前提作业,再运行当前作业。按照本发明实施例的技术方案,不存在前提作业的作业首先运行,每一个进行调度的当前作业的前提作业优先当前作业运行,从而保证作业的有序执行,且当前作业在其前提作业运行成功之后,即可以运行,无需等待,且由于当前作业的前提作业至少包括一个,使得对当前作业的全部前提作业的调度可以同时进行,保证了作业的最大化并行运行,相对于现有技术分阶段执行的调度方案,节省了调度时间,提高了调度效率。且无需由人工划分为多个执行阶段,也节省了人工工作量,从而进一步提高了作业调度效率。
下面结合附图对本发明技术方案进行详细描述。
图1为本发明实施例提供的一种数据处理作业调度方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:获取预先配置的数据处理流程的各个作业之间的依赖关系。
102:根据所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个进行调度的当前作业,判断是否存在当作业的前提作业。
103:在存在当前作业的前提作业时,且所述前提作业未运行时,对所述前提作业进行调度。
104:在不存在当前作业的前提作业,或者所述前提作业均运行成功时,调度所述当前作业运行。
若至少一个前提作业未运行成功,则不会调度当前作业运行。
其中,当前作业运行时依赖所述当前作业的前提作业的运行结果。
本发明实施例中,对一个作业进行调度的过程包括对作业的前提作业判断以及作业的运行。
一个数据处理流程中的作业之间存在依赖关系,根据作业之间的依赖关系,最终会汇聚到一个作业,即数据处理流程中的最后一个作业,最终作业也即是指该数据处理流程中的最后一个作业。
前提作业是指任一个作业需要依赖其运行结果才能运行的作业。例如作业B依赖作业A的运行结果,作业B即为作业A的前提作业。
由作业之间的依赖关系形成的拓扑结构中,部分作业可能是不存在依赖关系的,这些不存在依赖关系的作业是可以并发执行的。因此,本发明实施例中,从最终作业开始,对于每一个当前作业,对其进行调度时,首先判断其是否存在当前作业的前提作业。
在存在前提作业时,,该前提作业至少为一个,且该前提作业未运行,即会对前提作业进行调度。此时,该前提作业又会作为当前作业,继续判断是否存在前提作业,直至当前作业不存在前提作业时,即调度当前作业运行。或者在前提作业已运行,且前提作业均运行成功时,即调度该当前作业运行。
本发明实施例从最终作业开始调度,针对每一个当前作业,若存在前提作业,即可以首先对前提作业进行调度,此时前提作业无论存在几个,均可以并发执行,前提作业均运行成功时,再调度当前作业运行。使得保证了无依赖关系的作业可以最大化并发调度,不会受到阶段限制,从而减少作业调度时间,充分的利用了计算资源,有依赖关系的作业能够有序调度,可以避免作业运行数据错误。
且对于多个作业依赖同一个前提作业时,该前提作业只需运行一次,根据前提作业的运行状态,即前提作业是否运行成功,即可以决定是否对前提作业进行调度,从而进一步的减少作业调度时间,在提高资源利用率的同时,避免了资源的浪费。
另外,本发明实施例中,直接可以根据预先配置的数据处理流程的各个作业之间的依赖关系进行调度,无需由人工划分为多个执行阶段,节省了人工工作量,从而进一步提高了作业调度效率。
其中,针对每一个进行调度的当前作业,判断是否存在当前作业的前提作业,是根据作业之间的依赖关系进行判断的。为了方便获取作业之间的依赖关系,作业之间的依赖关系可以采用DAG(Directed Acyclic Graph,有向无环图)的方式进行表示。利用DAG表示依赖关系,使得读取和使用依赖关系更加便携。
因此根据所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个当前作业,判断是否存在当前作业的前提作业可以具体是:
按照所述DAG表示的数据处理流程的各个作业之间依赖关系,从所述数据处理流程的最终作业开始,针对每一个当前作业,判断是否存在前提作业。
如图2所示,示出了一种DAG示意图,表示一种作业依赖关系。
由图2可知,作业E依赖的前提作业为作业C和作业D;作业D依赖的前提作业为作业B;作业B和作业C依赖的前提作业均为作业A。
作业E需要在作业C以及作业D都运行成功之后才能开始运行;作业D需要在作业B运行成功之后才能开始运行;作业B和作业C需要在作业A运行成功之后才能开始运行。
作业A为初始作业,作业E为最终作业。
通过本发明实施例的技术方案,从作业E开始,由于作业E存在前提作业,即作业C以及作业D,因此会对作业C以及作业D进行调度;而由于作业C存在前提作业A,因此会对作业A进行调度,作业A没有前提作业,因此即调度作业A运行,作业A运行成功之后,作业C再运行;
对于作业D存在前提作业B,因此会对作业B进行调度,作业B存在前提作业A,因此会对前提作业A进行调度,作业A没有前提作业,在作业未运行时,即可以调度作业A运行,作业A运行成功之后,作业B再运行,作业B运行成功之后,作业D再运行,而当由于对作业C的调度,导致调度A已经运行时,此时即可以不再调度作业A运行,而是获取作业A的运行状态,在其运行成功时,直接调度作业D运行。
作业E的前提作业,作业C以及作业D运行成功之后,作业E再运行。
由此可知,通过本发明实施例,作业C的调度路径,与作业D和作业B的调度路径能够并发运行,从而可以减少运行时间,且可以充分利用资源,提高资源的利用率。且每一个当前作业需要在其前提作业运行成功之后再运行,从而保证了作业的有序运行,不会有作业先于其前提作业运行,减少了数据错误,且每一个作业可以只运行一次,进一步降低了作业调度时间,避免了资源的浪费。
在实际应用中,本发明实施例可以通过软件实现时,作业调度的执行程序可以如下所述:
其中,dependency表示前提作业。
其中,作业的运行状态至少可以包括未运行、正在运行、运行成功、运行失败以及放弃运行,作业的运行状态可以存储在作业运行状态表中。根据作业的运行结果,可以对作业运行状态表进行更新。
当当前作业存在前提作业时,可以获取前提作业的运行状态;
如果前提作业的运行状态为未运行,则可以对该前提作业进行调度,并更新该前提作业的运行状态为正在运行;
如果前提作业的运行状态为运行成功,则可以调度当前作业运行;并根据运行结果更新当前作业的运行状态为运行成功或运行失败。
如果前提作业的运行状态为运行失败或放弃运行时,即终止对当前作业的调度,并更新当前作业的运行状态为放弃运行,避免继续调度导致出现数据错误。
如果前提作业的运行状态为正在运行时,则可以等待该前提作业运行结束时,根据运行结果进行调度,若前提作业运行成功,则可以调度当前作业运行,若前提作业运行失败,则终止对当前作业的调度,并更新当前作业的运行状态为放弃运行,避免继续调度导致出现数据错误。
通过对运行状态的判断和更新,进一步保证了一个作业可以只运行一次,不会重复运行,利用作业的运行状态,即可以确定前提作业是否运行,以及是否运行成功,使得在保证充分利用计算资源的同时,可以避免计算资源的浪费。
下面结合图3,本发明实施例提供的又一个实施例中,对本发明技术方案进行详细描述,该方法可以包括以下几个步骤:
301:获取预先配置的数据处理流程的各个作业之间的依赖关系;
302:根据所述数据处理流程的各个作业之间的依赖关系,从数据处理流程的最终作业开始,针对每一个进行调度的当前作业,判断是否存在前提作业,如果是,执行步骤303,如果否,执行步骤308。
303:获取所述前提作业的运行状态。
304:在所述前提作业的运行状态为未运行时,对所述前提作业进行调度,并更新所述前提作业的运行状态为正在运行。
305:在所述前提作业的运行状态为运行成功时,调度所述当前作业运行,并根据运行结果更新所述当前作业的运行状态为运行成功或运行失败。
306:在所述前提作业的运行状态为正在运行时,等待所述前提作业运行结束,返回步骤303继续执行。
307:在所述前提作业的运行状态为运行失败或放弃运行时,终止对当前作业的调度,并更新当前作业的运行状态为放弃运行。
308:调度所述当前作业运行,并根据运行结果更新所述当前作业的运行状态为运行成功或运行失败。
其中,作业的运行状态可以保存在作业状态表中,以便能够根据不同的作业的运行状态执行不同的操作。
通过本发明实施例,不会造成作业的重复运行,且保证了作业的有序调度,无依赖关系的作业可以并发执行,从而降低了作业调度时间,提高了资源利用率。
在实际应用中,本发明实施例可以通过软件实现时,作业调度的执行程序可以如下所述:
其中,在进行作业调度时,作为又一个实施例,每一个作业在一个进程中运行,通过进程执行,实现作业调度和运行。
当存在当前作业的前提作业时,可以创建运行当前作业进程的子进程,由子进程对所述前提作业进行调度,运行当前作业的进程即为其子进程的父进程。其中,每一个进程在其所有子进程调度的作业均运行成功之后执行。
对于任一个子进程,在其调度的作业作为当前作业,且存在前提作业时,即又作为父进程,进一步创建子进程对其调度作业的前提作业进行调度。
因此本发明实施例中,针对每一个当前作业,判断是否存在前提作业具体是:
在运行当前作业的进程中判断是否存在所述当前作业依赖的前提作业。
在存在所述当前作业依赖的前提作业时,创建运行所述当前作业进程的子进程,由所述子进程在所述前提作业未运行时,对所述前提作业进行调度;
在不存在所述前提作业,或者所述子进程调度的前提作业均运行成功时,由所述当前作业的进程调度所述当前作业运行。
当前作业的进程在其每个子进程调度的作业均运行成功之后执行,从而便能够保证无依赖关系的作业的并发调度和有依赖关系的作业的有序调度。
每个进程都是独立的进行运算,当不同进程需要调度同一个作业时,为了避免作业的重复调度,可以通过作业状态表获得每一个作业的运行状态。
每个进程在调度的作业运行状态为未运行时,可以对该作业进行调度;
每个进程在调度的作业运行状态为正在运行时,可以等待调度该作业的其他进程运行结束之后,再获取其调度的作业的运行状态;
每个进程在调度的作业的运行状态为运行成功、运行失败或放弃运行时,作为子进程,可以将其调度的作业的运行状态反馈给其父进程,使得父进程根据子进程反馈的运行状态,确定对父进程调度的作业的进行何种操作。
作业的运行状态可以保存在作业状态表中,因此可以将作业状态表设置为任一个作业的运行状态只允许一个进程对其进行更新操作,即可以保证同一个作业只能被一个进程运行,且已经运行的作业不会被再次运行。这样,使得一个作业只运行一次,不会重复运行,可以避免计算资源的浪费,
本发明实施例还可以采用newlisp语法配置和维护作业之间的依赖关系。newlisp是一个用于一般用途的脚本语言,容易学习和使用。
同时,可以采用newlisp支持的多处理器Cilk技术,使得能够充分利用多核CPU并行运行作业,提升了硬件使用效率,可以进一步减少作业调度时间。多核CPU可以使得多个进程并发执行,每一个进程中运行一个作业,因此多核CPU提供了作业并行运行的条件。Cilk技术为C/C++语言增加了细粒度任务支持,使其为新的和现有的软件增加并行性来充分发掘多处理器能力变得更加容易。
图4为本发明实施例提供的一种数据处理作业调度装置一个实施例的流程图,该装置可以包括:
获取模块401,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;
判断模块402,用于根据所述数据处理流程的各个作业之间的依赖关系,从数据处理流程的目标作业开始,针对每一个进行调度的当前作业,判断是否存在当前作业的前提作业;
第一调度模块403,用于在存在前提作业时,且所述前提作业未运行时,对所述前提作业进行调度;
第二调度模块404,用于在不存在前提作业时,调度所述当前作业运行;
第三调度模块405,用于在存在前提作业,且所述前提作业均运行成功时,调度所述当前作业运行。
本发明实施例从最终作业开始调度,针对每一个进行调度的当前作业,若存在当前作业的前提作业,即可以首先对前提作业进行调度,此时前提作业无论存在几个,均可以并发执行,前提作业均运行成功时,再调度当前作业运行。使得保证了无依赖关系的作业可以并发调度,从而减少作业调度时间,且可以充分的利用计算资源,有依赖关系的作业能够有序调度,可以避免作业运行数据错误。且对于多个作业依赖同一个前提作业时,该前提作业只需运行一次,根据前提作业的运行状态,即可以决定是否对前提作业进行调度,从而进一步的减少作业调度时间,在提高资源利用率的同时,避免了资源的浪费。
其中,针对每一个当前作业,判断是否存在前提作业,是根据作业之间的依赖关系进行判断的。为了方便获取作业之间的依赖关系,作业之间的依赖关系可以采用DAG的方式进行表示。
因此所述获取模块可以包括:
获取单元,用于获取预先配置的表示数据处理流程的各个作业之间的依赖关系的DAG;
所述判断模块可以包括:
判断单元,用于按照所述DAG表示的所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个当前作业,判断是否存在前提作业。
其中,作业的运行状态至少可以包括未运行、正在运行、运行成功、运行失败以及放弃运行,作业的运行状态可以存储在作业运行状态表中。根据作业的运行结果,可以对作业运行状态表进行更新。
作为又一个实施例,如图5所示,该第一调度模块401可以包括:
状态获取单元501,用于在存在当前作业的前提作业时,获取所述前提作业的运行状态;所述运行状态至少包括未运行、正在运行、运行成功、运行失败以及放弃运行;
第一调度单元502,用于在所述前提作业的运行状态为未运行时,对所述前提作业进行调度,并更新所述前提作业的运行状态为正在运行;
所述第三调度模块405包括:
第三调度单元503,用于在所述前提作业的运行状态为运行成功时,调度所述当前作业运行,并根据运行结果更新所述当前作业的运行状态为运行成功或运行失败。
如果前提作业的运行状态为运行失败、放弃运行或者正在运行时,作为又一个实施例,如图5中所以,该装置还可以包括:
第四调度模块406,用于在所述前提作业的运行状态为正在运行时,等待所述前提作业运行结束时,触发所述状态获取单元运行;
第五调度模块407,用于在所述前提作业的运行状态为运行失败或放弃运行时,终止对当前作业的调度,并更新当前作业的运行状态为放弃运行。
作业的运行状态可以保存在作业状态表中,以便能够根据不同的作业的运行状态执行不同的操作。
通过本发明实施例,不会造成作业的重复运行,且保证了作业的有序调度,无依赖关系的作业可以并发执行,从而减少了作业调度时间,提高了资源利用率。
其中,在进行作业调度时,作为又一个实施例,每一个作业在一个进程中运行,通过进程执行,实现作业调度和运行。当存在所述当前作业依赖的前提作业时,可以创建运行所述当前作业进程的子进程,由所述子进程对所述前提作业进行调度。
因此,作为又一个实施例,该装置还可以包括:
子进程创建模块,用于当存在所述当前作业的前提作业时,创建运行所述当前作业进程的子进程,由所述子进程运行所述前提作业;
其中,每一个进程在其每一个子进程均执行成功之后执行,从而便能够保证无依赖关系的作业的并发调度和有依赖关系的作业的有序调度。
则所述判断模块402具针对每一个当前作业,判断是否存在当前作业的前提作业具体是在运行当调度作业的进程中判断是否存在所述当前作业的前提作业;
所述第一调度模块403具体用于在存在的前提作业时,由运行所述当前作业进程的子进程在所述前提作业未运行时,对所述前提作业进行调度;
所述第二调度模块404具体用于在不存在所述前提作业,或者所述子进程调度的前提作业均运行成功时,由所述当前作业的进程调度所述当前作业运行。
另外,该装置还可以包括数据存储模块用于存储所述数据处理流程的各个作业的运行状态,具体可以将各个作业的运行状态存储在作业状态表中;
作业状态表中的任一个作业的运行状态只允许一个进程对其进行更新操作,从而即可以保证同一个作业只能被一个进程运行,且已经运行的作业不会被再次运行。
在实际应用中,本发明实施例所述的作业调度装置可以应用于任一个可以对作业进行处理的计算节点中。
该计算节点支持多处理器Cilk技术,使得能够充分利用多核CPU并行运行作业,提升了硬件使用效率,可以进一步减少作业调度时间。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据处理作业调度方法,其特征在于,包括:
获取预先配置的数据处理流程的各个作业之间的依赖关系;
根据所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个进行调度的当前作业,判断是否存在当前作业的前提作业;
在存在前提作业,且所述前提作业未运行时,对所述前提作业进行调度;
在不存在前提作业,或者所述前提作业均运行成功时,调度当前作业运行;
其中,当前作业运行时依赖当前作业的前提作业的运行结果。
2.根据权利要求1所述的方法,其特征在于,所述在存在前提作业,且所述前提作业未运行时,对所述前提作业进行调度包括:
在存在前提作业时,获取所述前提作业的运行状态;所述运行状态至少包括未运行、正在运行、运行成功、运行失败以及放弃运行;
在所述前提作业的运行状态为未运行时,对所述前提作业进行调度,并更新所述前提作业的运行状态为正在运行;
所述在所述前提作业运行成功时,调度所述当前作业运行包括:
在所述前提作业的运行状态为运行成功时,调度所述当前作业运行,并根据运行结果更新所述当前作业的运行状态为运行成功或运行失败。
3.根据权利要求2所述的方法,其特征在于,在所述前提作业的运行状态为正在运行时,所述方法还包括:
等待所述前提作业运行结束时,返回执行所述获取所述前提作业的运行状态的步骤;
在所述前提作业的运行状态为运行失败或放弃运行时,所述方法还包括:
终止对当前作业的调度,并更新当前作业的运行状态为放弃运行。
4.根据权利要求1~3任一项所述的方法,其特征在于,每一个作业在一个进程中运行;
当存在所述当前作业的前提作业时,所述方法还包括:
创建运行所述当前作业的进程的子进程,由所述子进程运行所述前提作业;
其中,每一个进程在其所有子进程对应的作业均运行成功之后执行。
5.根据权利要求4所述的方法,其特征在于,所述数据处理流程的各个作业之间的依赖关系通过有向无环图表示;
获取预先配置的数据处理流程的各个作业之间的依赖关系包括:
获取预先配置的表示数据处理流程的各个作业之间的依赖关系的有向无环图;
所述根据所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个当前作业,判断是否存在当前作业的前提作业包括:
按照所述有向无环图表示的所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个当前作业,判断是否存在当前作业的前提作业。
6.一种数据处理作业调度装置,其特征在于,包括:
获取模块,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;
判断模块,用于根据所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个进行调度的当前作业,判断是否存在当前作业的前提作业;
第一调度模块,用于在存在前提作业时,且所述前提作业未运行时,对所述前提作业进行调度;
第二调度模块,用于在不存在前提作业时,调度所述当前作业运行;
第三调度模块,用于在存在前提作业,且所述前提作业均运行成功时,调度所述当前作业运行;
其中,当前作业运行时依赖所述当前作业的前提作业的运行结果。
7.根据权利要求6所述的装置,其特征在于,所述第一调度模块包括:
状态获取单元,用于在存在当前作业的前提作业时,获取所述前提作业的运行状态;所述运行状态至少包括未运行、正在运行、运行成功、运行失败以及放弃运行;
第一调度单元,用于在所述前提作业的运行状态为未运行时,对所述前提作业进行调度,并更新所述前提作业的运行状态为正在运行;
所述第三调度模块包括:
第三调度单元,用于在所述前提作业的运行状态为运行成功时,调度所述当前作业运行,并根据运行结果更新所述当前作业的运行状态为运行成功或运行失败。
8.根据权利要求7所述的装置,其特征在于,还包括:
第四调度模块,用于在所述前提作业的运行状态为正在运行时,等待所述前提作业运行结束时,触发所述状态获取单元运行;
第五调度模块,用于在所述前提作业的运行状态为运行失败或放弃运行时,终止对当前作业的调度,并更新当前作业的运行状态为放弃运行。
9.根据权利要求6~8任一项所述的装置,其特征在于,每一个作业在一个进程中运行;
所述装置还包括:
子进程创建模块,用于当存在所述当前作业的前提作业时,创建运行所述当前作业进程的子进程,由所述子进程运行所述前提作业;
其中,每一个进程在其每一个子进程调度的作业均运行成功之后执行。
10.根据权利要求9所述的装置,其特征在于,所述数据处理流程的各个作业之间的依赖关系通过有向无环图表示;
所述获取模块包括:
获取单元,用于获取预先配置的表示数据处理流程的各个作业之间的依赖关系的有向无环图;
所述判断模块包括:
判断单元,用于按照所述有向无环图表示的所述数据处理流程的各个作业之间的依赖关系,从所述数据处理流程的最终作业开始,针对每一个当前作业,判断是否存在前提作业。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526423.1A CN105912387A (zh) | 2015-08-25 | 2015-08-25 | 数据处理作业调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510526423.1A CN105912387A (zh) | 2015-08-25 | 2015-08-25 | 数据处理作业调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105912387A true CN105912387A (zh) | 2016-08-31 |
Family
ID=56743953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510526423.1A Pending CN105912387A (zh) | 2015-08-25 | 2015-08-25 | 数据处理作业调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105912387A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528853A (zh) * | 2016-11-28 | 2017-03-22 | 中国工商银行股份有限公司 | 数据交互管理装置、跨库数据交互处理装置及方法 |
CN107085536A (zh) * | 2016-11-14 | 2017-08-22 | 阿里巴巴集团控股有限公司 | 一种任务管理方法和装置 |
CN108037991A (zh) * | 2017-12-26 | 2018-05-15 | 中山大学 | 一种支持作业依赖关系的定时作业调度方法及系统 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN108694046A (zh) * | 2017-03-03 | 2018-10-23 | 中国移动通信集团山西有限公司 | 容器装配方法和装置 |
CN108763482A (zh) * | 2018-05-25 | 2018-11-06 | 联想(北京)有限公司 | 用于数据分析流程调度的方法、装置和服务器集群 |
CN109523187A (zh) * | 2018-11-27 | 2019-03-26 | 北京字节跳动网络技术有限公司 | 任务调度方法、装置和设备 |
CN110019144A (zh) * | 2018-06-19 | 2019-07-16 | 杭州数澜科技有限公司 | 一种大数据平台数据运维的方法和系统 |
CN110046809A (zh) * | 2019-04-02 | 2019-07-23 | 中国工商银行股份有限公司 | 作业调度方法及装置 |
CN110795479A (zh) * | 2019-10-08 | 2020-02-14 | 中国建设银行股份有限公司 | 基于数据的分布式etl调度的方法和装置 |
CN113052570A (zh) * | 2021-04-19 | 2021-06-29 | 中国工商银行股份有限公司 | 一种事件触发的进程执行的控制方法及装置 |
CN117032999A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种基于异步运行时的cpu-gpu协同调度方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818868A (zh) * | 2006-03-10 | 2006-08-16 | 浙江大学 | 嵌入式操作系统多任务并行启动优化实现方法 |
CN101853182A (zh) * | 2010-05-05 | 2010-10-06 | 中兴通讯股份有限公司 | 基于数据库的任务执行方法及装置 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
-
2015
- 2015-08-25 CN CN201510526423.1A patent/CN105912387A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818868A (zh) * | 2006-03-10 | 2006-08-16 | 浙江大学 | 嵌入式操作系统多任务并行启动优化实现方法 |
CN101853182A (zh) * | 2010-05-05 | 2010-10-06 | 中兴通讯股份有限公司 | 基于数据库的任务执行方法及装置 |
CN104536811A (zh) * | 2014-12-26 | 2015-04-22 | 广州华多网络科技有限公司 | 基于hive任务的任务调度方法及装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107085536A (zh) * | 2016-11-14 | 2017-08-22 | 阿里巴巴集团控股有限公司 | 一种任务管理方法和装置 |
CN106528853A (zh) * | 2016-11-28 | 2017-03-22 | 中国工商银行股份有限公司 | 数据交互管理装置、跨库数据交互处理装置及方法 |
CN106528853B (zh) * | 2016-11-28 | 2019-10-11 | 中国工商银行股份有限公司 | 数据交互管理装置、跨库数据交互处理装置及方法 |
CN108694046A (zh) * | 2017-03-03 | 2018-10-23 | 中国移动通信集团山西有限公司 | 容器装配方法和装置 |
CN108037991A (zh) * | 2017-12-26 | 2018-05-15 | 中山大学 | 一种支持作业依赖关系的定时作业调度方法及系统 |
CN108595157B (zh) * | 2018-04-28 | 2022-05-10 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN108595157A (zh) * | 2018-04-28 | 2018-09-28 | 百度在线网络技术(北京)有限公司 | 区块链数据的处理方法、装置、设备和存储介质 |
CN108763482A (zh) * | 2018-05-25 | 2018-11-06 | 联想(北京)有限公司 | 用于数据分析流程调度的方法、装置和服务器集群 |
CN110019144A (zh) * | 2018-06-19 | 2019-07-16 | 杭州数澜科技有限公司 | 一种大数据平台数据运维的方法和系统 |
CN109523187A (zh) * | 2018-11-27 | 2019-03-26 | 北京字节跳动网络技术有限公司 | 任务调度方法、装置和设备 |
CN110046809A (zh) * | 2019-04-02 | 2019-07-23 | 中国工商银行股份有限公司 | 作业调度方法及装置 |
CN110046809B (zh) * | 2019-04-02 | 2021-11-19 | 中国工商银行股份有限公司 | 作业调度方法及装置 |
CN110795479A (zh) * | 2019-10-08 | 2020-02-14 | 中国建设银行股份有限公司 | 基于数据的分布式etl调度的方法和装置 |
CN113052570A (zh) * | 2021-04-19 | 2021-06-29 | 中国工商银行股份有限公司 | 一种事件触发的进程执行的控制方法及装置 |
CN117032999A (zh) * | 2023-10-09 | 2023-11-10 | 之江实验室 | 一种基于异步运行时的cpu-gpu协同调度方法及装置 |
CN117032999B (zh) * | 2023-10-09 | 2024-01-30 | 之江实验室 | 一种基于异步运行时的cpu-gpu协同调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912387A (zh) | 数据处理作业调度方法及装置 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
CN105117286B (zh) | MapReduce中任务的调度方法和流水化执行方法 | |
US20150052530A1 (en) | Task-based modeling for parallel data integration | |
US10366084B2 (en) | Optimizing pipelining result sets with fault tolerance in distributed query execution | |
CN106293940A (zh) | 一种金融行业中并行跑批的方法 | |
CN110362315B (zh) | 基于dag的软件系统调度方法及装置 | |
CN105138405B (zh) | 基于待释放资源列表的MapReduce任务推测执行方法和装置 | |
CN110347489B (zh) | 一种基于Spark的多中心数据协同计算的流处理方法 | |
CN102495804A (zh) | 软件自动化测试方法 | |
CN107316124B (zh) | 大数据环境下大规模事务型作业调度与处理通用系统 | |
CN108415740A (zh) | 一种应用于数据分析任务的工作流调度方法 | |
CN114237850A (zh) | 一种量子计算分布式队列管理方法及系统 | |
CN104536770A (zh) | 一种支持并行作业断点恢复的作业提交和恢复方法 | |
CN110502337B (zh) | 针对Hadoop MapReduce中混洗阶段的优化系统 | |
CN105893122A (zh) | 数据处理作业调度方法、装置及系统 | |
CN109445929A (zh) | 一种调度任务的方法和系统 | |
CN111158800A (zh) | 基于映射关系构建任务dag的方法及装置 | |
CN112463334B (zh) | 一种训练任务排队原因分析方法、系统、设备以及介质 | |
CN103810041A (zh) | 一种支持动态伸缩的并行计算的方法 | |
CN107526648A (zh) | 一种处理节点设备宕机的方法及装置 | |
CN107247621B (zh) | 批处理任务的调度方法及装置 | |
Kotthoff et al. | Distributed solving through model splitting | |
Ramírez et al. | Differences of energetic consumption between Java and JNI Android apps | |
CN113742052B (zh) | 批量任务处理方法和装置 |
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: 20160831 |