
点亮⭐️
https://github.com/apache/
作者 | 三线程序员
作者的话:“与 DolphinScheduler 集成有时间再写吧,欠的东西太多了。",现在项目快部署了,特此来还债。
1. 为什么要集成DolphinScheduler
我们已经验证了的本地模式(local)可以正常跑ETL任务。但实际生产环境中,需要:
定时调度:每日/每小时自动执行数据同步任务
任务依赖:上游数据准备就绪后再触发下游任务
告警通知:任务失败时发送通知(三线城市还没这个岗位,炸了再说)
运维管理:可视化查看任务状态、历史执行记录
其实我主要还是懒得打命令行,这个在页面上就能手动执行,查看日志还是挺方便的,慢就慢点吧,正好多喝杯水。
DolphinScheduler与SeaTunnel天然集成,支持通过Web UI直接配置SeaTunnel作业,实现上述所有需求。
2. 部署环境说明

架构思路:DS负责调度和流程编排,SeaTunnel负责实际的数据读写。
3. DolphinScheduler对接
SeaTunnel的方式
这是最直接的方式,shell大法适合大部分场景。
步骤:
1.在DolphinScheduler的运行节点上部署SeaTunnel客户端(不需要Api服务)
2.在Shell节点中调用seatunnel.sh脚本
#!/bin/bashcd /opt/apache-seatunnel-2.3.12/bin./seatunnel.sh --config /data/jobs/mysql_to_doris.conf -m local
优点:配置简单,兼容性好;还能不暴露数据库敏感信息。
缺点:配置文件要提前调试好,修改时要去服务器上vim改(想想都头大)
如果需要更精细的控制(如任务取消、状态查询),可以使用Api方式。
DolphinScheduler的SeaTunnel的节点,选择Zeta的引擎执行。发现其不支持IP设置,DolphinScheduler需要和SeaTunnel绑定在相同的机器上(即要求SeaTunnel和DolphinScheduler需要部署在同一个机器中)。


所以需要在DolphinScheduler安装的机器上再安装一遍SeaTunnel,而且是每一个机器,因为DolphinScheduler是集群的任务不定会分配到哪个节点上。这里为了快速验证,直接把local模式的SeaTunnel复制到DolphinScheduler的各个节点,并未重新安装部署集群版本。
使用默认的配置参数,提供的是一个测试数据生成输出到控制台上的脚本:

报错:
行5: /bin/seatunnel.sh: 没有那个文件或目录。
即集成失败,DolphinScheduler无法调用seatunnel。分析原因,是环境变量未配置导致找不到对应目录。
前两天正好看了DolphinScheduler官网发了一个集成的文档,和网上的集成方案看了一下,都是需要配置环境变量。
在DolphinScheduler的主安装节点,服务器的安装目录/opt/dolphinscheduler/bin/env下修改文件dolphinscheduler_env.sh:
修改 export SEATUNNEL_HOME=${SEATUNNEL_HOME:-/opt/seatunnel}其中/opt/seatunnel为在海豚机器上安装的目录。
重启集群,官方文档上说是会自动把整个集群的Work-Server和Master-Server的环境配置自动修改。如果不管用,就手动去各个Mastet/Work等节点的Conf目录里改一下,省得麻烦。
注意,最终是要保证整个DolphinScheduler集群下的所有Work-Server、Master-Server、api-server的环境都配置上SeaTunnel的安装目录。
直接重跑验证任务实例即可,看到小对勾就OK了。
查看日志,有打印图标!集成成功。同步信息也有。
如果需要统计读写数量就可以从打印的日志中获取了。
通过DolphinScheduler任务实例ID 203971,查询对应海豚数据表。
SELECT * FROMt_ds_task_instancewhere id=203971
对应节点运行机器IP和目录位置均在数据库中记录。但日志中的内容需要扫描对应的日志文件获取了。并没有在数据库中直接记录下来。
4. DolphinScheduler时区设置问题
定时调度时间不对可老麻烦了,经常的问题就是差8小时了。官网上有时区设置,底层好像是依赖java的一个设置参数,好像是xx_jackson_time_zone,默认是utf-8的......如果DolphinScheduler是用systemctl启动的话,好像直接设置java全局变量还不太行,改DolphinScheduler的配置文件是一把过的。
5. 总结一下
对于SeaTunnel在数据集成方面,主要是多种集成方案是亮点;在数据库之间集成其主要优势是自动建表。且支持建表模板;与DolphinScheduler集成是管理方面的优势,使用DolphinScheduler就可以将SeaTunnel的conf文件管理起来,提高调试便捷操作。
END

用户案例

迁移实战

最新发版消息

加入社区
关注社区的方式有很多:
同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。
非代码方式包括:
完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。
代码方式包括:
查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。


你的好友小海豚拍了拍你
并请你帮她点一下“分享”
