Apache SeaTunnel技术架构演进及其在AI范畴的应用

打印 上一主题 下一主题

主题 547|帖子 547|积分 1641


随着数据集成需求的增长,Apache SeaTunnel作为新一代的数据同步引擎,不仅在技术架构上不断演进,也在AI范畴展现出其独特的应用价值。在CommunityOverCode Asia 2024大会上,Apache SeaTunnel PMC Chair 高俊 深入探究SeaTunnel的技术演进路径,分析其在AI范畴的应用案例,并预测未来的发展规划。
https://www.bilibili.com/video/BV1NCs5eMEA8/?vd_source=e139ecc995ab936267a7991b9de55f6c
从0构建一个数据集成体系

构建数据集成体系的初志,是因为我们面临着多种数据源到目的数据库的同步标题,如MySQL到MySQL、PostgreSQL到Oracle等。由于数据源浩繁,促使我们设计了灵活的源连接器和目的连接器。
Source连接器&Sink连接器

SeaTunnel的设计,是在数据源和目的端之间进行抽象,通过SPI的方式进行插件化加载,将数据从源端写到目的端。

表布局同步

如果目的端没有源端的表布局,则必要构建一个CatalogTable接口,来读取源端表布局的构造,得到一个类似于MySQL的表格,再转化为目的端对应的表布局。这样,在差别的数据流转之前,先把表布局进行流转,通过简单的代码就可以实现高效的数据队列和表布局同步机制。

并行化挑衅


在设计SeaTunnel时,我们特殊关注了并行化处置惩罚的多个方面,包罗任务的创建、运行位置、启动与关闭、数据分片以及任务与作业间的状态流管理。SeaTunnel把单线程变为多线程处置惩罚任务,枚举器通过差别算法把成千上完的数据拆分成实例,送到Source Reader中,每个Reader负责实行一个SQL查询,从而进行数据的并行读取。
SeaTunnel引擎

这么多的任务示例,它们何时开始、何时竣事、运行时长,运行的序次是什么?这就必要一个引擎来规划实例的实行计划。这就是SeaTunnel引擎发挥作用的地方,它的焦点是提供一个统一的数据同步与集成办理方案,支持多种数据源和目的,并能够处置惩罚大规模数据流。

Apache SeaTunnel诞生

可以看到,之所以出现越来越多的复杂的数据集成引擎,是出于各种需求而不断演进。在这样的背景下,Apache SeaTunnel应运而生。
设计目的

SeaTunnel的设计目的:

  • 简单易用:通过简单的配置和命令即可创建同步任务和运行同步任务;
  • 同步过程可监控、指标可量化:同步过程中自动统计任务读取写入的数据量,性能指标,数据延时等信息
  • 丰富的数据源生态:支持国内外数据库、消息队列、云存储、云组件、数据湖、仓、SaaS服务、支持用户自界说数据源
  • 全场景支持:支持所有数据集成场景,包罗离线、实时、全量、增量、CDC、CDC整库同步、DDL变动、动态加表
  • 数据一致性保障:数据不丢失、不重复、精确处置惩罚一次、支持断点续传
  • 资源利用少:包罗内存优化、CPU线程优化、多表同步数据库连接共享

架构概览

SeaTunnel的架构由目的数据库、源数据库,以及数据同步与集成组件构成。中间部分的抽象API包罗Table API、Source API、Sink API、Engine API、Catalog API、Type Converter API等一系列API组成,基于这一系列API实现的连接器可以运行在多种引擎上,包罗原生支持的SeaTunnel Zeta引擎,这是目前我们颠末测试数最快的数据同步引擎。同时,SeaTunnel支持通过翻译层将API开发的连接器翻译成Spark和FlinkConnector,从而支持运行在Spark和Flink引擎上。

目前,SeaTunnel社区支持的数据源连接器达到160+,后续也还在进行快速迭代更新。
连接器API与引擎解耦

SeaTunnel是针对数据集成场景而设计的数据同步工具,它提供了一套完整的连接器API,包罗源、转换、目的、检查点和翻译API,支持多引擎、多版本。办理了与计算引擎解耦的标题,同时提供了流批统一处置惩罚API和JDBC多路复用功能。

Source连接器


SeaTunnel的源连接器支持离线和实时操作模式,通过情况配置中的作业模式轻松切换。Source可以实现并行读取、动态分片发现、字段投影、多表读取、精确一次语义支持,以及适配Zeta、Spark和Flink的Checkpoint机制。
Sink连接器

通过在情况配置中将 job.mode 指定为 BATCH 或 DataMING,SeaTunnel的同一Sink连接器可以轻松地在离线和实时同步模式之间切换。

SeaTunnel的Sink连接器支持以下功能:

  • 支持SaveMode,灵活选择目的性能和数据处置惩罚方式
  • 自动创建表,支持模板修改表创建,在多表同步场景下解放双手
  • 精确一次语义支持,数据不会丢失或复制,Checkpoint机制适配 Zeta、Spark、Flink引擎
  • CDC支持,支持处置惩罚数据库日志事件
CDC连接器

SeaTunnel的CDC(Change Data Capture)主要用来做CDC的同步,连接器支持无锁快照读取,动态发现表,多表同步和多表写入,Schema evolution,checkpoint,以及CDC批量数据同步,适应了离线数据同步的需求。

多表同步

SeaTunnel支持多表数据读取和写入,通过简单配置,即可实现多表数据的快速读取和写入。

新一代数据同步引擎-SeaTunnel Zeta

SeaTunnel Zeta作为新一代的数据同步引擎,具有其他计算引擎所不具备的一些特性:

  • 不依赖第三方组件和大数据平台;
  • 无主,内置分布式网格可持久化存储内存;
  • 支持WAL,即使整个集群重启也能恢复之前的作业;
  • 支持分布式快照算法,保障数据一致性;
  • 支持更细粒度的数据同步监控指标;
  • 支持事件通知机制;
  • 类加载器隔离和缓存,提高了体系的稳定性和性能。
SeaTunnel在AI范畴的应用

社区近期在AI范畴应用方面进行了一些工作,除了通例数据范例之外,还添加了对多种向量数据范例的支持,比如BINARY_VECTOR、FLOAT_VECTOR、FLOAT16_VECTOR、BFLOAT16_VECTOR、SPARSE_FLOAT_VECTOR等,为AI范畴的数据处置惩罚提供了强盛支持。
后续,社区还计划推出专门的Transform,针对向量数据范例进行精确处置惩罚。
目前,SeaTunnel 2.3.6版本已经提供了Milvus的源和目的连接器,使得AI应用能够更高效地处置惩罚向量数据。

最新规划

为了使SeaTunnel能够满足更多用户需求,社区近期也在计划一些新功能的添加和优化工作。
引入SeaTunnel Zeta Master/Worker新架构

SeaTunnel Zeta引入了Master/Worker新架构,这种架构允许在同一个情况中同时运行多个版本的 Hadoop 或 Hive 同步任务。
Note:由于稿件整理的时间差,实际上这一点在最新版本2.3.6中已经实现。

利用SQL创建SeaTunnel作业

SeaTunnel Zeta支持利用SQL语句直接创建数据同步任务,简化了作业配置过程。

Note:由于稿件整理的时间差,实际上这一点在最新版本2.3.6中已经实现。
Zeta CDC的改进

Zeta CDC改进了空闲读取器的同步释放机制,优化了快照读取和实时增量读取阶段的性能。

ClassLoader隔离改进

通过重构ClassLoader和插件加载机制,SeaTunnel Zeta能够在同一个情况中同时运行多个版本的Hadoop或Hive同步任务,提高了体系的兼容性和灵活性。
Note:由于稿件整理的时间差,实际上这一点在最新版本2.3.6中已经实现。
CDC同步监控优化

SeaTunnel的CDC同步将支持DML事件范例粒度的监控指标,提高监控的可观测性。
支持事件通知机制

SeaTunnel Zeta 支持事件通知机制,可以在数据同步过程中触发特定的事件通知,加强了体系的交互性和自动化能力。
结语

SeaTunnel作为Apache软件基金会的顶级项目,其技术架构的演进和在AI范畴的应用展示了开源数据集成工具的强盛潜力。我们期待与社区共同推动SeaTunnel的进一步发展。如有任何标题或建议,欢迎进入交流群参与讨论。
本文由 白鲸开源 提供发布支持!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表