一种基于datax的dag数据的任务调度方法和系统
技术领域
1.本发明涉及大数据技术领域,更具体地,涉及一种基于datax的dag数据的任务调度方法和系统。
背景技术:2.随着数字化转型的全球浪潮,大数据平台建设成为新时代必不可少的基础设施。随着数字化转型的深入,很多企业在建设数据中台过程中,将datax作为离线数据同步工具/平台;但datax在开源的时候并未提供任何可视化界面,在使用的过程中,需要将json配置文件放到datax的job路径下。随着业务的增加,日渐凸显出配置文件不方便管理、迁移和每次执行都需要记录命令的缺陷。同时在项目的数据开发过程中,一个完整的业务流程,可能涉及到成百上千个相互交叉依赖关联的作业,比如大数据开发平台的离线数仓报表处理业务,从数据采集、清洗,到各个层级报表的汇总运算,到最后数据导出到外部业务系统。对于这类dag工作流类调度作业,现有的常见调度系统,如oozie,azkaban均没有提供可视化界面去反映各作业间的上下游依赖,无法一目了然的整理清楚一个完整的业务流程下巨大作业量之间的依赖关系。
3.现有技术公开了一种统一数据开发与分布式的调度系统,包括大数据自助服务平台,大数据自助服务平台一端连接主页,平台中分别设有我的工作台、账户管理、资源管理、项目空间、数据权限管理和系统管理;所述项目空间中分别设有数据管理、数据开发、调度监控和项目配置;所述数据管理中分别设有hdfs文件查询、表维护和数据查询;所述数据开发中分别设有数据源、数据交换平台、任务开发和工作流开发;所述数据开发包括数据集成、批量计算和调度监控,所述数据集成包括datax任务和sqoop任务。该申请一定程度上解决了运维人员调度效率的问题,但仍无法视图化显示任务间的依赖关系,不方便后期查看管理。
技术实现要素:4.本发明为克服现有datax平台下配置任务效率低,无法反应任务间依赖关系的缺陷,提供一种基于datax的dag数据的任务调度方法和系统,能够缩短任务配置时间,提高任务配置效率,视图化显示任务间的依赖关系。
5.为解决上述技术问题,本发明的技术方案如下:
6.本发明提供了一种基于datax的dag数据的任务调度方法,包括:
7.s1:获取数据源信息;
8.s2:根据数据源信息,配置同步任务或etl任务;
9.s3:将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;
10.s4:直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果;
11.s5:将任务执行结果保存进日志中。
12.优选地,所述数据源信息包括源数据源、源数据表、源数据字段、目标数据源、目标数据表、目标数据字段和源数据字段与目标数据字段的映射关系。
13.优选地,所述步骤s2中,根据数据源信息,配置同步任务的具体方法为:
14.建立datax json脚本模板;
15.在数据源信息中选择当前需要同步的源数据源、源数据表和源数据字段;
16.确定同步写入的目标数据源、目标数据表和源数据字段与目标数据字段的映射关系;
17.将源数据源、源数据表、源数据字段、目标数据源、目标数据表和源数据字段与目标数据字段的映射关系填充至datax json脚本模板中,生成datax json脚本,作为同步任务。
18.优选地,所述步骤s2中,根据数据源信息,配置etl任务的具体方法为:
19.在数据源信息中选择当前需要etl处理的源数据源,配置源数据节点和源数据字段;
20.为每个源数据节点配置一个或多个转换组件;
21.确定etl处理后写入的目标数据源,配置目标节点和源数据字段与目标数据字段的映射关系,获得etl任务,并配置etl任务cron表达式。
22.优选地,所述步骤s3中,生成dag任务关系图的具体方法为:
23.将每个同步任务或etl任务作为一个dag任务节点,基于x6图编辑引擎实现dag任务节点间的拖拽与绘制;每个dag任务节点依赖一个或多个上游dag任务,同时被一个或多个dag任务节点依赖,利用箭头连接线连接dag任务节点,生成dag任务关系图,并配置dag任务cron表达式。
24.优选地,所述步骤s4中,获得任务执行结果的具体方法为:
25.直接执行同步任务时,调用datax组件,执行datax json脚本,完成数据同步,获得任务执行结果;
26.直接执行etl任务时,定时触发执行etl任务cron表达式,完成etl处理,获得任务执行结果;
27.根据dag任务关系图执顺序执行dag任务时,解析dag任务间的依赖关系,按照依赖关系间的先后顺序,定时触发执行dag任务cron表达式,获得任务执行结果。
28.本发明还提供了一种基于datax的dag数据的任务调度系统,用于实现上述的基于datax的dag数据的任务调度方法,包括:
29.数据源管理模块,用于获取数据源信息;
30.同步任务管理模块,用于根据数据源信息,配置同步任务;
31.etl任务管理模块,用于根据数据源信息,配置etl任务;
32.dag任务管理模块,用于将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;
33.调度模块,用于直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果;
34.日志模块,用于保存任务执行结果。
35.优选地,所述同步任务管理模块根据数据源信息,配置同步任务的具体操作为:
36.建立datax json脚本模板;
37.在数据源管理模块的数据源信息中选择当前需要同步的源数据源、源数据表和源数据字段;
38.确定同步写入的目标数据源、目标数据表和源数据字段与目标数据字段的映射关系;
39.将源数据源、源数据表、源数据字段、目标数据源、目标数据表和源数据字段与目标数据字段的映射关系填充至datax json脚本模板中,生成datax json脚本,作为同步任务。
40.优选地,所述etl任务管理模块根据数据源信息,配置etl任务的具体操作为:
41.在数据源信息中选择当前需要etl处理的源数据源,配置源数据节点和源数据字段;
42.为每个源数据节点配置一个或多个转换组件;
43.确定etl处理后写入的目标数据源,配置目标节点和源数据字段与目标数据字段的映射关系,获得etl任务,并配置etl任务cron表达式。
44.优选地,所述dag任务管理模块将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图的具体操作为:
45.将每个同步任务或etl任务作为一个dag任务节点,基于x6图编辑引擎实现dag任务节点间的拖拽与绘制;每个dag任务节点依赖一个或多个上游dag任务,同时被一个或多个dag任务节点依赖,利用箭头连接线连接dag任务节点,生成dag任务关系图,并配置dag任务cron表达式。
46.与现有技术相比,本发明技术方案的有益效果是:
47.本发明通过获取数据源信息,配置同步任务或etl任务,配置任务复杂度低,配置时间短,效率高;将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;在dag任务关系图中,每个dag任务节点依赖一个或多个上游dag任务,同时被一个或多个dag任务节点依赖,dag任务关系图视图化的显示出上下游任务的依赖关系,清晰明了;最后直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果并保存进日志中,便于后期查看管理。
附图说明
48.图1为实施例1所述的一种基于datax的dag数据的任务调度方法的流程图。
49.图2为实施例2所述的dag任务关系图。
50.图3为实施例3所述的一种基于datax的dag数据的任务调度系统的结构示意图。
具体实施方式
51.附图仅用于示例性说明,不能理解为对本专利的限制;
52.为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
53.对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解
的。
54.下面结合附图和实施例对本发明的技术方案做进一步的说明。
55.实施例1
56.本实施例提供了一种基于datax的dag数据的任务调度方法,如图1所示,包括:
57.s1:获取数据源信息;
58.s2:根据数据源信息,配置同步任务或etl任务;
59.s3:将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;
60.s4:直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果;
61.s5:将任务执行结果保存进日志中。
62.在具体实施过程中,本实施例通过获取数据源信息,配置同步任务或etl任务,配置方法复杂度低,配置时间短,效率高;将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;在dag任务关系图中,每个dag任务节点依赖一个或多个上游dag任务,同时被一个或多个dag任务节点依赖,dag任务关系图视图化的显示出上下游任务的依赖关系,清晰明了;最后直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果并保存进日志中,便于后期查看管理。
63.实施例2
64.本实施例提供了一种基于datax的dag数据的任务调度方法,包括:
65.s1:获取数据源信息;
66.所述数据源信息包括源数据源、源数据表、源数据字段、目标数据源、目标数据表、目标数据字段和源数据字段与目标数据字段的映射关系;
67.s2:根据数据源信息,配置同步任务或etl任务;
68.配置同步任务的具体方法为:
69.建立datax json脚本模板;
70.在数据源信息中选择当前需要同步的源数据源、源数据表和源数据字段;
71.确定同步写入的目标数据源、目标数据表和源数据字段与目标数据字段的映射关系;
72.将源数据源、源数据表、源数据字段、目标数据源、目标数据表和源数据字段与目标数据字段的映射关系填充至datax json脚本模板中,生成datax json脚本,作为同步任务;
73.datax json脚本主要包含源数据源、目标数据源、源数据源表/sql字段与目标数据源表字段的映射关系以及同步策略等关键信息,基于上述信息,创建一个datax json脚本模板,将配置好的任务信息填充至datax json脚本模板中,从而生成datax json脚本;数据开发人员不再需要熟悉datax json脚本的语法,也不再需要管理编辑管理datax json脚本,从而降低datax的学习成本以及任务配置的复杂度,减少配置datax任务的时间,提高效率;datax json脚本可以被datax组件直接执行,也可以dag配置管理上下游任务依赖关系,顺序执行;
74.配置etl任务的具体方法为:
75.在数据源信息中选择当前需要etl处理的源数据源,配置源数据节点和源数据字段;
76.为每个源数据节点配置一个或多个转换组件;
77.确定etl处理后写入的目标数据源,配置目标节点和源数据字段与目标数据字段的映射关系,获得etl任务,并配置etl任务cron表达式;cron表达式可以直接定时触发执行,也可以dag引用上下游任务依赖关系,顺序执行;
78.s3:将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;具体的:
79.如图2所示,将每个同步任务或etl任务作为一个dag任务节点,基于x6图编辑引擎实现dag任务节点间的拖拽与绘制;每个dag任务节点依赖一个或多个上游dag任务,同时被一个或多个dag任务节点依赖,利用箭头连接线连接dag任务节点,生成dag任务关系图,并配置dag任务cron表达式;
80.dag任务关系图以json数组存储,用于x6图编辑引擎的渲染,结构如下:
[0081][0082][0083]
s4:直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果;具体的:
[0084]
直接执行同步任务时,调用datax组件,执行datax json脚本,完成数据同步,获得任务执行结果;
[0085]
直接执行etl任务时,定时触发执行etl任务cron表达式,完成etl处理,获得任务执行结果;
[0086]
根据dag任务关系图执顺序执行dag任务时,解析dag任务间的依赖关系,按照依赖关系间的先后顺序,定时触发执行dag任务cron表达式,获得任务执行结果;
[0087]
如执行dag任务时,先解析dag中任务节点的依赖关系,找出并执行顶点任务(入度为0,jobidfrom的值为null),每个任务节点执行结束,再查询其下游任务(jobidto)并执行。当所有dag任务节点都执行结束,或者没有可执行的下游任务节点时,dag任务执行完成,获得任务执行结果,包括执行时间,失败任务节点,未执行任务节点;
[0088]
s5:将任务执行结果和执行过程中的明细保存进日志中,并邮件通知给用户。
[0089]
实施例3
[0090]
本实施例提供了一种基于datax的dag数据的任务调度系统,用于实现实施例1或2所述的基于datax的dag数据的任务调度方法,如图3所示,包括:
[0091]
数据源管理模块,用于获取数据源信息;
[0092]
同步任务管理模块,用于根据数据源信息,配置同步任务;具体操作为:
[0093]
建立datax json脚本模板;
[0094]
在数据源管理模块的数据源信息中选择当前需要同步的源数据源、源数据表和源数据字段;
[0095]
确定同步写入的目标数据源、目标数据表和源数据字段与目标数据字段的映射关系;
[0096]
将源数据源、源数据表、源数据字段、目标数据源、目标数据表和源数据字段与目标数据字段的映射关系填充至datax json脚本模板中,生成datax json脚本,作为同步任务。
[0097]
etl任务管理模块,用于根据数据源信息,配置etl任务;具体操作为:
[0098]
在数据源信息中选择当前需要etl处理的源数据源,配置源数据节点和源数据字段;
[0099]
为每个源数据节点配置一个或多个转换组件;
[0100]
确定etl处理后写入的目标数据源,配置目标节点和源数据字段与目标数据字段的映射关系,获得etl任务,并配置etl任务cron表达式。
[0101]
dag任务管理模块,用于将每个同步任务或etl任务作为一个dag任务节点,配置dag任务节点间的依赖关系,生成dag任务关系图;具体操作为:
[0102]
将每个同步任务或etl任务作为一个dag任务节点,基于x6图编辑引擎实现dag任务节点间的拖拽与绘制;每个dag任务节点依赖一个或多个上游dag任务,同时被一个或多个dag任务节点依赖,利用箭头连接线连接dag任务节点,生成dag任务关系图,并配置dag任务cron表达式。
[0103]
调度模块,用于直接执行同步任务和/或etl任务、或根据dag任务关系图执行dag任务,获得任务执行结果;
[0104]
日志模块,用于保存任务执行结果。
[0105]
相同或相似的标号对应相同或相似的部件;
[0106]
附图中描述位置关系的用语仅用于示例性说明,不能理解为对本专利的限制;
[0107]
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。