点亮 ⭐️ Star · 照亮开源之路
https://github.com/apache/incubator-seatunnel
![2.3.0.png](https://dev-media.amazoncloud.cn/a56afe8e28b14310ad5a9f44d68aba6d_2.3.0.png "2.3.0.png")
版本发布
今天,Apache SeaTunnel(incubating) 正式推出 2.3.0 正式版本,并正式发布自己的核心同步引擎 Zeta!此外,SeaTunnel 2.3.0 还带来了许多大家期待已久的新特性,包括支持 CDC、以及近百种 Connector 等。
文档
https://seatunnel.apache.org/docs/2.3.0/about
下载地址
https://seatunnel.apache.org/download/
## 01 主要更新
### SeaTunnel 自己的同步引擎—Zeta 正式发布
Zeta Engine 是一个专门为数据同步场景设计和开发的数据同步引擎,更快、更稳定、更省资源也更加易用,在全球多种开源同步引擎测试比对情况下,Zeta 性能都遥遥领先。SeaTunnel Zeta 引擎,经历了数个研发版本,于 2022 年十月发布 beta 版本,经过社区讨论决定,将其命名为 Zeta(宇宙中最快的星,社区同学认为这充分体现了该引擎的特性),在社区用户贡献者的努力下,我们今天正式发布 Zeta Engine 生产可用版本,其特性包括:
1. 简单易用,新的引擎尽量减小第三方服务的依赖,可以不依赖 Zookeeper、HDFS 等大数据组件实现集群管理、快照存储和集群 HA 功能。这对于那些没有大数据平台或者不愿意依赖大数据平台进行数据同步的用户非常有用。
2. 更省资源,在 CPU 层面,Zeta Engine 内部使用 Dynamic Thread Sharing(动态线程共享)技术 ,在实时同步的场景下,如果表的数量很多但每张表的数据量又很小,Zeta Engine 会将这些同步任务在共享线程中运行,这种方式可以减少不必要的线程创建,节省系统资源。在读取和数据写入端,Zeta Engine 的设计目标是尽量减少 JDBC 连接的数量。在 CDC 场景下,Zeta Engine 会尽量复用日志读取解析资源。
3. 更稳定,在此版本中,Zeta Engine 将数据同步的任务以 Pipeline 作为 Checkpoint 和容错的最小粒度,一个 task 的失败只会影响到和它有上下游关系的 task,尽量避免 task 失败造成整个 Job 失败或回滚。同时,对于源端数据有存储时间限制的场景,Zeta Engine 支持开启数据 Cache,自动缓存从源端读取的数据,再由下游任务读取缓存数据并写入目标端。此场景下,即使目标端出现故障导致数据无法写入,也不会影响源端的正常读取,防止源端数据过期被删除。
4. 更快速,Zeta Engine 的执行计划优化器会以减小数据可能的网络传输为目标来做执行计划的优化,从而降低数据序列化和反序列化带来的整体同步性能的损耗,更快地完成数据同步操作。当然,它还支持速度限制,让同步作业以一个合理的速度进行。
5. 全场景数据同步支持。SeaTunnel 的目标是支持离线批量同步下的全量同步和增量同步,支持实时同步以及 CDC。
### 近百种 Connector 支持
支持 ClickHouse、S3、Redshift、HDFS、Kafka、MySQL、Oracle、SQLserver、Teradata、PostgreSQL、AmazonDynamoDB、Greenplum、Hudi、Maxcompute、OSSfile 等 97 种 Connector(详见:https://seatunnel.apache.org/docs/2.3.0/Connector-v2-release-state)。
此版本中,我们在大量用户的反馈和社区贡献者的测试下,很多 Connector 已完善至生产可用标准,对于还处于 Alpha 以及 Beta 阶段的 Connector,也欢迎大家一起加入测试。
### 支持 CDC Connector
变更数据捕获 (CDC) 是指识别和捕获对数据库中的数据所做的更改,再将这些更改实时传送到下游流程或系统的过程。这是数据集成中非常重要的一个功能,也是大家期待已久的功能,在 2.3.0 版本中,也首次支持了 CDC Connector,其中主要是 JDBC-Connector(包括 MySQL,SQLServer等)。
SeaTunnel CDC 是基于市面上现有的 CDC 组件的优缺点,以及大量用户访谈所得出来的相关痛点问题的集中解决方案,它具有以下特性:
- 支持基础的 CDC
- 支持无锁并行快照历史数据
以下功能目前还在开发阶段,相信很快能跟大家见面:
- 支持日志心跳检测和动态加表
- 支持分库分表和多结构表读取
- 支持 Schema evolution
### Zeta 引擎 Metrics 支持
SeaTunnel 2.3.0 版本也支持了 Zeta Metrics,用户可以获取到作业执行完成后的各种指标,包括作业执行时间、作业执行状态、作业执行的数据量等。后续,我们将提供更多、更完善的指标,便于用户更好地监控作业的运行情况。
### Zeta 引擎支持持久化存储
SeaTunnel 2.3.0 版本提供了持久化存储的功能,用户可以将作业的元数据存储到持久化存储中,保障了重启 SeaTunnel 后不会丢失作业的元数据。
### Zeta 引擎 CheckPoint 支持 S3 存储插件
[Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 为各种用例提供云对象存储,也是最近社区呼声较高的 Checkpoint 存储插件之一。因此,我们特地支持了 S3 Checkpoint 存储插件,并且兼容 S3N 和 S3A 协议。
## 02 Change Log
### 新 Feature
Core
- [Core] [Log] 集成 slf4j 和 log4j2 统一管理日志 #3025
- [Core] [Connector-V2] [Exception] 统一 Connector 异常格式 #3045
- [Core] [Shade] [Hadoop] 添加 hadoop-shade 包 #3755
Connector-V2
- [Connector-V2] [Elasticsearch] 新增 Source
- Connector #2821
- [Connector-V2] [AmazondynamoDB] 新增 AmazondynamoDB Source & Sink Connector #3166
- [Connector-V2] [StarRocks] Add StarRocks Sink Connector #3164
- [Connector-V2] [DB2] 新增 DB2 source & sink connector #2410
- [Connector-V2] [Transform] 新增 transform-v2 API #3145
- [Connector-V2] [InfluxDB] 新增 influxDB Sink Connector #3174
- [Connector-V2] [Cassandra] 新增 Cassandra Source & Sink Connector #3229
- [Connector-V2] [MyHours] 新增 MyHours Source Connector #3228
- [Connector-V2] [Lemlist] 新增 Lemlist Source Connector #3346
- [Connector-V2] [CDC] [MySql] 新增 MySql CDC Source Connector #3455
- [Connector-V2] [CDC] [SqlServer] 新增 SqlServer CDC Source Connector #3686
- [Connector-V2] [Klaviyo] 新增 Klaviyo Source Connector #3443
- [Connector-V2] [OneSingal] 新增 OneSingal Source Connector #3454
- [Connector-V2] [Slack] 新增 Slack Sink Connector #3226
- [Connector-V2] [Jira] 新增 Jira Source Connector #3473
- [Connector-V2] [Sqlite] 新增 Sqlite Source & Sink Connector #3089
- [Connector-V2] [OpenMldb] 新增 OpenMldb Source Connector #3313
- [Connector-V2] [Teradata] 新增 Teradata Source & Sink Connector #3362
- [Connector-V2] [Doris] 新增 Doris Source & Sink Connector #3586
- [Connector-V2] [MaxCompute] 新增 MaxCompute Source & Sink Connector #3640
- [Connector-V2] [Doris] [Streamload] 新增 Doris streamload Sink Connector #3631
- [Connector-V2] [Redshift] 新增 Redshift Source & Sink Connector #3615
- [Connector-V2] [Notion] 新增 Notion Source Connector #3470
- [Connector-V2] [File] [Oss-Jindo] 新增 OSS Jindo Source & Sink Connector #3456
Zeta 引擎
作业完成时支持打印作业指标 #3691
添加 Metris 信息统计 #3621
支持 IMap 文件存储 (包括 本地文件、HDFS、S3)#3418 #3675
支持保存作业重启状态信息 #3637
E2E
- [E2E] [Http] 添加 http 类型 Connector e2e 测试用例 #3340
- [E2E] [File] [Local] 添加 本地文件 Connector e2e 测试用例 #3221
### Bug Fixes
Connector-V2
- [Connector-V2] [Jdbc] 修复 Jdbc Source 批处理模式下无法停止 #3220、
- [Connector-V2] [Jdbc] 修复 Jdbc 连接重置错误 #3670
- [Connector-V2] [Jdbc] 修复 Jdbc connector exactly-once 中出现的 NPE #3730
- [Connector-V2] [Hive] 修复 Hive 数据写入过程中出现 NPE #3258
- [Connector-V2] [File] 修复 File Connector 获取 FileSystem 时出现的 NPE #3506
- [Connector-V2] [File] 修复 File Connector 用户未配置 fileNameExpression 时抛出的 NPE #3706
- [Connector-V2] [Hudi] 修复 Hudi Connector 的 split owner 可能为负的 Bug #3184
- [Connector-V2] [Jdbc] 修复 Jdbc Connector 执行完成后未关闭资源的错误 #3358
Zeta 引擎
- [ST-Engine] 修复使用 Zeta 引擎时数据文件名称重复的问题 #3717
- [ST-Engine] 修复节点失败从 Imap 持久化无法正常读取数据的问题 #3722
- [ST-Engine] 修复 Zeta 引擎 Checkpoint #3213
- [ST-Engine] 修复 Zeta 引擎 Checkpoint 失败的 Bug #3769
### 优化
Core
- [Core] [Starter] [Flink] 修改 Starter API 以兼容 Flink 版本 #2982
- [Core] [Pom] [Package] 优化打包流程 #3751
- [Core] [Starter] 优化 Logo 打印逻辑以适配高版本 JDK #3160
- [Core] [Shell] 优化二进制插件下载脚本 #3462
Connector-V1
- [Connector-V1] 移除 Connector V1模块 #3450
Connector-V2
- [Connector-V2] 添加 Connector Split 基础模块以复用逻辑 #3335
- [Connector-V2] [Redis] 支持集群模式 & 用户认证 #3188
- [Connector-V2] [Clickhouse] 支持 nest 和 array 数据类型 #3047
- [Connector-V2] [Clickhouse] 支持 geo 类型数据 #3141
- [Connector-V2] [Clickhouse] 改进 double 数据类型转换 #3441
- [Connector-V2] [Clickhouse] 改进 Float、Long 类型数据转换 #3471
- [Connector-V2] [Kafka] 支持设置读取获取起始偏移量或消息时间 #3157
- [Connector-V2] [Kafka] 支持指定多个分区键 #3230
- [Connector-V2] [Kafka] 支持动态发现 分区和 Topic #3125
- [Connector-V2] [Kafka] 支持 Text 格式 #3711
- [Connector-V2] [IotDB] 添加参数校验 #3412
- [Connector-V2] [Jdbc] 支持设置数据获取大小 #3478
- [Connector-V2] [Jdbc] 支持 Upsert 配置 #3708
- [Connector-V2] [Jdbc] 优化 Jdbc Connector 的提交流程 #3451
- [Connector-V2] [Oracle] 改进 Oracle 连接器的数据类型映射 #3486
- [Connector-V2] [Http] 支持在 Http 连接器中提取复杂 Json 字符串 #3510
- [Connector-V2] [File] [S3] 支持 S3A 协议 #3632
- [Connector-V2] [File] [HDFS] 支持使用 hdfs-site.xml #3778
- [Connector-V2] [File] 支持文件拆分 #3625
- [Connector-V2] [CDC] 支持在 Jdbc ElsticSearch 中写入 CDC 更改日志事件 #3673
- [Connector-V2] [CDC] 支持在 Jdbc ClickHouse 中写入 CDC 更改日志事件 #3653
- [Conncetor-V2] [CDC] 支持在 Jdbc Connector 中写入 CDC 更改日志事件 #3444
Zeta 引擎
- Zeta 引擎优化以提高性能 #3216
- 支持自定义 JVM 参数 #3307
### CI
- [CI] 优化 CI 执行流程以加快执行速度 #3179 #3194
### E2E
- [E2E] [Flink] 支持在任务管理器上执行命令行 #3224
- [E2E] [Jdbc] 优化 JDBC e2e 以提高测试代码的稳定性 #3234
- [E2E] [Spark] 更正了 e2e 容器中的 Spark 版本为 2.4.6 #3225
具体 Change log 见:https://github.com/apache/incubator-seatunnel/releases/tag/2.3.0
## 03 致谢
每一个版本发布的背后都是社区无数人的努力,在夜深人静的时候,在假期的时候,在工作之余的时候,在无数碎片化的时间里,为项目的发展作出自己的贡献,尤其感谢(@Jun Gao,@ChaoTian)等同学针对候选版本进行了多轮性能测试和稳定性测试。我们衷心感谢大家的付出,以下是本次版本的贡献者名单(GitHub ID),排名不分先后:
EricJoy2048
TaoZex
Hisoka-X
TyrantLucifer
ic4y
liugddx
CalvinKirs
ashulin
hailin0
Carl-Zhou-CN
FWLamb
wuchunfu
john8628
lightzhao
15531651225
zhaoliang01
harveyyue
MonsterChenzhuo
hx23840
Solomon-aka-beatsAll
matesoul
lianghuan-xatu
skyoct
25Mr-LiuXu
iture123
FlechazoW
mans2singh
特别感谢本次的 Release Manager @TyrantLucifer。虽然是第一次担任 Release Manager 这个角色,但他积极和社区就版本规划展开了充分沟通,不余遗力地跟踪发版前的问题,处理 blocking issue,管理版本质量等,完美胜任此次发版任务。感谢他为社区的付出,也欢迎其他 Committer 和 PPMC 能够主动认领 Release Manager 的任务,帮助社区更快捷、高质量地完成发版。