一种将DAG图数据转换为工作流引擎调度文件的方法技术

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

【技术实现步骤摘要】
一种将DAG图数据转换为工作流引擎调度文件的方法
本申请属于大数据分析
,具体涉及一种将DAG图数据转换为工作流引擎调度文件的方法。
技术介绍
随着信息技术的发展,数据挖掘、机器学习、人工智能、统计分析等技术在数据分析领域获得广泛应用。与此同时为应对海量数据处理任务,出现了多种分布式计算框架,如hadoopyarn、mesos、kubernetes等。大数据分析处理任务大都包含多个数据处理步骤,每个步骤的数据处理算法需提交计算框架运行,其中有些步骤可以并发执行,有些步骤需要有依赖关系。为将这种复杂的任务调度到分布式技术框架运行,出现了很多的工作流调度引擎。但这些工作流调度引擎都通过自定义调度文件的形式编排任务运行流程。调度文件一般复杂难写,而且调度文件千差万别,要切换调度引擎需要修改大量内容。与此同时,很多机器学习平台出现了通过拖拽即可构建机器学习模型的方法,大大简化了建模过程。这些模型大都基于DAG图。要将DAG图模型提交分布式技术框架运行,需要将DAG图转换成满足工作流引擎调度文件规定格式,而目前工作流引擎形式各异,所对应的调度文件也是格式各异,这给DAG图的转换带来的极大的难度。
技术实现思路
本申请的目的在于提供一种将DAG图数据转换为工作流引擎调度文件的方法,实现将各种格式的DAG图数据转换为多类型的工作流引擎调度文件,降低DAG图数据的转换难度,提高工作流引擎切换效率。为实现上述目的,本申请所采取的技术方案为:一种将DAG图数据转换为工作流引擎调度文件的方法,所述将DAG图数据转换为工作流引擎调度文件的方法,包括:步骤S1、获取待转换的DAG图数据,识别DAG图数据的文件类型;步骤S2、根据所述文件类型解析DAG图数据,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;步骤S3、根据工作流引擎定义执行引擎节点类信息的格式,根据定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点之间的连线以及连线方向的类实例生成执行引擎节点的输入输出信息和前后依赖节点信息;步骤S4、根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排;步骤S5、根据工作流引擎所需调度文件的格式以及文件类型,将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出与工作流引擎所需的文件类型对应的工作流引擎调度文件。作为优选,所述工作流引擎包括oozie工作流引擎、azkaban工作流引擎,所述oozie工作流引擎对应的调度文件为oozieworkflow.xml,所述azkaban工作流引擎的调度文件为azkabanflow。作为优选,所述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工作流引擎的调度文件azkabanflow的过程包括:a、获取待转换的DAG图数据;b、继承预定义的节点以及连接线的抽象类,根据azkabanflow中node节点及其属性信息,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;c、继承实现预定义的节点转换接口中的方法,将解析DAG图数据获取的节点类实例,转换成azkaban工作流引擎中node节点对应的节点属性,同时按照DAG图数据中任务节点端口三级规则组成输出地址,加入节点属性,同时根据DAG图数据中节点的连接关系,生成节点输入地址以及各节点的前后节点属性信息;d、继承实现预定义的任务编排接口中的方法,直接返回节点转换后得到的各节点的前后节点属性信息,得到任务信息;e、继承实现接口及抽象类的预定义的文件输出方法,实现写flow文件功能,按照文件中的布局信息,将任务信息输出到文件的<config>中,之后将节点类的属性信息输出到文件的<nodes>下边的node标签中,得到工作流引擎调度文件。本申请提供的将DAG图数据转换为工作流引擎调度文件的方法,该方法提供了大量接口及抽象类,通过定义的接口以及抽象类,可实现自定义DAG数据的存储格式和自定义工作流引擎类型,同时通过实现接口以及抽象类,给出了常用工作流引擎的内置实现,用户可直接使用,从而极大的简化了调度文件的复杂度,并有效的降低了用户在不同工作流引擎直接切换的工作量。附图说明图1为本申请的将DA本文档来自技高网...

【技术保护点】
1.一种将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述将DAG图数据转换为工作流引擎调度文件的方法,包括:/n步骤S1、获取待转换的DAG图数据,识别DAG图数据的文件类型;/n步骤S2、根据所述文件类型解析DAG图数据,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;/n步骤S3、根据工作流引擎定义执行引擎节点类信息的格式,根据定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点之间的连线以及连线方向的类实例生成执行引擎节点的输入输出信息和前后依赖节点信息;/n步骤S4、根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排;/n步骤S5、根据工作流引擎所需调度文件的格式以及文件类型,将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出与工作流引擎所需的文件类型对应的工作流引擎调度文件。/n

【技术特征摘要】
1.一种将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述将DAG图数据转换为工作流引擎调度文件的方法,包括:
步骤S1、获取待转换的DAG图数据,识别DAG图数据的文件类型;
步骤S2、根据所述文件类型解析DAG图数据,获取DAG图数据中的节点及其属性信息生成节点类实例,同时获取节点之间的连线以及连线方向的类实例;
步骤S3、根据工作流引擎定义执行引擎节点类信息的格式,根据定义的格式将所获取的节点类实例转换为执行引擎节点类实例,并根据节点之间的连线以及连线方向的类实例生成执行引擎节点的输入输出信息和前后依赖节点信息;
步骤S4、根据执行引擎节点的前后依赖节点信息,对执行引擎节点类实例进行有序编排;
步骤S5、根据工作流引擎所需调度文件的格式以及文件类型,将有序编排的执行引擎节点类实例以及前后依赖节点信息按照调度文件的格式持久化至文件中,输出与工作流引擎所需的文件类型对应的工作流引擎调度文件。


2.如权利要求1所述的将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述工作流引擎包括oozie工作流引擎、azkaban工作流引擎,所述oozie工作流引擎对应的调度文件为oozieworkflow.xml,所述azkaban工作流引擎的调度文件为azkabanflow。


3.如权利要求2所述的将DAG图数据转换为工作流引擎调度文件的方法,其特征在于,所述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>中,之后将节点类的属性信息输出到文件...

【专利技术属性】
技术研发人员:郑焕波华洁刘钊岐李少利赵政康张惠根
申请(专利权)人:中电海康集团有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1