Apache SeaTunnel 2.3.6 版本于近日正式发布,社区期待的 SeaTunnel Zeta Master/Worker 新架构、事件通知机制、支持动态编译的transform等新功能和新能力在这次版本中都有了全面的更新,并添加了首个向量数据库 Milvus。此外,本版本还进行了一些基础性的 Bug 修复和文档修复等,欢迎尝试使用!

2.3.6 版本下载:https://seatunnel.apache.org/download/

Release Note:https://github.com/apache/seatunnel/blob/2.3.6/release-note.md

重点更新

SeaTunnel Zeta Master/Worker 新架构

首先是实现 SeaTunnel Zeta Master/Work 新架构。在 SeaTunnel 当前的架构里是不分 Master 和 Worker 角色的,所有节点既是 Master 又是 Worker、SeaTunnel会从这些Master节点中选择一个节点,将其作为 active 的 Master 节点,其他 Master 节点作为 standby 节点。下面是 SeaTunnel 集群的分布式内存网格,就是在各个节点之间可以向 HashMap 里导入数据,HashMap 就会分散在集群的所有节点中,并有副本。Flink 等工具会把任务的状态信息存在 Zk 等三方系统中。

而 SeaTunnel Zeta 不需要三方系统,其内部自带的分布式内存网格就可以存储作业的状态信息。任何节点进程异常退出,都会去重新分布内存网格里面的数据,保证作业在另外的节点去进行容错恢复时能够找到之前的状态。这样的架构存在一个问题,当 Master/Worker 在一起的时候,一旦集群的负载比较高,假设一个 active Master 的节点进程异常退出,它会容错在新的节点上,在容错的过程中,因为 Master 节点进程异常退出,所有的任务都要重新进行容错,这就可能导致新的 Master 节点上的 Worker 节点高负载,这可能又会使新的 Master 进程异常退出。

为了解决这个问题,我们开发了新的架构,将 Master 和 Worker 分开部署,Master 上只存储数据和调度任务,Work 节点只进行任务的执行和资源的提供。这样整个 SeaTunnel 中节点的角色就分为 Master、Worker,master_and_worker 三种,用户可以根据需求去使用。

支持使用SQL的方式创建SeaTunnel任务

第二个是支持使用 SQL 的方式去创建 SeaTunnel 任务。之前 SeaTunnel 的任务创建是使用 HOCON 的文件格式,而 2.3.6 版本支持使用 SQL 的方式创建任务。用户可以 创建一张 Source 表,一张 Sink 表,最终通过 insert into 语句,从 Source 表里面查数据,同步到目标表。

Zeta CDC同步释放空闲的Reader

第三个是新增了 Zeta CDC 同步释放空闲 Reader 的功能。在 CDC 全量阶段,为了加快同步的速度,会并行地开很多 Reader 进行数据的读取和写入。但是当进入到解析 binlog 进行增量同步的阶段,读取只能是单线程的,因为 binlog 是有序的,不能把顺序打乱。此时,前面的四个 Reader 和 Writer 其实就没有任何的数据流了。在 2.3.6 版本中,Apache SeaTunnel 会释放之前的资源,把里面的 JDBC 资源、内存的资源等全部释放,保证尽量占用更少的空间同步更多的数据,支持更大规模任务的运行。针对单个 Writer 写入较慢的问题,可以在 Writer 里设置 Writer 的线程数。这样,读是单线程,而写又是多线程并行的写入。因为读文件解析速度较快,单个作业能够达到每秒三十多兆的写入速度。如果写入遇到困难,Writer 端也支持设置并行度。

支持事件通知机制

支持事件通知机制,通过这些 API,可以将 Zeta 引擎里面产生的事件,比如作业成功或失败,或者 DDL 变更信息通过请求发送到其他的系统中去。

添加向量数据库Milvus支持

向量数据库可加速 AI 应用程序的开发,并简化由人工智能驱动的应用程序工作负载的运作,已成为大模型时代的得力助手。为更好地支持 AI 开发,Apache SeaTunnel 2.3.6 版本添加了对向量数据库 Milvus 的支持。这是 Apache SeaTunnel 支持的首个向量数据库,后续将扩展对其他向量数据库的支持。

支持动态编译的transform

Apache SeaTunnel 2.3.6 版本提供一种可编程的方式来处理行,允许用户根据现有行字段作为参数自定义任何业务行为,甚至基于现有行字段作为参数的RPC请求,或者通过从其他数据源检索相关数据来扩展字段。为了区分业务,用户还可以定义多个转换来进行组合,更加高效和灵活地适配业务场景。

详情请查看https://seatunnel.apache.org/docs/2.3.6/transform-v2/dynamic-compile

资源隔离

通过对任务节点添加tag标签的方式来进行集群资源的区分,帮助用户更加合理地规划集群任务的调度。

资源隔离示意图

关于资源隔离详情和实现方法请查看 https://seatunnel.apache.org/docs/2.3.6/seatunnel-engine/resource-isolation

Sink统一支持table/database等通配符使用

新版本还提供了一个接收选项通配符功能, 通过通配符可以获取上游表格元数据。当用户需要动态获取上游表格元数据(例如多表写入)时,这个功能非常重要,可以帮用户更加方便和统一地实现多表配置方式,降低多表配置的难度。

查看文档了解如何使用此功能:https://seatunnel.apache.org/docs/2.3.6/concept/sink-options-placeholders

其他

此外,Apache SeaTunnel 2.3.6 版本还实现了 Spark/Flink引擎下的用户自定义参数功能,新增 Hudi Sink 等多个 Connector 支持,Transform 和 Zeta Engine也进行了众多更新,并修复了文档遗留问题。

详情可查看Release Note: https://github.com/apache/seatunnel/blob/2.3.6/release-note.md

致谢

感谢@Hisoka-X主导本次发版工作,感谢以下贡献者对本次发版的支持(排名不分先后):

Assert, Asura7969, Carl-Zhou-CN, ChunFuWu, Coen, CosmosNi, Dongyeon Lee, Eric, Felix, Feng Ruohang, FuYouJ, Guangdong Liu, JackeyLee007, Jarvis, Jast, Jia Fan, Kim, Leon Yoah, Marvin, THZ, TaoZex, TeAmo, Thomas-HuWei, Tyrantlucifer, Wenjun Ruan, Wudadada, XiaoMaYi, Xiaojian Sun, Xuzz, YalikWang, ZhiLin Li, Zhihong Pan, ZhilinLi, bingquanzhao, corgy-w, dailai, fcb-xiaobo, gitfortian, hailin0, halo.kim, hawk9821, hilo, ic4y, latch890727, lightzhao, litiliu, lizhenglei, ponxu, rtyuy, seckiller, tcodehuber, useheart, xiaochen, zhangdonghao, zhiwei liu, zuo, 老王, 不忘初心, 狂野之驴

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

2.3.6版本发布!Apache SeaTunnel Zeta引擎迎来新架构!的更多相关文章

  1. Apache SeaTunnel (Incubating) 2.1.0 发布,内核重构、全面支持 Flink

    2021 年 12 月 9 日,SeaTunnel (原名 Waterdrop) 成功加入 Apache 孵化器,进入孵化器后,SeaTunnel 社区花费了大量时间来梳理整个项目的外部依赖以确保整个 ...

  2. 基于SpringBoot+Mybatis+AntDesign快速开发平台,Jeecg-Boot 1.1 版本发布

    Jeecg-Boot 1.1 版本发布,初成长稳定版本 导读     平台首页UI升级,精美的首页支持多模式 提供4套代码生成器模板(支持单表.一对多) 集成Excel简易工具类,支持单表.一对多导入 ...

  3. 意料之外,情理之中,Spring.NET 3.0 版本发布-

    意料之外,情理之中,Spring.NET 3.0 版本发布- 备受社区和企业开发者广泛关注的Spring.NET在上周发布了3.0版本,并且目前已经保持着持续的更新,让我们一起来看一看他究竟发布了哪些 ...

  4. Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布

    一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...

  5. Kafka 1.0版本发布

    Kafka 1.0版本发布 1.0.0 2017年11月1日发布 源码下载: kafka-1.0.0-src.tgz(asc,sha512) 二进制下载: Scala 2.11 - kafka_2.1 ...

  6. CAP 5.2 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 5.2 版本正式版,在这个版本中,我们主要致力于更好的优化使用体验以及支持新的 Transport,同时在该版本也进行了一些 bug 修复的工作. 自从 5. ...

  7. 陈胡:Apache SeaTunnel实现 非CDC数据抽取实践

    导读: 随着全球数据量的不断增长,越来越多的业务需要支撑高并发.高可用.可扩展.以及海量的数据存储,在这种情况下,适应各种场景的数据存储技术也不断的产生和发展.与此同时,各种数据库之间的同步与转化的需 ...

  8. CAP 7.0 版本发布通告 - 支持延迟消息,性能炸了?

    前言 今天,我们很高兴宣布 CAP 发布 7.0 版本正式版,我们在这个版本中带来了大批新特性以及对性能的优化和改进. 自从今年 1月份发布 6.0 版本以来,已经过去了快1年的时间.在过去的将近1年 ...

  9. EQueue 2.3.2版本发布(支持高可用)

    前言 前段时间针对EQueue的完善终于告一段落了,实在值得庆祝,自己的付出和坚持总算有了成果.这次新版本主要为EQueue实现了集群功能,基本实现了Broker的高可用.另外还增加了很多实用的功能, ...

  10. glibc 各版本发布时间以及内核默认glibc版本

    最近有些软件要求glibc 2.14+,centos 6.x自带的版本是2.12的,特查了下glibc 各版本发布时间以及与对应的内核,如下: Complete glibc release histo ...

随机推荐

  1. 记一下 localstorage sessionStorage cookie 不同

    localStorage.sessionStorage.cookie 使用整理 下面从这几方面进行梳理 存储形式 相同点 不同点 使用方法 用途 多标签之间通讯 一.存储形式 1.localStron ...

  2. webpack-bundle-analyzer 分析打包模块大小优化

    安装 webpack-bundle-analyzer npm i webpack-bundle-analyzer -D 配置vue.config.js module.exports = defineC ...

  3. react 使用 error 报错

    在使用react 中报错原因总结 01 // Warning: Can't call setState on a component that is not yet mounted. This is ...

  4. debian使用桌面管理器管理多个桌面系统

    环境:debian12.x 前言:我安装了debian12版本的操作系统在虚拟机中,在安装的时候选择的是KDE桌面,便于以后日常使用linux操作系统 在安装KDE桌面后,会自动安装一个sddm,sd ...

  5. Linux特殊权限之SBIT

    简单点,说话的方式简单点: 用于修饰目录 其他用户x位替换成t 作用:目录属主在该目录下创建的文件只有该属主能删除

  6. 保护您的Web应用:使用雷池(SafeLine)WAF的入门指南

    雷池(SafeLine)是长亭科技耗时近 10 年倾情打造的 WAF,核心检测能力由智能语义分析算法驱动.旨在提供卓越的安全保护.本文将带您一步步了解如何安装.配置和测试SafeLine,以及如何利用 ...

  7. 创建docker

    创建docker 准备实验环境 1. 安装前准备 Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可. 1.1 查看当前的内核版本 uname -r 1.2 使用 root ...

  8. 【资料分享】RK3568开发板规格书(4x ARM Cortex-A55(64bit),主频1.8GHz)

    1 开发板简介 创龙科技TL3568-EVM是一款基于瑞芯微RK3568J/RK3568B2处理器设计的四核ARM Cortex-A55国产工业评估板,每核主频高达1.8GHz/2.0GHz,由核心板 ...

  9. MySQL与Redis数据双写一致性工程落地案例

    复习-面试题 多个线程同时去查询数据库的这条数据,那么我们可以在第一个查询数据的请求上使用一个 互斥锁来锁住它. 其他的线程走到这一步拿不到锁就等着,等第一个线程查询到了数据,然后做缓存. 后面的线程 ...

  10. Spark大数据集群日常开发过程遇到的异常及解决思路汇总

    总结/朱季谦 一.出现java.lang.IllegalAccessError: tried to access method com.google.common.base.Stopwatch.()V ...