SeaTunnel

SeaTunnel 是一个非常简单、高性能、分布式的数据集成平台,与Sqoop和DataX相比,它更加轻量,拥有非常多的Connector,拿来即用,非常简单,可以出色的完成日常的数据同步任务。

SeaTunnel 也是apache基金会项目,版本目前已经到2.3.3,已经非常成熟,具体的使用文档,可以去官网了解,本文将介绍SeaTunnel的基本用法。

快速安装

官方提供了三种安装方式:本地安装、Docker、K8s,本文使用的是本地安装方式,以快速体验SeaTunnel。

环境要求:JAVA8 以上

  1. 下载并解压
1
2
3
export version="2.3.3"
wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"
  1. 安装插件,这里我没有安装flink或者spark,因为seatunnel从2.0开始已经有了自己的执行引擎,seatunnel-engine
1
sh bin/install-plugin.sh 2.3.3
  1. 配置环境变量
1
export SEATUNNEL_HOME=/***/apache-seatunnel-2.3.3
  1. 安装后测试,这里使用的是本地模式,除此之外,Seatunnel还有集群模式,可以从客户端远程提交到集群,由远端集群来执行,集群模式,需要安装服务端。
1
2
cd apache-seatunnel-2.3.3
./bin/seatunnel.sh --config ./config/v2.batch.config.template -e local

架构说明

如下,是SeaTunnel的架构图

整体可以分为4个部分

  • Data Source : 数据源,SeaTunnel 通过丰富的Source Connector 连接并查询数据源。

  • Destination : 目的地,SeaTunnel 通过Sink Connector 将查询到的数据,写入到目的地数据源中。

  • SeaTunnel Engine : 上面的Source Connector 和 Sink Connector 都是SeaTunnel Engine的一部分,其还包括了Transform,用于数据写入前的预处理。

  • Web : SeaTunnel提供了UI,来便于源以及任务的提交,目前已经到1.0版本,但个人使用下来,并不是很好,目前用Dolphin Scheduler代替。

案例:将MySQL数据同步到Clickhouse中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
env {
# 分段处理
execution.parallelism = 1
# 处理模式:批处理
job.mode = "BATCH"
}

# 将source连接到clickhosue
source {
Clickhouse {
host = "localhost:8123"
database = "tmp"
sql = "select * from tmp.entities"
username = "default"
password = "123456"
server_time_zone = "UTC"
result_table_name = "t1"
}
}
transform {
Replace {
source_table_name = "t1"
result_table_name = "t2"
replace_field = "name"
pattern = "ads_"
replacement = "tmp_"
is_regex = false
}
}
# 将sink连接到mysql
sink {
jdbc {
url = "jdbc:mysql://localhost:3306/test"
driver = "com.mysql.cj.jdbc.Driver"
user = "root"
password = "123456"
# Automatically generate sql statements based on database table names
generate_sink_sql = true
database = test
table = entities
}
}
~

执行

1
./bin/seatunnel.sh --config ./config/clickhouse_to_mysql.config -e local

调度执行

上面由提到,SeaTunnel的UI并不好用,我们可以用DolphinScheduler来代替,DolphinScheduler中自带了SeaTunnel的组件,只需填写相应配置,可以很方便使用SeaTunnel

创建完工作流之后,再配置相应的定时调度,通过SeaTunnel+DolphinScheduler的完美组合,可以很轻松的完成日常的数据同步任务。


SeaTunnel
https://www.xinyublog.com/tools/seatunnel/
作者
蚂蚁
发布于
2023年11月30日
许可协议