SeaTunnel 是一个非常简单、高性能、分布式的数据集成平台,与Sqoop和DataX相比,它更加轻量,拥有非常多的Connector,拿来即用,非常简单,可以出色的完成日常的数据同步任务。
SeaTunnel 也是apache基金会项目,版本目前已经到2.3.3,已经非常成熟,具体的使用文档,可以去官网了解,本文将介绍SeaTunnel的基本用法。
快速安装
官方提供了三种安装方式:本地安装、Docker、K8s,本文使用的是本地安装方式,以快速体验SeaTunnel。
环境要求:JAVA8 以上
- 下载并解压
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"
|
- 安装插件,这里我没有安装flink或者spark,因为seatunnel从2.0开始已经有了自己的执行引擎,seatunnel-engine
1
| sh bin/install-plugin.sh 2.3.3
|
- 配置环境变量
1
| export SEATUNNEL_HOME=/***/apache-seatunnel-2.3.3
|
- 安装后测试,这里使用的是本地模式,除此之外,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的完美组合,可以很轻松的完成日常的数据同步任务。