1. Apache seatunnel简介
Apache seatunnel是一个分布式数据集成平台,架构于Apache spark和Apache flink之上,实现海量数据的实时同步与转换。
1.1. 背景
随着各种类型的数据库快速发展,各种数据库之间的同步与转换需求激增,数据集成成了大数据领域的一个亟需优秀解决方案的方向。Apache seatunnel不仅支持上百种数据源,同时支持海量数据的实时CDC和批量同步,可以稳定高效地同步万亿级数据。
1.2. 应用场景
Apache seatunnel的使用场景广阔,包括如下场景:
-
- 海量数据同步
- 海量数据集成
- 海量数据ETL
- 海量数据聚合
- 多元数据处理
1.3. 功能及特性
除基本的数据读取和写入功能,Apache seatunnel区别于一般数据库集成工具的功能:
-
- 引擎与spark、flink解耦,拥有专为数据集成场景设计的引擎Zeta,更快、更稳定、更省资源。及Apache seatunnel同时支持spark、flink和tunnel自研的引擎Zeta Engine;
- 具有web界面更加直观易于操作;
- 支持连接100+连接器,数据处理类型丰富,满足生产需要;
- 独特的checkpoint功能设计,增强数据存储能力;
- 支持上百个数据源、传输速度更快、更准确;
- 降低复杂性,给予API开发的连接器能兼容离线同步、实时同步、 全量同步、增量同步、CDC 实时同步等多种场景;
- 提供可拖拽和类 SQL 语言界面,节省开发者更多时间 ,提供了作业可视化管理、调度、运行和监控能力。加速低代码和无代码工具的集成;
- 简单易维护,支持单机 & 集群部署,如果选择 Zeta 引擎部署,无需依赖 Spark、Flink 等大数据组件。
Apache seatunnel具有以下核心特性;
-
- 高扩展性:模块化和插件化,支持热插板,带来更好的扩展性;
- 插件丰富:内置丰富插件,支持各种数据产品的传输和集成;
- 成熟稳定:经历大规模生产环境使用和海量数据的校验;
- 简单易用:特有的架构设计,简单易用,灵活配置,无需开发;
- SQL支持:支持通过SQL进行数据处理和聚合;
- 流失支持:支持实时流式处理;
1.4. Apache seatunnel支持的插件
Source插件 |
File、Hdfs、kafaka、Druid、InfluxDB、S3、Socket、自研输入插件 |
Transform插件 |
Add、Checksum、Convert、Date、Drop、Grok、Json、Kv、Lowercase、Remove、Rename、Repartition、Repalce、Sample、Split、Sql、Table、Truncate、Uppercase、Uuid、自研过滤器插件 |
Sink插件 |
Elasticsearch、File、Hdfs、Jdbc、Kafka、Druid、InfluxDB、Mysql、S3、Stdout、自研输出插件 |
1.4.1. 插件支持情况
Spark:
数据库类型 |
Source |
Slink |
Mysql |
√ |
√ |
Jdbc |
√ |
√ |
Tidb |
√ |
√ |
CK |
√ |
|
Doris |
√ |
|
StartRocks |
√ |
Flink:
数据库类型 |
Source |
Slink |
Jdbc |
√ |
√ |
Doris |
√ |
|
StarRocks |
√ |
|
Ck |
√ |
√ |
Mysql |
√ |
√ |
Tidb |
√ |
√ |
Hive |
√ |
√ |
2. 本地部署
2.1. 准备环境
Java(Java8或11)安装和JAVA_HOME设置。
下载seatunnel分发包,下载地址为:Apache SeaTunnel。
wget https://oss-cn-north-1.unicloudsrv.com/sc-tools/linux/middleware/apache-seatunnel-2.3.3-bin.tar.gz
tar -zxvf apache-seatunnel-2.3.3-bin.tar.gz
#运行 SeaTunnel Zeta 引擎服务器,确认端口 5801 启动成功
sh bin/seatunnel-cluster.sh -d
2.2. 初始化数据库
#编辑文件,填写已安装的数据库地址、端口、用户名和密码
#apache-seatunnel-web-${project.version}/script/seatunnel_server_env.sh
export HOSTNAME="localhost"
export PORT="13306"
export USERNAME="smartcity"
export PASSWORD="Unicloud.1"
#运行初始化脚本,如果在操作过程中没有错误,则表示初始化成功
sh seatunnel-server/seatunnel-app/src/main/resources/script/init_sql.sh
2.3. 配置应用连接数据库信息
#编辑 填写数据库连接信息
#apache-seatunnel-web-${project.version}/conf/application.yml
db.url.0=jdbc:mysql://localohost:13306/seatunnel?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=smartcity
db.password.0=Unicloud.1
2.4. 源码编译获得web安装包
cd incubator-seatunnel-web
sh build.sh code
#解压获编译完成获得得zip包
#https://oss-cn-north-1.unicloudsrv.com/sc-tools/linux/middleware/apache-seatunnel-web-1.0.0-SNAPSHOT.tar.gz
tar -zxvf apache-seatunnel-web-${project.version}.tar.gz
#复制配置文件
$SEATUNNEL_HOME/config/hazelcast-client.yamlapache-seatunnel-web-${project.version}/conf/
apache-seatunnel-2.3.3-SNAPSHOT/connectors/plugin-mapping.propertiesapache-seatunnel-web-${project.version}/conf/
2.5. 启动web后端服务
cd apache-seatunnel-web-${project.version}
sh bin/seatunnel-backend-daemon.sh start
在浏览器中访问 http://127.0.0.1:8801/ui/ 默认用户名和密码是管理员/管理员。
3. 总结
Apache seatunnel降低了数据处理门槛,让spark和flink更加易用,加快了分布式数据处理在生产环境的落地。但其更新速度慢,不兼容spark3.x和flink1.17.x。