
SeaTunnel 数据同步实战4 个关卡从单机跑通到生产集群【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel这篇文章面向要把 SeaTunnel 数据同步任务真正跑起来的工程师围绕一张 MySQL 表同步到 Doris这条链路依次完成安装验证、本地作业、集群部署和生产参数调整命令和配置可直接复制执行。做完后你手里会有一台可用的 SeaTunnel 安装目录含所需连接器一份跑通过的FakeSource → Console冒烟测试作业一份 MySQL → Doris 同步作业配置一套 Master/Worker 分离的 Zeta 集群和 5 个生产参数的建议值先用 FakeSource 冒烟测试3 分钟确认安装可用正式接数据库之前先用内置的测试连接器确认环境没装错。前提条件Java 8 或 11并设置好JAVA_HOME。下载官方发行包本文以 3.0.0 为例与仓库文档一致export version3.0.0 wget https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz tar -xzvf apache-seatunnel-${version}-bin.tar.gz从 2.2.0-beta 起二进制包不再自带连接器需要单独安装。如果只想做冒烟测试先在config/plugin_config里只保留两个插件--seatunnel-connectors-- connector-fake connector-console --end--再执行安装脚本把连接器下载到connectors/目录sh bin/install-plugin.sh仓库自带的config/v2.batch.config.template就是一个完整示例FakeSource 生成 16 行假数据Console 打印到控制台。关键结构如下env { parallelism 1 job.mode BATCH } source { FakeSource { row.num 16 /* schema 见模板文件 */ } } sink { Console {} }在发行包根目录提交作业./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local控制台出现subtaskIndex0 rowIndex1: ...这样的行说明安装链路是通的。注意2.3.1 起-e参数已废弃一律用-m指定模式。写第一个 MySQL → Doris 同步作业在 Local 模式跑通确认安装可用后把示例换成真实链路。先把config/plugin_config改成包含connector-jdbc和connector-doris重跑sh bin/install-plugin.shMySQL 的 JDBC 驱动 jar 需要手动放到发行包的lib/目录。作业配置按环境变量、源、汇三段写放在例如job/mysql-to-doris.confenv { parallelism 2 job.mode BATCH } source { Jdbc { url jdbc:mysql://host:3306/test driver com.mysql.cj.jdbc.Driver /* 账号与表见连接器文档 */ } } sink { Doris { /* fenodes、database、table 等参数见连接器文档 */ } }运行方式与冒烟测试相同只换配置文件./bin/seatunnel.sh --config ./job/mysql-to-doris.conf -m local作业结束时会打印统计块核对读写条数一致即可Start Time : 2024-08-13 10:21:49 End Time : 2024-08-13 10:21:53 Total Read Count: 1000 Total Write Count: 1000 Total Failed Count: 0⚠️ Local 模式有一个硬性边界每个作业起一个独立进程跑完即退出不支持暂停/恢复也不支持命令行取消终止只能 Kill 进程。验证配置没问题但长期跑生产任务必须上集群。把同一个作业搬上多节点 Zeta 集群Zeta 引擎的集群管理基于 Hazelcast仓库文档推荐 Master/Worker 分离模式Master 只做调度和 IMap 状态存储Worker 只跑任务Master 高负载或宕机不会触发全集群容错。混合模式所有节点可竞选 Master适合作业规模小的场景。最小规模1 Master 1 Worker要高可用至少 2 Master 2 Worker。各角色的 Hazelcast 配置分别在config/hazelcast-master.yaml和config/hazelcast-worker.yaml仓库默认模板使用 tcp-ip 发现、端口 5801hazelcast: network: join: tcp-ip: member-list: - master1 - master2 port: port: 5801在各节点启动对应角色sh bin/seatunnel-cluster.sh -m master -c config/hazelcast-master.yaml sh bin/seatunnel-cluster.sh -m worker -c config/hazelcast-worker.yaml然后把第 2 节的作业原样提交给集群无需改配置./bin/seatunnel.sh --config ./job/mysql-to-doris.conf --master master1:5801两个高频故障按顺序排查Worker 加不进集群先确认 5801 端口在防火墙放通再检查各节点member-list里的地址是否可达。作业报ClassNotFoundException确认connectors/下存在对应连接器目录重新执行sh bin/install-plugin.sh。生产前调这 5 个参数以下建议值均可在仓库配置文件与引擎部署文档中找到出处参数配置文件建议值说明backup-countconfig/seatunnel.yamlmax(1, min(5, N/2))IMap 分区备份数N 为节点数单 Master 需降为 0 以外才有自愈能力slot-numconfig/seatunnel.yaml节点 CPU 核数 × 2每个作业占用2 并行度个 slot也可设dynamic-slot: true不限个数checkpoint.interval / timeoutconfig/seatunnel.yaml10000 / 60000 毫秒仓库默认值多节点时检查点存储必须用分布式或共享存储-Xms / -Xmxconfig/jvm_master_options、config/jvm_worker_options按节点内存分配分离模式文档示例为 16g堆参数不生效时检查是否被启动参数-DJvmOption覆盖portconfig/hazelcast.yaml5801节点间通信端口节点不足多半是这个端口没放通检查点与 slot 在config/seatunnel.yaml中的对应片段seatunnel: engine: backup-count: 1 slot-service: dynamic-slot: true checkpoint: interval: 10000调完参数后config/seatunnel.yaml里的http.port: 8080可以直接打开 Web UI 查看集群与作业状态无需另装监控接下来去哪里官方中文文档入口docs/zh分离集群与混合集群的完整参数说明分离模式集群部署从批同步升级到实时 CDCMySQL CDC 到 Kafka 教程按目标系统查连接器参数Source 连接器列表Web UI 与 REST APIWeb UI 文档【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考