SeaTunnel(原Waterdrop)是一款高性能、易扩展的分布式数据集成平台,支持实时和批量数据处理。以下为 SeaTunnel v3.x 的安装及测试全流程指南:
一、安装准备
1. 环境要求
- Java:JDK 17+(必须)
- 可选引擎(至少选一种):
- Spark:3.3.x(推荐)
- Flink:1.16.x 或 1.17.x
- 存储:2GB+ 磁盘空间
2. 下载安装包
bash
# 从官网下载最新版(以 v3.0.0 为例)
wget https://download.seatunnel.apache.org/seatunnel-3.0.0/seatunnel-3.0.0.tar.gz
tar -zxvf seatunnel-3.0.0.tar.gz
cd seatunnel-3.0.0
二、部署模式选择
1. Standalone 模式(单机测试)
bash
# 启动本地引擎(默认使用Spark引擎)
./bin/seatunnel.sh
2. 集群模式(生产推荐)
- Spark 集群 :将安装包分发到所有节点,通过 spark-submit 提交任务
- Flink 集群 :使用 flink run 提交任务至YARN/K8s
三、快速测试示例
1. 创建配置文件
编辑 config/v3.batch.config.template ,以 MySQL → CSV 同步 为例:
yaml
env {
execution.parallelism = 2
job.mode = "BATCH"
}
source {
MySQL {
host = "localhost"
port = 3306
username = "test"
password = "test123"
database = "test_db"
table = "orders"
result_table_name = "source_table"
}
}
sink {
CSV {
path = "/data/output/orders.csv"
delimiter = ","
save_mode = "overwrite"
}
}
2. 运行任务
bash
# Standalone模式运行
./bin/seatunnel.sh --config ./config/v3.batch.config.template
3. 验证结果
bash
cat /data/output/orders.csv # 检查CSV文件内容
四、进阶测试(实时流处理)
使用 Flink 引擎 处理Kafka数据流:
yaml
env {
execution.parallelism = 4
job.mode = "STREAMING"
checkpoint.interval = 10000 # 10 秒检查点
}
source {
Kafka {
bootstrap.servers = "kafka-server:9092"
topic = "user_events"
consumer.group_id = "seatunnel_group"
format = "json"
}
}
transform {
sql = "SELECT user_id, COUNT(1) as event_count FROM source_table GROUP BY user_id"
}
sink {
Elasticsearch {
hosts = ["http://es-node:9200"]
index = "user_event_stats"
}
}
五、关键问题排查
1. 依赖缺失
- 现象 :连接器报 ClassNotFoundException
- 解决 :下载对应Connector插件到 plugins/ 目录
bash
./bin/install-plugin.sh --plugins mysql:2.3.1,elasticsearch:2.3.0
2. 引擎配置错误
- 现象:Spark/Flink任务提交失败
- 解决 :检查 config/spark/spark-defaults.conf 或 config/flink-conf.yaml
3. 权限问题
- 现象:写入HDFS/S3失败
- 解决 :在 env 中添加Kerberos/Hadoop配置:
yaml
env {
hadoop.security.authentication = "kerberos"
hadoop.kerberos.keytab = "/path/to/user.keytab"
}
六、可视化监控
- 启用Web UI (Flink任务)
在Flink配置中增加:
yaml
env {
flink.rest.address = "0.0.0.0"
flink.rest.port = 8081
}
访问 http://<host>:8081 查看任务状态
- Prometheus监控
配置 config/metrics.conf:
yaml
metrics {
enabled = true
reporter = "prometheus"
prometheus.port = 9090
}
七、生产部署建议
- 资源隔离:在YARN/K8s上划分独立队列/Namespace
- 高可用:启用Flink Checkpoint + Savepoints
- 安全:
- 使用Vault管理敏感配置
- 启用TLS加密数据传输
- 性能调优:
- 调整 execution.parallelism 并行度
- 开启源表分片读取(如 split.size 参数)
通过以上步骤,您可快速完成SeaTunnel的安装及功能验证。如需特定场景(如CDC同步、Iceberg入库)的配置,请提供具体需求!