Apache SeaTunnel技术架构演进及其在AI领域的应用

news/2024/11/17 3:08:56/文章来源:https://www.cnblogs.com/seatunnel/p/18382269

file

随着数据集成需求的增长,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的方式进行插件化加载,将数据从源端写到目标端。

file

表结构同步

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

file

并行化挑战

file

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

SeaTunnel引擎

这么多的任务示例,它们何时开始、何时结束、运行时长,运行的顺序是什么?这就需要一个引擎来规划实例的执行计划。这就是SeaTunnel引擎发挥作用的地方,它的核心是提供一个统一的数据同步与集成解决方案,支持多种数据源和目标,并能够处理大规模数据流。

file

Apache SeaTunnel诞生

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

设计目标

SeaTunnel的设计目标:

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

file

架构概览

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引擎上。

file

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

连接器API与引擎解耦

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

file

Source连接器

file

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

Sink连接器

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

file

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

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

CDC连接器

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

file

多表同步

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

file

新一代数据同步引擎-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应用能够更高效地处理向量数据。

file

最新规划

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

引入SeaTunnel Zeta Master/Worker新架构

SeaTunnel Zeta引入了Master/Worker新架构,这种架构允许在同一个环境中同时运行多个版本的 Hadoop 或 Hive 同步任务。

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

file

使用SQL创建SeaTunnel作业

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

file

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

Zeta CDC的改进

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

file

ClassLoader隔离改进

通过重构ClassLoader和插件加载机制,SeaTunnel Zeta能够在同一个环境中同时运行多个版本的Hadoop或Hive同步任务,提高了系统的兼容性和灵活性。

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

CDC同步监控优化

SeaTunnel的CDC同步将支持DML事件类型粒度的监控指标,提高监控的可观测性。

支持事件通知机制

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

结语

SeaTunnel作为Apache软件基金会的顶级项目,其技术架构的演进和在AI领域的应用展示了开源数据集成工具的强大潜力。我们期待与社区共同推动SeaTunnel的进一步发展。如有任何问题或建议,欢迎进入交流群参与讨论。

本文由 白鲸开源 提供发布支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/787888.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 系统 局域网文件夹共享无法访问的终极解决方法

先介绍 Win10 无法访问其他电脑的解决方法首先,Win10 能成功访问共享文件夹,必须有安装 SMB1 协议,否则会提示找不到网络名称的提示。 方法很简单,点击 微软小娜 Cortana 输入 启用或关闭 Windows 功能(或者直接输入 功能 也能找到),打开 启用或关闭 Windows 功能 对话框…

使用 updateAppConfig 更新 Nuxt 应用配置

title: 使用 updateAppConfig 更新 Nuxt 应用配置 date: 2024/8/27 updated: 2024/8/27 author: cmdragon excerpt: 通过使用 updateAppConfig,你可以轻松地在应用运行时更新配置,而无需重新启动应用。这对于需要在运行时调整设置的应用场景非常有用。 categories:前端开发…

AtCoder Beginner Contest 051

A - Haiku 直接模拟。 #include <bits/stdc++.h>using namespace std; using i64 = long long;int main() {ios::sync_with_stdio(false), cin.tie(nullptr);string s;cin >> s;string a, b, c;a = s.substr(0, 5);b = s.substr(6, 7);c = s.substr(14);cout <&…

PEP 508:为不同版本Python指定不同依赖

如果使用Python第三方包的某一个版本有问题,而不同版本Python所对应的软件最新版本又不一致,这种情况下如何在requirements.txt文件中指定软件最高版本是非常重要的。这里根据PEP 508的规范,做了一个Numpy版本要求numpy<=1.21.6 || 1.28>numpy>=1.23的示例。问题背…

经验分享|如何发现并利用信息泄露漏洞?

信息泄露漏洞是发现和报告的重要目标。虽然它们可能不会带来很丰厚的回报,但发现它们表明Web应用程序的安全性较差,这可能有助于发现更严重的漏洞。 一、常见的信息泄露漏洞类型 1.1服务器标识版本 服务器标识版本能够揭示服务器上运行的特定软件及其版本,这可以被用来寻找已…

简单萌萌哒 Top Tree(上)

前情提要。 Top Cluster 分解与 Top Tree 情景导入 我们总是想要以一种合适的方式对树进行划分,但是对于菊花图而言,基于点的划分总是不合适的,这启发我们基于边进行划分。事实上可以证明,基于边的划分总是可行的。 Top Cluster 分解就是一种基于边的划分方式,下面我们来介…

手把手教你—搭建Vue3企业级项目规范+基础封装配置

前言 如何搭建一个简易脚手架。核心需求是输入项目命令,clone准备好的项目模板,拉到本地后,装一下依赖,就可以直接开发了。不用每次都花大量时间,去搭建项目规范和做必要的封装配置。 经过简单寻找后,发现没有符合自己预期的。于是大雄从0到1搭建一个具备完善规范的Vue3开…

WPF 模板

一、数据模板继承了ItemConrol的控件对象(如ListView、ListBox、DataGrid、TabControl等等),都可以使用数据模板DataTemplate。 数据模板的作用在于决定每个Item中的数据的展示形式。 普通控件通过Template属性来定义模板,而子项容器控件则通过ItemTemplate属性来定义子项模…

算法与数据结构——队列

队列 队列(queue)是一种遵循先入先出规则的线性数据结构。队列模拟了排队现象,即新来的人不断加入队列尾部,而队列头部的人逐个离开。 如图所示,我们将队列头部称为“队首”,尾部称为“队尾”,将把元素加入队列尾部的操作称为“入队”,删除队首元素的操作称为“出队”。…

AD采集卡:FMC210-1路1Gsps AD、1路2.5Gsps DA的FMC子卡 信号采集卡

FMC210-1路1Gsps AD、1路2.5Gsps DA的FMC子卡 一、板卡概述FMC-1AD2DA是我司自主研发的一款1路1G AD采集、1路2.5G DA回放的FMC子卡。板卡采用标准FMC子卡架构,可方便的与其他FMC板卡实现高速互联,可广泛用于高频模拟信号采集、雷达系统测试等场合。    二、 功能介绍 2.1 …

BAdam A Memory Efficient Full Parameter Optimization Method for Large Language Models

目录概BAdam代码Luo Q., Yu H. and Li X. BAdam: A memory efficient full parameter optimization method for large language models. arXiv preprint, 2024.概 本文介绍了一种 Block corrdinate descent (BCD) 的训练方式. BAdam当模型本身很大的时候, 训练它会成为一个很大…

Origin2024图表中如何直接移除异常点?

平时我们在使用Origin绘图后,可能会发现有一两个「异常点」,这个时候,我们可能会返回工作表,将异常的数据去除,但可能不知道是哪个数据,因为图和数据有时候不太好对应起来; 本期给大家分享做好图之后直接选择移除异常点功能,并且数据表中的数据也会相应的去除,是一个很…