数据处理作业调度方法、装置及系统的制作方法

文档序号:10534592阅读:222来源:国知局
数据处理作业调度方法、装置及系统的制作方法
【专利摘要】本发明实施例提供一种数据处理作业调度方法、装置及系统,所述方法包括:获取预先配置的数据处理流程的各个作业之间的依赖关系;初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;响应所述第一更新指令,将不存在前提作业的运行状态更新为可以运行;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行成功或运行失败,并生成第二更新指令;响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。本发明实施例减少作业调度时间,提高了作业调度效率。
【专利说明】
数据处理作业调度方法、装置及系统
技术领域
[0001] 本发明实施例涉及计算机技术领域,尤其涉及一种数据处理作业调度方法、装置 及系统。
【背景技术】
[0002] 在进行数据处理的流程中,特别是大数据领域比较复杂的数据处理流程中,通常 是将数据处理流程划分为若干作业对数据进行处理。
[0003] 这些作业之间有的需要依赖其他作业的正确运行结果才能够运行,有的作业之间 并无这种依赖关系,可以并发运行。而整个数据处理流程的全部作业均运行成功,数据处理 流程才会认为运行成功,如果一个作业依赖的前提作业还未运行或运行失败,该作业即开 始执行,则会造成数据错误,数据处理流程也会认为运行失败,因此需要对作业进行有效的 调度。
[0004] 现有技术的一种数据处理作业调度方法中,是由技术人员根据数据处理流程中各 个作业之间的依赖关系,首先将各个作业划分多个执行阶段。根据依赖关系可知,这些执行 阶段之间存在执行顺序。在进行作业调度时,即按照执行阶段的执行顺序,分阶段的进行作 业调度,每一个阶段的作业全部运行成功之后,再调度下一个阶段中的作业执行。比如,假 设数据处理流程包括作业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。
[0005] 由上述描述过程可知,现有的数据处理作业调度方法,虽然可以保证作业有序执 行,不会造成数据错误,但是分阶段执行这种方式,使得作业调度效率较低,比如上述假设 中,作业B和作业D之间存在依赖关系,作业B运行成功之后,作业D即可以运行了,但是按 照分阶段执行的方式,作业C若未运行完成,作业D仍无法运行,这就会导致作业调度时间 较长,降低了作业调度效率。

【发明内容】

[0006] 本发明实施例提供一种数据处理作业调度方法、装置及系统,用以解决现有技术 中作业调度时间长,作业调度效率低的技术问题。
[0007] 本发明实施例提供一种数据处理作业调度方法,包括:
[0008] 获取预先配置的数据处理流程的各个作业之间的依赖关系;
[0009] 初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令;
[0010] 响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将 不存在前提作业的作业的运行状态更新为可以运行;
[0011] 调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为 运行成功或运行失败,并生成第二更新指令;
[0012] 响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将 存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以 运行。
[0013] 本发明实施例提供一种数据处理作业调度装置,包括:
[0014] 作业调度模块,用于初始化数据处理流程的各个作业的运行状态为不可运行,生 成第一更新指令;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运 行状态为运行成功或运行失败,并生成第二更新指令;
[0015] 所述规则确定模块,用于获取预先配置的数据处理流程的各个作业之间的依赖关 系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在 前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理 流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行 成功的作业的运行状态,更新为可以运行。
[0016] 本发明提供一种数据处理作业调度系统,包括至少一个作业调度节点、至少一个 规则推理节点以及多个计算节点;
[0017] 任一个作业调度节点,用于初始化数据处理流程的各个作业的运行状态为不可运 行,生成第一更新指令;将运行状态为可以运行的作业提供给所述多个计算节点,由至少一 个计算节点运行至少一个运行状态为可以运行的作业;根据运行结果更新所述作业的运行 状态为运行成功或运行失败,并生成第二更新指令;
[0018] 任一个规则推理节点,用于获取预先配置的数据处理流程的各个作业之间的依赖 关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存 在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处 理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运 行成功的作业的运行状态,更新为可以运行;
[0019] 所述计算节点,用于运行所述作业调度节点提供的运行状态为可以运行的作业。
[0020] 本发明实施例提供的数据处理作业调度方法、装置及系统,通过规则推导的方式, 根据作业之间依赖关系,可以更新各个作业的运行状态,从而存在运行状态为可以运行的 作业时,即可以该调度运行状态为可以运行的作业运行。既可以保证存在依赖关系的作业 能够有序执行,不会出现数据错误,且当前作业在其前提作业运行成功之后,即可以运行, 无需等待,减少了作业调度时间,同时无依赖关系的作业可以并发执行,进一步减少了作业 调度时间,提高了作业调度的效率。
【附图说明】
[0021] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根 据这些附图获得其他的附图。
[0022] 图1为本发明数据处理作业调度方法一实施例的流程图;
[0023] 图2为本发明提供的DAG(Directed Acyclic Graph,有向无环图)的一种示意图;
[0024] 图3为本发明数据处理作业调度方法又一实施例流程图;
[0025] 图4为本发明数据处理作业调度装置一实施例结构示意图;
[0026] 图5为本发明数据处理作业调度装置又一实施例结构示意图;
[0027] 图6为本发明数据处理作业调度装置又一实施例结构示意图;
[0028] 图7为本发明数据处理作业调度系统一实施例结构示意图;
[0029] 图8为本发明数据处理作业调度系统又一实施例结构示意图。
【具体实施方式】
[0030] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0031] 正如【背景技术】中所述,现有技术中分阶段的数据处理作业调度方法,为了保证作 业能够有序执行,在一个执行阶段中的作业未运行成功时,下一个执行阶段中的作业将无 法调度运行,这就会导致作业调度时间较长,降低了作业调度效率。特别是当数据处理流程 中作业较多,作业之间的依赖关系很复杂时,作业调度效率将受到很大的影响,且由于执行 阶段需要人工来划分,工作量较大,也会影响作业调度时间,且执行阶段划分的准确性也无 法完全保证。
[0032] 为了解决现有技术中存在的技术问题,发明人经过不断的研究发现,为了保证作 业调度时间,提高作业调度效率,作业有序执行的同时,就要减少作业等待执行的时间。
[0033] 发明人进一步发现,为了减少作业等待执行时间,又保证作业有序的执行,可以将 无依赖关系的作业最大化的并行运行,也即将无依赖关系的作业同时运行,将会大大提高 作业调度效率,且可以充分的利用计算资源。
[0034] 因此,发明人基于这一创造性的思维,提出了本发明的技术方案:
[0035] 在本发明实施例中,首先将数据处理流程的各个作业的运行初始化为不可运行; 根据预先配置的作业之间依赖关系,再将不存在前提作业的作业的运行状态更新为可以运 行;从而根据作业的运行状态,可以调度运行状态为可以运行的作业运行,并根据运行结果 更新所述作业的运行状态为运行成功或运行失败;根据作业之间的依赖关系,可以将存在 前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。 采用根据各个作业的运行状态进行调度的方式,不存在前提作业的作业首先运行,每一个 作业在前提作业均运行成功之后运行,保证了作业能够有序执行;且当前作业在其前提作 业运行成功之后,即可以运行,无需等待,减少了作业调度时间;且由于作业的前提作业均 运行成功,作业即可以运行,使得无依赖关系的作业,可以最大化的并发运行,进一步减少 了作业调度时间,提高了作业调度的效率。同时,作业的并发运行,也使得计算资源也得到 了充分利用。
[0036] 且本发明实施例中,直接根据预先配置的数据处理流程的各个作业之间的依赖关 系进行调度,无需由人工划分为多个执行阶段,也节省了人工工作量,从而进一步提高了作 业调度效率。
[0037] 下面结合附图对本发明技术方案进行详细描述。
[0038] 图1为本发明实施例提供的一种数据处理作业调度方法一个实施例的流程图,该 方法可以包括以下几个步骤:
[0039] 101 :获取预先配置的数据处理流程的各个作业之间的依赖关系。
[0040] 102 :初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指 令。
[0041] 103:响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关 系,将不存在前提作业的作业的运行状态更新为可以运行。
[0042] 按照所述数据处理流程的各个作业之间的依赖关系,可以确定出不存在前提作业 的作业,因此通过响应第一更新指令,可以将该不存在前提作业的作业的运行状态更新为 可以运行。
[0043] 104:调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状 态为运行成功或运行失败,并生成第二更新指令。
[0044] 105 :响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关 系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为 可以运行。
[0045] 按照所述数据处理流程的各个作业之间的依赖关系,可以确定出存在前提作业的 作业。通过响应第二更新指令,可以将存在前提作业的作业,且所述前提作业的运行状态均 为运行成功的作业的运行状态,更新为可以运行。
[0046] -个数据处理流程中的作业之间存在依赖关系,根据作业之间的依赖关系,最终 会汇聚到一个作业,即数据处理流程中最后一个作业。
[0047] 前提作业是指任一个作业需要依赖其运行结果才能运行的作业。例如作业B依赖 作业A的运行结果,作业A即为作业B的依赖的前提作业。
[0048] 由作业之间的依赖关系形成的拓扑结构中,部分作业可能是不存在依赖关系的, 这些不存在依赖关系的作业是可以并行执行的。
[0049] 因此,本发明实施例中,为数据处理流程中的各个作业记录运行状态,运行状态至 少包括不可运行、可以运行、运行成功、运行失败或放弃运行。如果作业的运行状态为可以 运行,则可以调度运行状态为可以运行的作业运行;
[0050] 如果运行状态为不可运行,则处于等待状态,等待可以运行的作业。
[0051] 在数据处理流程处理过程中,首先初始化数据处理流程的各个作业的运行状态为 不可运行,之后生成第一更新指令;检测到第一更新指令之后,可以将数据处理流程中不存 在前提作业的作业的运行状态更新为可以运行。从而即可以调度运行状态为可以运行的作 业运行,并可以根据运行结果更新所述作业的运行状态为运行成功或运行失败,同时生成 第二更新指令;检测到第二更新指令之后,即可以将存在前提作业,且所述前提作业的运行 状态均为运行成功的作业的运行状态,更新为可以运行。
[0052] 本发明实施例从不存在前提作业的作业,也即初始作业开始调度运行,通过规则 推导的方式,根据作业之间依赖关系,可以更新各个作业的运行状态,从而可以调度运行状 态为可以运行的作业运行。既可以保证存在依赖关系的作业能够有序执行,不会出现数据 错误,同时使得无依赖关系的作业可以并发执行,减少了作业调时间,提高作业调度效率, 且提高了资源的利用率。
[0053] 在进行规则推导时,是根据作业之间的依赖关系进行的,且为了避免死循环,在数 据处理流程的各个作业的运行状态均为运行成功、运行失败或放弃运行时,即可以结束流 程,停止作业调度。
[0054] 其中,为了方便区分作业的运行状态,本发明实施例中,通过响应所述第二更新指 令,还可以将存在前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运 行状态,更新为放弃运行。
[0055] 从而,如果检测到的作业为放弃运行,即不会运行该作业,从而可以减少计算步 骤。
[0056] 在实际应用中,本发明实施例可以通过软件实现时,响应第二更新指令更新作业 运行状态的执行程序可以如下所述:
[0057] generate-rules : if node has any dependencies for dependency in dependencies generate-rule dependenc\' end add-rule "if all deiipenclenci.es' status is then mark this node as 可以运行" add-rule "if ail denpendencies!status is or then mark this node as 放异运《亍" els:0 add-rule "if all nodes' status is th雜 mark this node a.s 卞厂以i在行 end
[0058] 其中,node表示作业,dependency即表示前提作业。
[0059] 数据处理流程的各个作业可以保存在数据库,以作业状态表的形式存储。在进行 作业调度时,通过读取作业状态表,获得各个作业的运行状态,进而将运行状态为可以运行 的作业调度运行,并根据运行结果,修改作业状态表中所述作业的运行状态。
[0060] 其中,将不存在前提作业的作业的运行状态更新为可以运行,以及将存在前提作 业,且所述前提作业的运行状态均为运行成功的作业的运行状态的状态推导过程,是按照 作业之间的依赖关系进行推导。
[0061] 为了清楚表示作业之间的依赖关系,且可以方便获取作业之间的依赖关系,作业 之间的依赖关系可以采用DAG(Directed Acyclic Graph,有向无环图)的方式进行表示,当 然也可以采用其他方式表示,比如采用关系树来表示,关系树中根节点依赖叶子节点运行, 任一个前提作业可以作为依赖其运行结果的作业的叶子节点,依赖前提作业运行结果的作 业可以作为该前提作业的根节点。
[0062] 因此,步骤102中响应所述第一更新指令,将不存在前提作业的作业的运行状态 更新为可以运行可以是:
[0063] 响应所述第一更新指令,按照DAG表示的所述数据处理流程的各个作业的依赖关 系,将不存在前提作业的作业的运行状态更新为可以运行;
[0064] 步骤104中响应所述第二更新指令,将存在前提作业,且所述前提作业的运行状 态均为运行成功的作业的运行状态,更新为可以运行可以是:
[0065] 响应所述第二更新指令,按照DAG表示的所述数据处理流程的各个作业之间的依 赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更 新为可以运行。
[0066] 如图2所不,不出了一种DAG不意图,表不一种作业依赖关系。
[0067] 由图2可知,作业E依赖的前提作业为作业C和作业D ;作业D依赖的前提作业为 作业B ;作业B和作业C依赖的前提作业均为作业A。
[0068] 作业E需要在作业C以及作业D都运行成功之后才能开始运行;作业D需要在作 业B运行成功之后才能开始运行;作业B和作业C需要在作业A运行成功之后才能开始运 行。
[0069] 下面以结合图2所述的作业依赖关系,来详细描述本发明实施例的技术方案,如 图3所示提供的本发明数据处理作业调度方法又一个实例的流程图中:
[0070] 301 :初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指 令。
[0071] 此时作业A、作业B、作业C、作业D以及作业E的运行状态均为不可运行。作业A、 作业B、作业C、作业D以及作业E之间的依赖关系预先配置好,可以采用DAG表示。
[0072] 302 :响应第一更新指令,将作业A的运行状态更新为可以运行。
[0073] 根据预先配置的各个作业之间的依赖关系,可知作业A即为不存在前提作业的作 业。
[0074] 303 :检测存在可以运行的作业A,调度作业A运行。
[0075] 304 :根据作业A的运行结果,更新作业A的运行状态为运行成功,并生成第二更新 指令。
[0076] 本实施例中,假设作业A的运行结果为运行成功。
[0077] 305 :响应第二更新指令,将作业B和作业C的运行状态更新为可以运行。
[0078] 根据预先配置的各个作业之间的依赖关系,可知作业B和作业C的前提作业为作 业A,且作业A的运行状态为运行成功,因此可以推导得到作业B以及作业C可以运行,将其 状态进行更新。
[0079] 306 :检测存在可以运行的作业B以及作业C,调度作业B和调度C运行。
[0080] 307 :根据作业B和作业C的运行结果,更新作业B的运行状态为运行成功,更新作 业C的运行状态为运行成功,并生成第二更新指令。
[0081 ] 本实施例中,假设作业B以及作业B均运行成功。
[0082] 308 :响应第二更新指令,将作业D的运行状态更新为可以运行。
[0083] 由于作业E依赖与作业B和作业D的运行结果,由于作业D未运行,因此无法推导 作业E的运行状态,因此仍为不可以运行。
[0084] 309 :检测存在可以运行的作业D,调度作业D运行。
[0085] 310 :根据作业D的运行结果,更新作业D的运行状态为运行失败,并生成第二更新 指令。
[0086] 311 :响应所述第二更新指令,将作业E的运行状态更新为放弃运行。
[0087] 根据预先配置的各个作业之间的依赖关系,可知作业E的前提作业为作业的B和 作业D,由于作业D的运行状态为运行失败,因此将作业E的运行状态更新为放弃运行。
[0088] 此时,各个作业的运行状态为运行成功、运行失败或放弃运行,因此即结束流程。
[0089] 通过本实施例,作业B和作业C无依赖关系,可以并发执行,因此减少了作业调时 间,可以提高资源利用率。且根据本实施例的运行状态更新以及推导,只有前提作业运行成 功的作业的运行状态才会更新为可以运行,否则继续保持不可运行或者放弃运行的状态, 从而保证了存在依赖关系的作业的有序执行,避免出现数据错误。
[0090] 本发明实施例在实际应用中,可以应用于任一个节点中,由该节点执行本发明实 施例的技术方案。其中,节点可以是指在服务器中部署的一个软件程序。在运行状态为可 以运行的作业包括多个时,调度运行状态可以运行的作业运行,具体可以是以并行方式运 行所述作业调度模块调度的运行状态为可以运行的作业,也即将运行状态为可以运行的作 业同时运行。
[0091] 而由于数据处理流程的作业可能包括多个,特别是大数据领域,数据处理流程很 复杂,作业数目也会很多,依赖关系也会复杂,可能存在大量需要并发执行的作业。而一个 节点可利用的资源是有限的,在大量作业并发运行时,可能导致资源不够用。
[0092] 因此,本发明实施例可以具体应用于分布式系统中,该分布式系统可以包括多个 计算节点。计算节点也即是指在服务器中部署的一个用于运行作业的计算程序。
[0093] 因此,本发明实施例中,调度运行状态为可以运行的作业运行可以是:
[0094] 将运行状态为可以运行的作业提供给多个计算节点,由至少一个计算节点获取并 运行至少一个运行状态为可以运行的作业。
[0095] 多个计算节点可以分别部署在不同的服务器中,也可以部署在同一台服务器中。
[0096] 在运行状态为可以运行的作业包括多个时,每一个可以运行的作业可以分配到一 个计算节点中运行,每一个计算节点可以运行至少一个运行状态为可以运行的作业从而通 过多个计算节点,分摊了作业运行量,实现了作业的分布式执行。使作业调度和作业执行可 以分离开来,且可以根据不同的需求设计分布式的系统,以实现大量作业的同时执行。
[0097] 图4本发明实施例提供的一种作业调度装置一个实施例的结构示意图,该装置可 以包括:
[0098] 作业调度模块401,用于初始化数据处理流程的各个作业的运行状态为不可运行, 生成第一更新指令;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的 运行状态为运行成功或运行失败,并生成第二更新指令;
[0099] 所述规则确定模块402,用于获取预先配置的数据处理流程的各个作业之间的依 赖关系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不 存在前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据 处理流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为 运行成功的作业的运行状态,更新为可以运行。
[0100] 规则确定模块主要负责根据作业之间的依赖关系,对作业的运行状态进行推导, 以确定出可以运行的作业。
[0101] 作业调度模块在存在运行状态为可以运行的作业时,即可以对可以运行的作业进 行调度。
[0102] 本发明实施例从不存在前提作业的作业,也即初始作业开始调度运行,通过规则 推导的方式,根据作业之间依赖关系,可以更新各个作业的运行状态,只有前提作业运行成 功的作业的运行状态才会更新为可以运行,否则继续保持不可运行或者放弃运行的状态, 从而既保证了存在依赖关系的作业的有序执行,不会出现数据错误,且前提作业如果存在 多个依赖其的作业时,只要其运行状态为运行成功,依赖其的多个作业均可以更新可以运 行,从而运行状态为可以运行的作业即可以进行运行,同时保证了无依赖关系的作业可以 并发执行,提高资源的利用率。
[0103] 作为又一个实施例,所述规则确定模块402响应所述第二更新指令,还用于,按照 所述数据处理流程的各个作业之间的依赖关系,将存在前提作业,且任一前提作业运行状 态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
[0104] 作业调度模块生成的第一更新指令以及第二更新指令,可以发送至规则确定模 块,以触发规则确定模块对作业的运行状态进行更新。
[0105] 作业调度模块如果检测到的作业为放弃运行,即不会运行该作业,从而可以减少 计算步骤。
[0106] 作业调度模块还用于在各个作业的运行状态均为运行成功、运行失败或放弃运行 时,即可以停止作业调度。
[0107] 因此规则确定模块响应所述第二更新指令,将存在前提作业,且所述前提作业的 运行状态均为运行成功的作业的运行状态,更新为可以运行具体是,响应第二更新指令,将 运行状态为不可运行,且存在前提作业,以及所述前提作业的运行状态均为运行成功的作 业的运行状态,更新为可以运行。
[0108] 其中,将不存在前提作业的作业的运行状态更新为可以运行,以及将存在前提作 业,且所述前提作业的运行状态均为运行成功的作业的运行状态的状态推导过程,是按照 作业之间的依赖关系进行推导。
[0109] 为了清楚表示作业之间的依赖关系,且可以方便获取作业之间的依赖关系,作业 之间的依赖关系可以采用DAG(Directed Acyclic Graph,有向无环图)的方式进行表示,当 然也可以采用其他方式表示,比如采用关系树来表示,关系树中根节点依赖叶子节点运行, 任一个前提作业可以作为依赖其运行结果的作业的叶子节点,依赖前提作业运行结果的作 业可以作为该前提作业的根节点
[0110] 因此,作为又一个实施例,所述规则确定模块402可以具体用于获取预设配置的 表示数据处理流程的各个作业之间的依赖关系的DAG ;响应所述第一更新指令,按照所述 DAG表示的所述数据处理流程各个作业的依赖关系,将不存在前提作业的作业的运行状态 更新为可以运行;响应所述第二更新指令,按照所述DAG表示的所述数据处理流程各个作 业的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行 状态,更新为可以运行。
[0111] 本发明实施例的数据处理流程的各个作业的运行状态可以保存在数据存储模块 中。
[0112] 因此如图5所示,作为又一个实施例,本发明实施例提供的数据处理作业调度装 置还包括数据存储模块403,用于存储各个作业的运行状态。
[0113] 作业调度模块以及规则确定模块可以对数据存储模块中的作业的运行状态进行 更新。
[0114] 作业调度模块401具体是:
[0115] 初始化数据处理流程的各个作业的运行状态为不可运行,存储在数据存储模块 403中,并生成第一更新指令;调度所述数据存储模块403中运行状态为可以运行的作业运 行,根据运行结果更新所述数据存储模块403中所述作业的运行状态为运行成功或运行失 败,并生成第二更新指令;
[0116] 所述规则确定模块402具体是:
[0117] 响应所述第一更新指令,将所述数据存储模块403中不存在前提作业的作业的运 行状态更新为可以运行;响应所述第二更新指令,将所述数据存储模块403中存在前提作 业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
[0118] 数据存储模块可以具体将各个作业的运行状态保存在作业状态表中。
[0119] 作业调度模块以及规则确定模块通过读取数据存储模块中的作业状态表,获得各 个作业的运行状态,进而可以进行作业调度或更新。
[0120] 在一种可能的实现方式中,如图6所示,作为又一个实施例,该装置还可以包括一 作业执行模块404,用于以并行方式运行所述作业调度模块401调度的运行状态为可以运 行的作业。
[0121] 本发明实施例提供的数据处理作业调度装置在实际应用中,即可以应用于一个节 点,由该节点实现作业的调度运行。
[0122] 而由于数据处理流程的作业可能包括多个,特别是大数据领域,数据处理流程很 复杂,作业数目也会很多,依赖关系也会复杂,可能存在大量需要并发执行的作业。而一个 计算节点的资源是有限的,在大量作业并发运行时,可能导致资源不够用。
[0123] 因此,作为另一种可能的实现方式,该作业调度模块调度运行状态为可以运行的 作业运行可以是:
[0124] 将运行状态为可以运行的作业提供给多个计算节点,由至少一个计算节点运行至 少一个运行状态为可以运行的作业。
[0125] 在运行状态为可以运行的作业包括多个时,可以由多个计算节点分摊运行,从而 实现了分布式执行,有利于作业的并发执行。
[0126] 且可以根据不同的需求设计分布式的系统,可以方便计算节点的扩展,以实现大 量作业的同时执行。
[0127] 该多个计算节点可以分别部署在一个或多个服务器中,一个服务器中可以至少部 署一个计算节点。
[0128] 结合上述描述,本发明实施例还提供了一种数据处理作业调度系统,如图7所示, 为本发明实施例提供的一种数据处理作业调度系统一个实施例的结构示意图,该系统可以 包括至少一个作业调度节点701、至少一个规则推理节点702以及多个计算节点703 ;
[0129] 任一个作业调度节点701,用于初始化数据处理流程的各个作业的运行状态为不 可运行,生成第一更新指令;将运行状态为可以运行的作业提供给所述多个计算节点,由至 少一个计算节点运行至少一个运行状态为可以运行的作业;根据运行结果更新所述作业的 运行状态为运行成功或运行失败,并生成第二更新指令;
[0130] 任一个规则推理节点702,用于响应所述第一更新指令,将不存在前提作业的作业 的运行状态更新为可以运行;响应所述第二更新指令,将存在前提作业,且所述前提作业的 运行状态均为运行成功的作业的运行状态,更新为可以运行;
[0131] 所述计算节点703,用于运行所述作业调度节点提供的运行状态为可以运行的作 业。
[0132] 该作业调度节点响应第二更新指令,还可以将存在前提作业,且任一前提作业运 行状态为运行失败或放弃运行的作业的运行状态,更新为放弃运行。
[0133] 本实施例中,由作业调度节点进行作业运行状态的初始化、更新以及作业调度,可 以调度多个计算节点运行,运行状态为可以运行的作业。
[0134] 采用本实施例所述的系统架构,可以方便扩展计算节点,以满足大量的并发执行 的作业。也可以方便的扩展作业调度节点和规则引擎节点,以提升系统处理能力,具有高度 容错能力。
[0135] 此外,如图8所示,该分布式系统还可以包括作业存储节点704,各个作业的运行 状态可以存储在作业存储节点704。作业调度节点以及规则推理节点通过与作业存储节点 的交互,更新作业存储节点中作业的运行状态。
[0136] 其中,作业调度节点、规则推理节点、计算节点以及作业存储节点等节点可以分别 是在服务器中部署的一个软件程序。
[0137] -个服务器可以部署不同类型的节点,例如作业调度节点、规则推理节点、计算节 点以及作业存储节点可以同时部署在一台服务器中,使得该服务器可以提供多种服务;也 可以仅部署一种类型节点,例如作业调度节点、规则推理节点、计算节点以及数据存储节点 分别部署在不同的服务器中,每台服务器提供一种服务。可以根据服务器资源的充足程度, 确定服务器中部署的节点类型。
[0138] 在本发明实施例提供的另一种数据处理作业调度系统中,该数据处理作业调度系 统可以包括至少一个控制节点以及多个计算节点;
[0139] 由控制节点初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更 新指令;响应所述第一更新指令,将不存在前提作业的作业的运行状态更新为可以运行; 将运行状态为可以运行的作业提供给所述多个计算节点,由至少一个计算节点获取并运行 至少一个运行状态为可以运行的作业;获取并根据运行结果更新所述作业的运行状态为运 行成功或运行失败,生成第二更新指令;响应所述第二更新指令,将存在前提作业,且所述 前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。
[0140] 其中,控制节点可以是服务器中部署的实现控制功能的一个软件程序。
[0141] 在实际应用中,本发明实施例的数据处理作业调度系统可以采用Jenkins作为计 算作业执行的底层实现,可以使用主/从模式方便的扩展不同类型的节点,以满足不断增 加的计算需求。检测到运行状态为可以运行的作业后,会调用Jenkins API将这些作业分 发到每个计算节点执行,并可以定时读取作业的执行结果。
[0142] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单 元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可以理解并实施。
[0143] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上 述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该 计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指 令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施 例或者实施例的某些部分所述的方法。
[0144] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
【主权项】
1. 一种数据处理作业调度方法,其特征在于,包括: 获取预先配置的数据处理流程的各个作业之间的依赖关系; 初始化数据处理流程的各个作业的运行状态为不可运行,生成第一更新指令; 响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存 在前提作业的作业的运行状态更新为可以运行; 调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状态为运行 成功或运行失败,并生成第二更新指令; 响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在 前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以运行。2. 根据权利要求1所述的方法,其特征在于,调度运行状态为可以运行的作业运行,并 根据运行结果更新所述作业的运行状态为运行成功或运行失败,生成第二更新指令之后, 所述方法还包括: 响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在 前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放 弃运行。3. 根据权利要求1所述的方法,其特征在于,所述调度运行状态为可以运行的作业运 行包括: 将运行状态为可以运行的作业提供给多个计算节点,由至少一个计算节点运行至少一 个运行状态为可以运行的作业。4. 根据权利要求1所述的方法,其特征在于,所述数据处理流程的各个作业之间的依 赖关系通过有向无环图表示; 获取预先配置的数据处理流程的各个作业之间的依赖关系包括: 获取预先配置的表示数据处理流程的各个作业之间的依赖关系有向无环图; 所述响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将 不存在前提作业的作业的运行状态更新为可以运行包括: 响应所述第一更新指令,按照所述有向无环图表示的数据处理流程的各个作业之间的 依赖关系,将不存在前提作业的作业的运行状态更新为可以运行; 所述响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将 存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态,更新为可以 运行包括: 响应所述第二更新指令,按照所述有向无环图表示的所述数据处理流程的各个作业之 间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行 状态,更新为可以运行。5. -种数据处理作业调度装置,其特征在于,包括: 作业调度模块,用于初始化数据处理流程的各个作业的运行状态为不可运行,生成第 一更新指令;调度运行状态为可以运行的作业运行,根据运行结果更新所述作业的运行状 态为运行成功或运行失败,并生成第二更新指令; 规则确定模块,用于获取预先配置的数据处理流程的各个作业之间的依赖关系;响应 所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在前提作 业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理流程的 各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的 作业的运行状态,更新为可以运行。6. 根据权利要求5所述的装置,其特征在于,所述规则确定模块还用于: 响应所述第二更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将存在 前提作业,且任一前提作业运行状态为运行失败或放弃运行的作业的运行状态,更新为放 弃运行。7. 根据权利要求5所述的装置,其特征在于,所述作业调度模块调度运行状态为可以 运行的作业运行具体是: 将运行状态为可以运行的作业提供给至少一个计算节点运行,由至少一个计算节点运 行至少一个运行状态为可以运行的作业。8. 根据权利要求5所述的装置,其特征在于,还包括作业执行模块; 所述作业执行模块,用于以并行方式运行所述作业调度模块调度的运行状态为可以运 行的作业。9. 根据权利要求5所述的方法,其特征在于,所述数据处理流程的各个作业之间的依 赖关系通过有向无环图表示; 所述规则确定模块具体用于获取预设配置的表示数据处理流程的各个作业之间的依 赖关系的有向无环图;响应所述第一更新指令,按照所述有向无环图表示的所述数据处理 流程的各个作业之间的依赖关系,将不存在前提作业的作业的运行状态更新为可以运行; 响应所述第二更新指令,按照所述有向无环图表示的所述数据处理流程的各个作业之间的 依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行成功的作业的运行状态, 更新为可以运行。10. -种数据处理作业调度系统,其特征在于,包括至少一个作业调度节点、至少一个 规则推理节点以及多个计算节点; 任一个作业调度节点,用于初始化数据处理流程的各个作业的运行状态为不可运行, 生成第一更新指令;将运行状态为可以运行的作业提供给所述多个计算节点,由至少一个 计算节点运行至少一个运行状态为可以运行的作业;根据运行结果更新所述作业的运行状 态为运行成功或运行失败,并生成第二更新指令; 任一个规则推理节点,用于获取预先配置的数据处理流程的各个作业之间的依赖关 系;响应所述第一更新指令,按照所述数据处理流程的各个作业之间的依赖关系,将不存在 前提作业的作业的运行状态更新为可以运行;响应所述第二更新指令,按照所述数据处理 流程的各个作业之间的依赖关系,将存在前提作业,且所述前提作业的运行状态均为运行 成功的作业的运行状态,更新为可以运行; 所述计算节点,用于运行所述作业调度节点提供的运行状态为可以运行的作业。
【文档编号】G06F9/48GK105893122SQ201510526866
【公开日】2016年8月24日
【申请日】2015年8月25日
【发明人】许鹭清, 陈抒
【申请人】乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1