Apache Seatunnel

发布于:2025-03-23 ⋅ 阅读:(29) ⋅ 点赞:(0)

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. 本地部署

参考Apache seatunnel官方文档

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/

seatunnel-web-main.zip

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。