Seatunnel作为一款开源大数据ETL工具,其单机模式非常适合开发测试和小规模数据处理场景。在开始部署前,我们需要明确几个关键点:
提示:生产环境建议使用集群模式,单机模式仅适用于功能验证和小数据量场景
下载环节推荐使用华为镜像源,相比官方源在国内访问速度更快更稳定。这里有个细节需要注意:wget默认会使用系统代理设置,如果企业网络有特殊限制,可能需要添加--no-proxy参数。
bash复制# 使用华为镜像源下载
wget https://mirrors.huaweicloud.com/apache/seatunnel/2.3.9/apache-seatunnel-2.3.9-bin.tar.gz
# 解压到当前目录
tar -zxvf apache-seatunnel-2.3.9-bin.tar.gz
解压后目录结构说明:
bin/:包含所有可执行脚本config/:存放配置文件模板lib/:依赖库目录plugins/:插件存放位置进入解压目录执行插件安装:
bash复制cd apache-seatunnel-2.3.9
sh bin/install-plugin.sh 2.3.9
这个步骤会:
常见问题处理:
bash复制export MAVEN_MIRROR_URL="https://maven.aliyun.com/repository/public"
bash复制export WGET_OPTIONS="--no-check-certificate"
虽然文档中注释掉了环境变量设置,但我强烈建议配置:
bash复制vim /etc/profile
# 添加以下内容
export SEATUNNEL_HOME=/path/to/apache-seatunnel-2.3.9
export PATH=$PATH:$SEATUNNEL_HOME/bin
# 使配置生效
source /etc/profile
环境变量的作用:
对于需要连接数据库的场景,需手动下载对应JDBC驱动:
bash复制cd apache-seatunnel-2.3.9/lib
# SQL Server驱动
wget https://repo1.maven.org/maven2/com/microsoft/sqlserver/mssql-jdbc/12.4.2.jre8/mssql-jdbc-12.4.2.jre8.jar
# PostgreSQL驱动
wget https://repo1.maven.org/maven2/org/postgresql/postgresql/42.7.4/postgresql-42.7.4.jar
驱动版本选择原则:
在配置文件中添加如下测试配置(config/test.conf):
json复制env {
execution.parallelism = 1
}
source {
Jdbc {
driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
url = "jdbc:sqlserver://localhost:1433"
username = "sa"
password = "yourpassword"
query = "select 1 as test"
}
}
sink {
Console {}
}
执行验证:
bash复制./bin/seatunnel.sh --config ./config/test.conf -e local
预期看到输出包含查询结果即为成功。
基础命令格式:
bash复制./bin/seatunnel.sh --config <配置文件> -e local
关键参数说明:
--config:指定配置文件路径-e:执行引擎类型(local表示本地模式)-i:交互式模式(可选)-h:查看帮助信息典型配置文件示例:
json复制env {
execution.parallelism = 2
job.mode = "BATCH"
}
source {
# 数据源配置
FakeSource {
row.num = 10
schema {
fields {
name = "string"
age = "int"
}
}
}
}
transform {
# 转换规则
Sql {
query = "select name, age from fake_table where age > 18"
}
}
sink {
# 输出目标
Console {}
}
日志文件位置:
logs/seatunnel-engine.log:主引擎日志logs/seatunnel-job.log:任务执行日志关键日志信息:
code复制[INFO] Job starting...
[INFO] Source reader thread started
[INFO] Sink writer thread started
[INFO] Records processed: 1000
[INFO] Job finished, cost: 2.3s
性能监控建议:
top命令观察CPU/内存占用症状:
code复制Plugin not found: xxx
解决方案:
错误信息:
code复制java.lang.OutOfMemoryError: Java heap space
调整方案:
bash复制# 修改bin/seatunnel.sh
JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC"
内存设置建议:
典型错误:
code复制Connection refused
排查步骤:
json复制env {
execution.parallelism = 8
}
json复制sink {
Jdbc {
batch_size = 1000
}
}
json复制env {
table.exec.resource.default-buffer-size = "1mb"
}
虽然本文介绍的是单机部署,但有几个生产级建议值得分享:
日志管理:
权限控制:
监控集成:
高可用考虑:
版本升级:
我在实际使用中发现,单机模式虽然简单,但要稳定运行还是需要注意这些细节。特别是内存管理和连接池配置,对长期运行的稳定性影响很大。建议定期检查资源使用情况,避免因为资源耗尽导致任务失败。