DolphinScheduler 集成 SeaTunnel 数据同步指南
概述
本文档详细介绍如何在 DolphinScheduler 中集成 Apache SeaTunnel,实现强大的数据同步和数据集成功能。
一、架构设计
1.1 部署方式选择
方案一:SeaTunnel 独立部署(推荐 ⭐)
┌─────────────────────┐ ┌─────────────────────┐
│ DolphinScheduler │ SSH │ SeaTunnel │
│ - Master (120,121) │ ──────► │ - Cluster │
│ - Worker (121,122) │ 调用 │ - Standalone │
└─────────────────────┘ └─────────────────────┘
│
▼
┌─────────────────────┐
│ 数据源/目标 │
│ - MySQL/PostgreSQL │
│ - Doris/StarRocks │
│ - Kafka/HDFS │
└─────────────────────┘
优势:
- ✅ 资源隔离:SeaTunnel 不占用 DS 集群资源
- ✅ 独立扩展:可根据数据量单独扩容 SeaTunnel
- ✅ 版本独立:DS 和 SeaTunnel 可以独立升级
- ✅ 故障隔离:SeaTunnel 故障不影响 DS 调度
适用场景:
- 大数据量同步任务
- 高并发数据集成
- 生产环境
方案二:SeaTunnel 本地部署
┌─────────────────────────────────────┐
│ DolphinScheduler Worker 节点 │
│ ├─ WorkerServer │
│ └─ SeaTunnel (Local Mode) │
└─────────────────────────────────────┘
优势:
- ✅ 部署简单
- ✅ 调试方便
劣势:
- ❌ 资源争抢
- ❌ 扩展性差
适用场景:
- 小数据量同步
- 测试环境
1.2 网络规划
| 组件 | IP/主机 | 端口 | 说明 |
|---|---|---|---|
| DS Worker | 192.168.192.121 | - | 提交任务 |
| DS Worker | 192.168.192.122 | - | 提交任务 |
| SeaTunnel | 192.168.192.130 | 8080 | HTTP API(可选) |
| PostgreSQL | 192.168.192.111 | 5432 | 数据源 |
二、SeaTunnel 独立部署方案
2.1 安装 SeaTunnel
在新的服务器(192.168.192.130)上执行:
# 创建 seaTunnel 用户
sudo useradd -m -s /bin/bash seatunnel
# 下载 SeaTunnel
cd /tmp
wget https://archive.apache.org/dist/seatunnel/2.3.8/apache-seatunnel-2.3.8-bin.tar.gz
# 解压
tar -xzf apache-seatunnel-2.3.8-bin.tar.gz
sudo mv apache-seatunnel-2.3.8 /opt/seatunnel
sudo chown -R seatunnel:seatunnel /opt/seatunnel
# 设置环境变量
su - seatunnel
echo 'export SEATUNNEL_HOME=/opt/seatunnel' >> ~/.bashrc
echo 'export PATH=$SEATUNNEL_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
2.2 配置 SeaTunnel
cd /opt/seatunnel/config
# 复制示例配置
cp hazelcast.yaml.template hazelcast.yaml
cp log4j2.properties.template log4j2.properties
配置 application.yaml
seatunnel:
# 引擎配置
engine:
history:
max-history: 30
# REST API 配置(可选)
rest:
enabled: true
port: 8080
# 检查点配置
checkpoint:
interval: 10000 # 10 秒
timeout: 60000 # 60 秒
2.3 配置 Connector
根据需要同步的数据源,下载相应的 Connector:
cd /opt/seatunnel/connectors
# 示例:下载 MySQL Connector(通常已包含)
# 如果需要额外的 connector,从官方下载并放置到此目录
2.4 测试 SeaTunnel
创建测试任务配置文件 test_job.conf:
env {
parallelism = 1
job.mode = "BATCH"
}
source {
FakeSource {
row.num = 10
schema = {
fields {
name = string
age = int
}
}
}
}
sink {
Console {
}
}
执行测试:
su - seatunnel
$SEATUNNEL_HOME/bin/seatunnel.sh --config test_job.conf
三、DolphinScheduler 集成配置
3.1 在 DS 中预留 SeaTunnel 环境变量
在 DolphinScheduler 的 dolphinscheduler_env.sh 中添加:
# ===========================================
# SeaTunnel 集成配置
# ===========================================
# SeaTunnel 安装路径
export SEATUNNEL_HOME=/opt/seatunnel
# SeaTunnel 配置文件路径
export SEATUNNEL_CONF=$SEATUNNEL_HOME/config
# SeaTunnel Connector 路径
export SEATUNNEL_LIB=$SEATUNNEL_HOME/lib
# SeaTunnel 日志路径
export SEATUNNEL_LOG=$SEATUNNEL_HOME/logs
# Java 环境(SeaTunnel 需要)
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
注意: 如果 SeaTunnel 部署在其他服务器,此变量指向本地路径或留空,通过 SSH 远程调用。