CN111597143A - 一种将dag图数据转换为工作流引擎调度文件的方法 - Google Patents

一种将dag图数据转换为工作流引擎调度文件的方法 Download PDF

Info

Publication number
CN111597143A
CN111597143A CN202010214907.3A CN202010214907A CN111597143A CN 111597143 A CN111597143 A CN 111597143A CN 202010214907 A CN202010214907 A CN 202010214907A CN 111597143 A CN111597143 A CN 111597143A
Authority
CN
China
Prior art keywords
node
nodes
file
graph data
workflow engine
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.)
Granted
Application number
CN202010214907.3A
Other languages
English (en)
Other versions
CN111597143B (zh
Inventor
郑焕波
华洁
刘钊岐
李少利
赵政康
张惠根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETHIK Group Ltd
Original Assignee
CETHIK Group Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETHIK Group Ltd filed Critical CETHIK Group Ltd
Priority to CN202010214907.3A priority Critical patent/CN111597143B/zh
Publication of CN111597143A publication Critical patent/CN111597143A/zh
Application granted granted Critical
Publication of CN111597143B publication Critical patent/CN111597143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/116Details of conversion of file system types or formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种将DAG图数据转换为工作流引擎调度文件的方法,包括根据DAG图数据的文件类型解析获取DAG图数据中的节点及其属性信息生成节点类实例,获取节点之间连接关系;根据工作流引擎定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点连接关系生成执行引擎节点的输入输出信息和前后依赖节点信息;根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排;将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出工作流引擎调度文件。本发明实现将各种格式的DAG图数据转换为多类型工作流引擎调度文件,降低DAG图数据转换难度,提高工作流引擎切换效率。

Description

一种将DAG图数据转换为工作流引擎调度文件的方法
技术领域
本申请属于大数据分析技术领域,具体涉及一种将DAG图数据转换为工作流引擎调度文件的方法。
背景技术
随着信息技术的发展,数据挖掘、机器学习、人工智能、统计分析等技术在数据分析领域获得广泛应用。与此同时为应对海量数据处理任务,出现了多种分布式计算框架,如hadoop yarn、mesos、kubernetes等。
大数据分析处理任务大都包含多个数据处理步骤,每个步骤的数据处理算法需提交计算框架运行,其中有些步骤可以并发执行,有些步骤需要有依赖关系。为将这种复杂的任务调度到分布式技术框架运行,出现了很多的工作流调度引擎。但这些工作流调度引擎都通过自定义调度文件的形式编排任务运行流程。调度文件一般复杂难写,而且调度文件千差万别,要切换调度引擎需要修改大量内容。
与此同时,很多机器学习平台出现了通过拖拽即可构建机器学习模型的方法,大大简化了建模过程。这些模型大都基于DAG图。要将DAG图模型提交分布式技术框架运行,需要将DAG图转换成满足工作流引擎调度文件规定格式,而目前工作流引擎形式各异,所对应的调度文件也是格式各异,这给DAG图的转换带来的极大的难度。
发明内容
本申请的目的在于提供一种将DAG图数据转换为工作流引擎调度文件的方法,实现将各种格式的DAG图数据转换为多类型的工作流引擎调度文件,降低DAG图数据的转换难度,提高工作流引擎切换效率。
为实现上述目的,本申请所采取的技术方案为:
一种将DAG图数据转换为工作流引擎调度文件的方法,所述将DAG图数据转换为工作流引擎调度文件的方法,包括:
步骤S1、获取待转换的DAG图数据,识别DAG图数据的文件类型;
步骤S2、根据所述文件类型解析DAG图数据,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
步骤S3、根据工作流引擎定义执行引擎节点类信息的格式,根据定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点之间的连线以及连线方向的类实例生成执行引擎节点的输入输出信息和前后依赖节点信息;
步骤S4、根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排;
步骤S5、根据工作流引擎所需调度文件的格式以及文件类型,将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出与工作流引擎所需的文件类型对应的工作流引擎调度文件。
作为优选,所述工作流引擎包括oozie工作流引擎、azkaban工作流引擎,所述oozie工作流引擎对应的调度文件为oozie workflow.xml,所述azkaban工作流引擎的调度文件为azkaban flow。
作为优选,所述DAG图数据转换为oozie工作流引擎的调度文件oozieworkflow.xml的过程包括:
a、获取待转换的DAG图数据;
b、继承预定义的节点以及连接线的抽象类,根据oozie的workflow.xml中action节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
c、继承实现预定义的节点转换接口中的方法,将解析DAG图数据获取的节点类实例,转换成oozie工作流引擎中action节点对应的节点属性,同时按照DAG图数据中任务节点端口三级规则组成输出地址,加入节点属性,同时根据DAG图数据中节点的连接关系,生成节点输入地址以及各节点的前后节点属性信息;
d、继承实现预定义的任务编排接口中的方法,在出度大于1的地方插入oozie工作流引擎的fork-join控制节点达到并发执行,之后插入start、end、fail控制节点,得到任务信息;
e、继承实现接口及抽象类的预定义的文件输出方法,实现写workflow.xml文件功能,按照文件中的布局信息,将任务信息输出到文件的<workflow>中,之后将节点类的属性信息输出到文件的<task>中,得到工作流引擎调度文件。
作为优选,所述在出度大于1的地方插入oozie工作流引擎的fork-join控制节点达到并发执行,之后插入start、end、fail控制节点,得到任务信息,包括:
d1、找出入度为零的节点,创建start控制节点,建立start控制节点与入度为零的所有节点的前后输出连接关系,将start控制节点作为当前节点;
d2、取消当前节点的所有节点连接关系,将当前节点的所有输出节点中入度为0的节点取出;
d3、取出的节点个数如果大于1,则创建oozie工作流引擎的fork-join控制节点,将当前节点与fork控制节点建立前后输出关系,将fork控制节点与当前节点的所有输出节点建立前后输出关系;同时将当前节点的所有输出节点与join控制节点建立前后输出关系,将join控制节点与当前节点的所有输出节点的建立前后输出关系;最后将join控制节点作为当前节点,返回步骤d2重新开始执行;
d4、取出的节点个数如果等于1,则将当前节点的下一个节点作为当前节点,返回步骤d2重新开始执行;
d5、取出的节点个数如果等于0,则表示执行完成,创建出end控制节点以及fail控制节点,创建当前节点与end控制节点的前后输出连接,完成节点编排。
作为优选,所述DAG图数据转换为azkaban工作流引擎的调度文件azkaban flow的过程包括:
a、获取待转换的DAG图数据;
b、继承预定义的节点以及连接线的抽象类,根据azkaban flow中node节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
c、继承实现预定义的节点转换接口中的方法,将解析DAG图数据获取的节点类实例,转换成azkaban工作流引擎中node节点对应的节点属性,同时按照DAG图数据中任务节点端口三级规则组成输出地址,加入节点属性,同时根据DAG图数据中节点的连接关系,生成节点输入地址以及各节点的前后节点属性信息;
d、继承实现预定义的任务编排接口中的方法,直接返回节点转换后得到的各节点的前后节点属性信息,得到任务信息;
e、继承实现接口及抽象类的预定义的文件输出方法,实现写flow文件功能,按照文件中的布局信息,将任务信息输出到文件的<config>中,之后将节点类的属性信息输出到文件的<nodes>下边的node标签中,得到工作流引擎调度文件。
本申请提供的将DAG图数据转换为工作流引擎调度文件的方法,该方法提供了大量接口及抽象类,通过定义的接口以及抽象类,可实现自定义DAG数据的存储格式和自定义工作流引擎类型,同时通过实现接口以及抽象类,给出了常用工作流引擎的内置实现,用户可直接使用,从而极大的简化了调度文件的复杂度,并有效的降低了用户在不同工作流引擎直接切换的工作量。
附图说明
图1为本申请的将DAG图数据转换为工作流引擎调度文件的方法的流程图;
图2为实施例1中oozie工作流引擎任务编排的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。
其中一个实施例中,提供一种将DAG图数据转换为工作流引擎调度文件的方法,该方法能够自主识别DAG图数据的格式,解析并读取DAG图数据,将DAG图数据中的节点转换成工作流任务节点,并根据连线生成依赖关系,最后输出满足工作流引擎需求的调度文件格式,不仅降低了调度文件的生成难度,而且适应于工作流引擎的切换,提高切换效率。
如图1所示,本实施例中的将DAG图数据转换为工作流引擎调度文件的方法,包括以下步骤:
步骤S1、获取待转换的DAG图数据,识别DAG图数据的文件类型。
待转换的DAG图数据可以有多种类型,例如json、xml、yaml格式等,当然还可以是自定义的DAG图数据表示格式,提高该方法的普适性。
步骤S2、根据所述文件类型解析DAG图数据,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例。
在解析过程中,首先定义DAG图数据中工作流任务、节点以及连接线的抽象类,类中实现必要的属性信息,继承抽象类并实现特殊属性信息定义,自动完成json、xml、yaml等格式文件的加载解析并生成实例信息,得到DAG图实例数据。
需要说明的是,若DAG图数据的类型为自定义格式,则在进行解析时需事先自定义对应的DAG节点类数据。
步骤S3、根据工作流引擎定义执行引擎节点类信息的格式,根据定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点之间的连线以及连线方向的类实例生成执行引擎节点的输入输出信息和前后依赖节点信息。这里的输入输出信息代表了工作流引擎中数据流程,是要处理数据的位置。
在转换过程中,首先定义的工作流任务以及各节点的抽象类,工作流任务指整个DAG图的属性信息,可以认为是节点以及连接线的容器,具有包含关系。根据所选的工作流引擎定义具体的实现类。
之后根据预定义的节点转换接口方法,继承实现相关接口的方法,完成自定义转换逻辑,将解析DAG图数据获取的节点类实例转换成执行引擎节点类数据,并根据节点之间的连线关系(连线以及连线方向)生成输入输出信息,以及根据连线关系生成执行引擎节点之间的前后依赖节点信息,得到工作流实例数据。
需要说明的是,本申请中提到的接口一般指面向对象编程语言中的接口概念,类通过实现接口中定义的方法完成具体逻辑。
步骤S4、根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排,形成具有执行顺序的任务信息。
在编排过程中,定义任务编排接口方法,根据具体的工作流引擎实现接口方法,完成编排逻辑,得到工作流排序数据。
步骤S5、根据工作流引擎所需调度文件的格式以及文件类型,将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出与工作流引擎所需的文件类型对应的工作流引擎调度文件。
首先定义文件输出相关接口及抽像方法,继承接口及抽象类并实现输出逻辑,根据工作流引擎自定义文件生成规则,将工作流的节点信息持久化到文件中。
最终得到工作流引擎可执行的调度文件,该调度文件可以是xml、yaml格式等,并且符合对应工作流引擎的规则,能够被工作流引擎调度执行,极大地简化了调度文件的复杂度并有效的降低了用户在不同工作流引擎直接切换的工作量。
为了便于本申请的转换方法方便使用,可设置部分工作流调度文件为该方法内置实现,以便于快速转换出常用的工作流引擎的调度文件。例如在一实施例中工作流引擎包括oozie工作流引擎、azkaban工作流引擎,oozie工作流引擎对应的调度文件为oozieworkflow.xml(也称workflow.xml),azkaban工作流引擎的调度文件为azkaban flow(也称azkaban.flow),即提供oozie workflow.xml以及azkaban flow两种工作流调度文件的内置实现,可根据DAG图数据转换出oozie以及azkaban两种工作流引擎的任务调度文件。
为了进一步阐述本申请的将DAG图数据转换为工作流引擎调度文件的方法,下面以工作流引擎oozie为例进行描述,DAG图数据转换为oozie工作流引擎的调度文件oozieworkflow.xml的过程包括如下具体步骤:
实施例1
步骤1:获取DAG图数据。
对于基于DAG图构建的建模任务,其数据存储格式有多种类型,但核心内容一般有工作流任务描述信息、节点信息、节点连接信息。数据可通过json、xml、yaml等数据格式来保存。如下以json格式为示例,定义了DAG图数据大致的存储结构如下:
Figure BDA0002424067270000061
Figure BDA0002424067270000071
DAG图数据的存储结构比较简单,其中task标签下存储的大致为任务相关的属性,文中为描述方便只列出了id与name两个属性。nodes标签下存储了节点信息及其属性,文中只展示两个节点,每个节点展示了四个基本属性。links标签代表了节点之间的连线,其中属性代表了上下节点以及节点端口之间关系。
当然获取的DAG图数据也可以是根据需要自定义设计的DAG图数据结构以及相关的属性。
步骤2:解析文件获取DAG图数据。
定义接口与抽象类,通过继承抽象类并实现接口即可完成自定义文件解析工作。在解析时继承预定义的节点以及连接线的抽象类,根据oozie的workflow.xml中action节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例。
本步骤定义的抽象类与接口主要包括如下:GraphNodeDef抽象类,定义了基本的节点属性;GraphEdgeDef抽象类,定义了节点连线的基本属性;GraphJobDef抽象类,定义DAG任务的基本属性信息,任务的属性指DAG图基本属性,与节点中的属性不同,与工作流任务属性相似,一个任务包含任务属性,以及若干个节点和节点连接关系;以及文件解析工具接口GraphBuilder。
对应于本申请实施例1步骤1中所定义的DAG图数据存储格式,基于上述抽象类提供具体类的实现,之后通过解析工具接口去加载并解析文件,最后解析完成后获得GrapDef的实例,实例内部存储了任务属性、节点集合、连接集合等。
对于用户自定义的文件类型,用户实现抽象类,并根据需要添加属性内容,同时实现GraphBuilder接口的方法,完成文件加载与解析。
步骤3:完成节点转换,生成执行引擎节点类数据。
不同的工作流引擎自定义有不同的调度文件规范。调度文件格式千差万别,并且文件内部标签属性也大不相同。为了支持多种工作流引擎,使得在切换工作流引擎时不必重新定义DAG图数据存储格式,本实施例带有节点转换功能。只需获取预定义的DAG图数据格式,当需要生成不同的工作流引擎调度文件的时候,只需要实现对应的节点转换逻辑,即可将当前解析获得的DAG节点数据,变成对应的工作流引擎节点数据。
在节点转换过程中,获取工作流任务以及各节点的抽象类,根据选择的工作流引擎来实现工作流节点,之后按照DAG节点属性与工作流节点之间的对应关系进行转换,得到执行引擎节点类实例;同时还需要根据DAG图节点之间的连接关系,构建出工作流节点之间的上下连接关系。
完成此步骤的具体过程如下:
a、定义节点转换所需的工作流任务以及各节点的抽象类。节点抽象类主要是NodeDef,其定义了节点名等基本属性。工作流任务抽象类,定义了基本属性及添加节点类的方法,并提供节点添加与节点查找方法。节点转换接口主要是为完成转换设计的,主要包括输出地址生成、节点属性转换、上下关系节点生成等方法。
b、根据所选择的工作流引擎类型以及工作流引擎内部节点类别实现抽象节点,并且添加相应的属性。本实施例中设置部分工作流引擎的内置实现,比如oozie引擎的workflow.xml,文件内不同节点类型的实现,如果采用oozie工作流引擎,则可以直接使用内置的实现。
c、实现节点转换接口中的地址生成方法,根据算法运行数据是否需要数据保存地址,规划保存地址输出规则。需要根据算法输出端口的个数,生成对应的地址。如果用户在生成DAG图数据的时候已经在端口属性中实现了输出地址的定义,则这一步可以省略。对于oozie引擎节点转换工具的实现,本实施例按照DAG图数据中任务节点端口三级规则组成输出地址(即使用“taskid_nodeid_portid”三级结构生成输出地址),加入节点属性。
d、实现节点转换接口中的属性转换方法,将DAG图数据中的节点属性转换成工作流引擎节点实例的属性。根据属性对应关系完成转换,转换后变成工作流引擎节点内部属性。对于oozie引擎节点转换的实现,本实施例将DAG图数据中的属性转换成workflowaction节点属性,如DAG图数据中spark算法,其nodename,jar、hdfsmaster、proper等属性转换成workflow中的spark节点实例中的name、jar、name-node、arg等属性。
e、定义工作流引擎任务类,继承并实现工作流任务抽象类,将DAG图数据中的任务基本属性,转换成工作流引擎任务类中的属性,同时将上一步中节点转换生成的工作流节点实例,需通过addNode方法添加的任务类中,node节点在任务实例中以数组的形式保存。
f、实现节点转换接口中的节点关系方法,方法主要是读取DAG图数据中的连接关系,根据连接关系中的源节点、目标节点、源端口、目标端口等属性,创建出工作流节点的下一个连接节点,得到各节点的前后节点属性信息(即执行引擎节点的前后依赖节点信息),并根据连线源节点的输出端口地址,创建出连线的目标节点的输入地址。
步骤4:编排工作流引擎任务节点调度顺序。
不同的工作流引擎都通过特殊定义来实现任务的顺序执行以及任务的并发执行,有的工作流引擎的任务编排较简单,有的较复杂难懂,因此通过定义任务编排接口方法,具体实现过程根据所选工作流引擎实现。
本实施例给出接口定义的同时,也内置了几种工作流引擎任务编排的实现,下面以oozie工作流引擎任务编排为例,介绍具体实现过程。
oozie工作流引擎的调度比较复杂,除任务节点外,还有很多控制节点,控制节点主要是进行开始、结束、出错、并发等控制任务。oozie工作流引擎在编排时主要在出度大于1的地方插入oozie工作流引擎的fork-join控制节点达到并发执行,之后插入start、end、fail等控制节点,得到任务信息。
如图2所示,oozie工作流引擎在编排包括以下具体步骤:
d1、找出入度为零的节点,创建start控制节点,建立start控制节点与入度为零的所有节点的前后输出连接关系,将start控制节点作为当前节点,其中start控制节点的入度为0。
d2、取消当前节点的所有节点连接关系,将当前节点的所有输出节点中入度为0的节点取出;若不存在当前节点则直接结束编排。
d3、取出的节点个数如果大于1,则创建oozie工作流引擎的fork-join控制节点,将当前节点与fork控制节点建立前后输出关系,将fork控制节点与当前节点的所有输出节点建立前后输出关系;同时将当前节点的所有输出节点与join控制节点建立前后输出关系,将join控制节点与当前节点的所有输出节点的建立前后输出关系;最后将join控制节点作为当前节点,返回步骤d2重新开始执行。
d4、取出的节点个数如果等于1,则将当前节点的下一个节点作为当前节点,返回步骤d2重新开始执行。
d5、取出的节点个数如果等于0,则表示执行完成,创建出end控制节点以及fail控制节点,创建当前节点与end控制节点的前后输出连接,完成节点编排。
步骤5:输出调度文件。
不同的工作流引擎的调度文件类型不同,因此对于不同的调度引擎均需要定制输出实现逻辑。为增加工作流引擎的支持范围,本实施例设计了文件输出的接口方法。根据所选的工作流引擎自定义生成文件的代码实现。同时本实施例给出内置工作流引擎的本步骤实现。
本步骤涉及到的接口与抽象类在步骤3中已经定义,主要包括的接口及抽象类,节点抽象类NodeDef中添加输出到文件的方法,以及工作流任务接口和抽象类中添加文件输出方法。用户在实现这些接口及抽象类的时候,实现对应的文件输出方法即可。
本文以内置实现oozie的相关实现类为示例详述,oozie输出文件以xml格式存储,按照所用编程语言加载相关工具包,之后编程实现即可,具体如下:
首先,实现NodeDef节点中的方法,对应oozie引擎的不同node节点类型,其实现逻辑亦不相同,如start、end、fork、join等控制节点,其实现逻辑较简单,安照oozie的workflow.xml文件中节点定义输出类,并将节点类的属性信息输出到文件的<task>中,添加节点中的属性。
其次,对于任务节点,根据不同任务编写实现,如spark、java、ssh等,也是根据oozie的workflow.xml文件中布局信息,将任务信息输出到文件的<workflow>中,任务节点相关属性较多,需定义的输出类稍微复杂。
最后,对于工作流任务实现文件输出,首先定义任务输出类,并对工作流任务中的任务属性编写输出类,之后将任务属性输出类以及节点输出类添加到任务输出类中,最后,将创建的输出类实例持久化到文件即可。
以上即为本实施例提供的以工作流引擎oozie为例进行描述的将DAG图数据转换为工作流引擎调度文件的方法,根据具体实现过程可知,本实施例提供了大量接口及抽象类,通过定义的接口以及抽象类,可实现自定义DAG数据的存储格式和自定义工作流引擎类型,同时通过实现接口以及抽象类,给出了常用工作流引擎的内置实现,可直接使用,从而极大的简化了调度文件的复杂度,并有效的降低了用户在不同工作流引擎直接切换的工作量。
对于azkaban工作流引擎而言,将DAG图数据转换为调度文件azkaban flow的过程与oozie工作流引擎存在部分相同,由于azkaban工作流引擎也是常有的工作流引擎,因此本申请以azkaban工作流引擎为对象,通过实施例说明DAG图数据转换为azkaban工作流引擎的调度文件azkaban flow的过程。
实施例2
将DAG图数据转换为azkaban工作流引擎的调度文件azkaban flow的过程,主要包括以下步骤:
a、获取待转换的DAG图数据。
b、继承预定义的节点以及连接线的抽象类,根据azkaban flow中node节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例。
c、继承实现预定义的节点转换接口中的方法,将解析DAG图数据获取的节点类实例,转换成azkaban工作流引擎中node节点对应的节点属性,得到执行引擎节点类实例,同时按照DAG图数据中任务节点端口三级规则组成输出地址,加入节点属性,同时根据DAG图数据中节点的连接关系,生成节点输入地址以及各节点的前后节点属性信息,即各节点的前后依赖节点信息。
d、继承实现预定义的任务编排接口中的方法,直接返回节点转换后得到的各节点的前后节点属性信息,得到任务信息。
e、继承实现接口及抽象类的预定义的文件输出方法,实现写flow文件功能,按照文件中的布局信息,将任务信息输出到文件的<config>中,之后将节点类的属性信息输出到文件的<nodes>下边的node标签中,得到工作流引擎调度文件。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (5)

1.一种将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述将DAG图数据转换为工作流引擎调度文件的方法,包括:
步骤S1、获取待转换的DAG图数据,识别DAG图数据的文件类型;
步骤S2、根据所述文件类型解析DAG图数据,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
步骤S3、根据工作流引擎定义执行引擎节点类信息的格式,根据定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点之间的连线以及连线方向的类实例生成执行引擎节点的输入输出信息和前后依赖节点信息;
步骤S4、根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排;
步骤S5、根据工作流引擎所需调度文件的格式以及文件类型,将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出与工作流引擎所需的文件类型对应的工作流引擎调度文件。
2.如权利要求1所述的将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述工作流引擎包括oozie工作流引擎、azkaban工作流引擎,所述oozie工作流引擎对应的调度文件为oozie workflow.xml,所述azkaban工作流引擎的调度文件为azkaban flow。
3.如权利要求2所述的将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述DAG图数据转换为oozie工作流引擎的调度文件oozie workflow.xml的过程包括:
a、获取待转换的DAG图数据;
b、继承预定义的节点以及连接线的抽象类,根据oozie的workflow.xml中action节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
c、继承实现预定义的节点转换接口中的方法,将解析DAG图数据获取的节点类实例,转换成oozie工作流引擎中action节点对应的节点属性,同时按照DAG图数据中任务节点端口三级规则组成输出地址,加入节点属性,同时根据DAG图数据中节点的连接关系,生成节点输入地址以及各节点的前后节点属性信息;
d、继承实现预定义的任务编排接口中的方法,在出度大于1的地方插入oozie工作流引擎的fork-join控制节点达到并发执行,之后插入start、end、fail控制节点,得到任务信息;
e、继承实现接口及抽象类的预定义的文件输出方法,实现写workflow.xml文件功能,按照文件中的布局信息,将任务信息输出到文件的<workflow>中,之后将节点类的属性信息输出到文件的<task>中,得到工作流引擎调度文件。
4.如权利要求3所述的将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述在出度大于1的地方插入oozie工作流引擎的fork-join控制节点达到并发执行,之后插入start、end、fail控制节点,得到任务信息,包括:
d1、找出入度为零的节点,创建start控制节点,建立start控制节点与入度为零的所有节点的前后输出连接关系,将start控制节点作为当前节点;
d2、取消当前节点的所有节点连接关系,将当前节点的所有输出节点中入度为0的节点取出;
d3、取出的节点个数如果大于1,则创建oozie工作流引擎的fork-join控制节点,将当前节点与fork控制节点建立前后输出关系,将fork控制节点与当前节点的所有输出节点建立前后输出关系;同时将当前节点的所有输出节点与join控制节点建立前后输出关系,将join控制节点与当前节点的所有输出节点的建立前后输出关系;最后将join控制节点作为当前节点,返回步骤d2重新开始执行;
d4、取出的节点个数如果等于1,则将当前节点的下一个节点作为当前节点,返回步骤d2重新开始执行;
d5、取出的节点个数如果等于0,则表示执行完成,创建出end控制节点以及fail控制节点,创建当前节点与end控制节点的前后输出连接,完成节点编排。
5.如权利要求2所述的将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述DAG图数据转换为azkaban工作流引擎的调度文件azkaban flow的过程包括:
a、获取待转换的DAG图数据;
b、继承预定义的节点以及连接线的抽象类,根据azkaban flow中node节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
c、继承实现预定义的节点转换接口中的方法,将解析DAG图数据获取的节点类实例,转换成azkaban工作流引擎中node节点对应的节点属性,同时按照DAG图数据中任务节点端口三级规则组成输出地址,加入节点属性,同时根据DAG图数据中节点的连接关系,生成节点输入地址以及各节点的前后节点属性信息;
d、继承实现预定义的任务编排接口中的方法,直接返回节点转换后得到的各节点的前后节点属性信息,得到任务信息;
e、继承实现接口及抽象类的预定义的文件输出方法,实现写flow文件功能,按照文件中的布局信息,将任务信息输出到文件的<config>中,之后将节点类的属性信息输出到文件的<nodes>下边的node标签中,得到工作流引擎调度文件。
CN202010214907.3A 2020-03-24 2020-03-24 一种将dag图数据转换为工作流引擎调度文件的方法 Active CN111597143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010214907.3A CN111597143B (zh) 2020-03-24 2020-03-24 一种将dag图数据转换为工作流引擎调度文件的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010214907.3A CN111597143B (zh) 2020-03-24 2020-03-24 一种将dag图数据转换为工作流引擎调度文件的方法

Publications (2)

Publication Number Publication Date
CN111597143A true CN111597143A (zh) 2020-08-28
CN111597143B CN111597143B (zh) 2023-11-17

Family

ID=72181543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010214907.3A Active CN111597143B (zh) 2020-03-24 2020-03-24 一种将dag图数据转换为工作流引擎调度文件的方法

Country Status (1)

Country Link
CN (1) CN111597143B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110923A (zh) * 2021-03-25 2021-07-13 南京飞灵智能科技有限公司 基于k8s的工作流引擎的使用方法及装置
CN113296847A (zh) * 2021-06-08 2021-08-24 佛山物荣科技有限公司 一种基于自解析节点的工作流引擎的实现方法
CN113672674A (zh) * 2021-07-15 2021-11-19 浙江大华技术股份有限公司 一种自动编排业务流的方法、电子装置和存储介质
CN116028038A (zh) * 2023-03-28 2023-04-28 深圳市奥思网络科技有限公司 基于dag图表的可视化流水线编排方法及相关组件
CN117610320A (zh) * 2024-01-23 2024-02-27 中国人民解放军国防科技大学 有向无环图工作流引擎循环调度方法、装置和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072391A1 (en) * 2010-09-22 2012-03-22 Alkiviadis Simitsis Apparatus and method for an automatic information integration flow optimizer
US9898471B1 (en) * 2015-08-14 2018-02-20 VCE IP Holding LLC Computer implemented system and method, and computer program product, for generic source control for orchestration workflows
CN109741030A (zh) * 2018-12-28 2019-05-10 杭州当虹科技股份有限公司 一种可自定义配置的简单工作流引擎及工作流执行方法
CN110825511A (zh) * 2019-11-07 2020-02-21 北京集奥聚合科技有限公司 一种基于建模平台模型运行流程调度方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072391A1 (en) * 2010-09-22 2012-03-22 Alkiviadis Simitsis Apparatus and method for an automatic information integration flow optimizer
US9898471B1 (en) * 2015-08-14 2018-02-20 VCE IP Holding LLC Computer implemented system and method, and computer program product, for generic source control for orchestration workflows
CN109741030A (zh) * 2018-12-28 2019-05-10 杭州当虹科技股份有限公司 一种可自定义配置的简单工作流引擎及工作流执行方法
CN110825511A (zh) * 2019-11-07 2020-02-21 北京集奥聚合科技有限公司 一种基于建模平台模型运行流程调度方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杨明顺;韩周鹏;余婷;李言;邵利真;: "一种轻型工作流引擎的设计与实现", 西安理工大学学报, no. 01 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113110923A (zh) * 2021-03-25 2021-07-13 南京飞灵智能科技有限公司 基于k8s的工作流引擎的使用方法及装置
CN113110923B (zh) * 2021-03-25 2023-10-20 南京飞灵智能科技有限公司 基于k8s的工作流引擎的使用方法及装置
CN113296847A (zh) * 2021-06-08 2021-08-24 佛山物荣科技有限公司 一种基于自解析节点的工作流引擎的实现方法
CN113672674A (zh) * 2021-07-15 2021-11-19 浙江大华技术股份有限公司 一种自动编排业务流的方法、电子装置和存储介质
CN116028038A (zh) * 2023-03-28 2023-04-28 深圳市奥思网络科技有限公司 基于dag图表的可视化流水线编排方法及相关组件
CN116028038B (zh) * 2023-03-28 2023-06-09 深圳市奥思网络科技有限公司 基于dag图表的可视化流水线编排方法及相关组件
CN117610320A (zh) * 2024-01-23 2024-02-27 中国人民解放军国防科技大学 有向无环图工作流引擎循环调度方法、装置和设备
CN117610320B (zh) * 2024-01-23 2024-04-02 中国人民解放军国防科技大学 有向无环图工作流引擎循环调度方法、装置和设备

Also Published As

Publication number Publication date
CN111597143B (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
CN111597143A (zh) 一种将dag图数据转换为工作流引擎调度文件的方法
CN114115857B (zh) 一种机器学习模型自动化生产线构建方法及系统
CN111045655A (zh) 一种页面渲染的方法、装置、渲染服务器和存储介质
CN104021460A (zh) 一种工作流程管理系统及工作流程处理方法
CN111124379B (zh) 页面生成方法、装置、电子设备及存储介质
CN116775183A (zh) 基于大语言模型的任务生成方法、系统、设备及存储介质
CN112069456A (zh) 一种模型文件的生成方法、装置、电子设备及存储介质
CN111880784B (zh) 一种面向simscript语言的离散事件仿真图形化建模方法
CN114594927A (zh) 低代码开发方法、装置、系统、服务器及存储介质
CN113010598A (zh) 面向遥感大数据处理的动态自适应分布式协同工作流系统
CN112948110A (zh) 云应用的拓扑与编排系统、方法、存储介质及电子设备
Schönberger et al. Algorithmic support for model transformation in object‐oriented software development
CN112988124B (zh) 多视图平台无关模型系统
CN112148926A (zh) 一种图数据流的处理方法、处理装置和存储介质
CN111142871B (zh) 一种前端页面开发系统、方法、设备、介质
Eiden et al. Supporting semantic PLM by using a lightweight engineering metadata mapping engine
CN110956025A (zh) 一种基于流程模板复用的方法
US9424539B2 (en) Systems and methods for defining best practices, managing best practices, and validating service models
CN112180817B (zh) 一种梯形图转换二叉树的方法、装置、设备及存储介质
Peng et al. Research on workflow patterns based on jBPM and jPDL
CN112434091A (zh) 设计及配置多级etl任务规则的方法、系统、设备及介质
CN113655998B (zh) 一种从目标模型到uml需求模型转化方法
JP2015161983A (ja) ソースコード生成装置
CN112825031B (zh) 基于json格式的流程描述方法及装置
Nalepa et al. Uml representation proposal for xtt rule design method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant