01
下载安装包
seatunnel-<version>-bin.tar.gz
export version="2.3.9"
wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
这或许是一个对你有用的开源项目,data-warehouse-learning 项目是一套基于 MySQL + Kafka + Hadoop + Hive + Dolphinscheduler + Doris + Seatunnel + Paimon + Hudi + Iceberg + Flink + Dinky + DataRT + SuperSet 实现的实时离线数仓(数据湖)系统,以大家最熟悉的电商业务为切入点,详细讲述并实现了数据产生、同步、数据建模、数仓(数据湖)建设、数据服务、BI报表展示等数据全链路处理流程。
https://gitee.com/wzylzjtn/data-warehouse-learning
https://github.com/Mrkuhuo/data-warehouse-learning
https://bigdatacircle.top/
项目演示:
02
配置 SEATUNNEL_HOME
/etc/profile.d/seatunnel.sh
文件来配置 SEATUNNEL_HOME
。/etc/profile.d/seatunnel.sh
的内容如下:export SEATUNNEL_HOME=${seatunnel install path}
export PATH=$PATH:$SEATUNNEL_HOME/bin
03
配置 Master 节点 JVM 选项
Master节点的JVM参数在$SEATUNNEL_HOME/config/jvm_master_options
文件中配置。
# JVM Heap
-Xms2g
-Xmx2g
# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server
# Metaspace
-XX:MaxMetaspaceSize=2g
# G1GC
-XX:+UseG1GC
Worker节点的JVM参数在$SEATUNNEL_HOME/config/jvm_worker_options
文件中配置。
# JVM Heap
-Xms2g
-Xmx2g
# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server
# Metaspace
-XX:MaxMetaspaceSize=2g
# G1GC
-XX:+UseG1GC
04
配置 SeaTunnel Engine
SeaTunnel Engine 提供许多功能,需要在
seatunnel.yaml
中进行配置。.
01
Imap中数据的备份数设置(该参数在Worker节点无效)
seatunnel:
engine:
backup-count: 1
# 其他配置
由于在分离集群模式下,Worker节点不存储Imap数据,因此Worker节点的backup-count配置无效。如果Master和Worker进程在同一个机器上启动,Master和Worker会共用seatunnel.yaml配置文件,此时Worker节点服务会忽略backup-count配置。
02
Slot配置(该参数在Master节点无效)
seatunnel:
engine:
slot-service:
dynamic-slot: true
静态slot个数配置如下:
seatunnel:
engine:
slot-service:
dynamic-slot: false
slot-num: 20
由于在分离集群模式下,Master节点不运行任务,所以Master服务不会启动Slot服务,因此Master节点的slot-service配置无效。如果Master和Worker进程在同一个机器上启动,Master和Worker会共用seatunnel.yaml配置文件,此时Master节点服务会忽略slot-service配置。
03
检查点管理器(该参数在Worker节点无效)
seatunnel:
engine:
backup-count: 1
print-execution-info-interval: 10
slot-service:
dynamic-slot: true
checkpoint:
interval: 300000
timeout: 10000
检查点配置只有Master服务才会读取,Worker服务不会读取检查点配置。如果Master和Worker进程在同一个机器上启动,Master和Worker会共用seatunnel.yaml配置文件,此时Worker节点服务会忽略checkpoint配置。
04
历史作业过期配置
seatunnel:
engine:
history-job-expire-minutes: 1440
05
类加载器缓存模式
此配置主要解决不断创建和尝试销毁类加载器所导致的资源泄漏问题。如果您遇到与metaspace空间溢出相关的异常,您可以尝试启用此配置。为了减少创建类加载器的频率,在启用此配置后,SeaTunnel 在作业完成时不会尝试释放相应的类加载器,以便它可以被后续作业使用,也就是说,当运行作业中使用的 Source/Sink 连接器类型不是太多时,它更有效。默认值是 false。示例
seatunnel:
engine:
classloader-cache-mode: true
06
IMap持久化配置(该参数在Worker节点无效)
由于在分离集群模式下,只有Master节点存储Imap数据,Worker节点不存储Imap数据,所以Worker服务不会读取该参数项。
map:
engine*:
map-store:
enabled: true
initial-mode: EAGER
factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
properties:
type: hdfs
namespace: /tmp/seatunnel/imap
clusterName: seatunnel-cluster
storage.type: hdfs
fs.defaultFS: hdfs://localhost:9000
map:
engine*:
map-store:
enabled: true
initial-mode: EAGER
factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
properties:
type: hdfs
namespace: /tmp/seatunnel/imap
clusterName: seatunnel-cluster
storage.type: hdfs
fs.defaultFS: file:///
map:
engine*:
map-store:
enabled: true
initial-mode: EAGER
factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
properties:
type: hdfs
namespace: /tmp/seatunnel/imap
clusterName: seatunnel-cluster
storage.type: oss
block.size: block size(bytes)
oss.bucket: oss://bucket name/
fs.oss.accessKeyId: OSS access key id
fs.oss.accessKeySecret: OSS access key secret
fs.oss.endpoint: OSS endpoint
aliyun-sdk-oss-3.13.2.jar
hadoop-aliyun-3.3.6.jar
jdom2-2.0.6.jar
netty-buffer-4.1.89.Final.jar
netty-common-4.1.89.Final.jar
seatunnel-hadoop3-3.1.4-uber.jar
07
作业调度策略
seatunnel:
engine:
WAIT :
dynamic-slot: ture
时,job-schedule-strategy: WAIT
配置会失效,将被强制修改为job-schedule-strategy: REJECT
,因为动态Slot时该参数没有意义,可以直接提交。05
配置 SeaTunnel Engine 网络服务
所有 SeaTunnel Engine 网络相关的配置都在 hazelcast-master.yaml
和hazelcast-worker.yaml
文件中.
01
集群名称
SeaTunnel Engine 节点使用 cluster-name
来确定另一个节点是否与自己在同一集群中。如果两个节点之间的集群名称不同,SeaTunnel 引擎将拒绝服务请求。
02
网络
hazelcast:
cluster-name: seatunnel
network:
rest-api:
enabled: true
endpoint-groups:
CLUSTER_WRITE:
enabled: true
DATA:
enabled: true
join:
tcp-ip:
enabled: true
member-list:
- master-node-1:5801
- master-node-2:5801
- worker-node-1:5802
- worker-node-2:5802
port:
auto-increment: false
port: 5801
properties:
hazelcast.heartbeat.failuredetector.type: phi-accrual
hazelcast.heartbeat.interval.seconds: 2
hazelcast.max.no.heartbeat.seconds: 180
hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100
Worker节点网络配置 hazelcast-worker.yaml
hazelcast:
cluster-name: seatunnel
network:
join:
tcp-ip:
enabled: true
member-list:
- master-node-1:5801
- master-node-2:5801
- worker-node-1:5802
- worker-node-2:5802
port:
auto-increment: false
port: 5802
properties:
hazelcast.heartbeat.failuredetector.type: phi-accrual
hazelcast.heartbeat.interval.seconds: 2
hazelcast.max.no.heartbeat.seconds: 180
hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10
hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100
TCP 是我们建议在独立 SeaTunnel Engine 集群中使用的方式。
06
启动 SeaTunnel Engine Master 节点
可以通过守护进程使用 -d 参数启动。
mkdir -p $SEATUNNEL_HOME/logs
./bin/seatunnel-cluster.sh -d -r master
日志将写入 $SEATUNNEL_HOME/logs/seatunnel-engine-master.log
07
启动 SeaTunnel Engine Worker 节点
可以通过守护进程使用 -d
参数启动。
mkdir -p $SEATUNNEL_HOME/logs
./bin/seatunnel-cluster.sh -d -r worker
日志将写入 $SEATUNNEL_HOME/logs/seatunnel-engine-worker.log
08
安装 SeaTunnel Engine 客户端
您可以通过添加 /etc/profile.d/seatunnel.sh
文件来配置 SEATUNNEL_HOME
。/etc/profile.d/seatunnel.sh
的内容如下:
export SEATUNNEL_HOME=${seatunnel install path}
export PATH=$PATH:$SEATUNNEL_HOME/bin
09
提交作业和管理作业
01
使用 SeaTunnel Engine 客户端提交作业
export SEATUNNEL_HOME=${seatunnel install path}
export PATH=$PATH:$SEATUNNEL_HOME/bin
hazelcast-client:
cluster-name: seatunnel
properties:
hazelcast.logging.type: log4j2
network:
cluster-members:
- master-node-1:5801
- master-node-2:5801
bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template
./bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template --async
./bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template --async -n myjob
查看作业列表
./bin/seatunnel.sh -l
该命令会输出所有当前集群中的作业列表(包含运行完成的历史作业和正在运行的作业)
查看作业状态
./bin/seatunnel.sh -j <jobId>
该命令会输出指定作业的状态信息
获取正在运行的作业监控信息
./bin/seatunnel.sh --get_running_job_metrics
该命令会输出正在运行的作业的监控信息
获取指定作业监控信息
--metrics 参数可以获取指定作业的监控信息
./bin/seatunnel.sh --metrics <jobId>
暂停作业
./bin/seatunnel.sh -s <jobId>
恢复作业
./bin/seatunnel.sh -r <jobId> -c $SEATUNNEL_HOME/config/v2.batch.config.template
取消作业
./bin/seatunnel.sh -can <jobId1> [<jobId2> <jobId3> ...]
02
使用 REST API 提交作业
SeaTunnel Engine 提供了 REST API 用于提交作业。
v2版本的api使用jetty支持,与v1版本的接口规范相同 ,可以通过修改seatunnel.yaml中的配置项来指定端口和context-path, 同时可以配置 enable-dynamic-port 开启动态端口(默认从 port 开始累加),默认为关闭, 如果enable-dynamic-port为true,我们将使用port和port+port-range范围内未使用的端口,默认范围是100。
seatunnel:
engine:
http:
enable-http: true
port: 8080
enable-dynamic-port: false
port-range: 100
同时也可以配置context-path,配置如下:
seatunnel:
engine:
http:
enable-http: true
port: 8080
context-path: /seatunnel
其他API我已上传Github请查看自取
【 Github地址:https://github.com/Mrkuhuo/data-warehouse-learning 】
【 Gitee 地址:https://gitee.com/wzylzjtn/data-warehouse-learning 】
10
进交流群添加作者
推荐阅读系列文章
如果喜欢 请点个在看分享给身边的朋友