采访嘉宾 | 郭炜、高俊
编辑 | Tina
北京工夫 2023 年 6 月 1 日,寰球最大的开源软件基金会 Apache Software Foundation(以下简称 ASF)正式发表 Apache SeaTunnel 毕业成为 Apache 顶级我的项目 (TLP, Top Level Project)。
Apache SeaTunnel 于 2021 年 10 月申请加入 Apache 孵化器,不到 2 个月,便以“全票通过”的优良体现正式成为 Apache 孵化器我的项目。2023 年 5 月 17 日,Apache 董事会通过 Apache SeaTunnel 毕业决定,完结了为期 18 个月的孵化,正式确定 Apache SeaTunnel 成为 Apache 顶级我的项目。
这是首个由国人主导并奉献到 ASF 的大数据集成畛域的顶级我的项目,为了理解我的项目的起源、倒退过程,以及开源心得,InfoQ 采访了 Apache SeaTunnel 我的项目的要害成员。
采访嘉宾简介:
郭炜,Apache 基金会成员;Apache DolphinScheduler PMC Member;Apache SeaTunnel Mentor。
高俊,Apache SeaTunnel PMC Chair。
Apache SeaTunnel 的起源
InfoQ:在大数据体系里,Apache SeaTunnel 起到的次要作用是什么?
郭炜:目前,大数据体系里有各种各样的数据引擎,有大数据生态的 Hadoop、Hive、Kudu、Kafka、HDFS,也有泛大数据库体系的 MongoDB、Redis、ClickHouse、Doris,更有云上的 AWS S3、Redshift、BigQuery、Snowflake,还有各种各样数据生态 MySQL、PostgresSQL、IoTDB、TDEngine、Salesforce、Workday 等。咱们须要工具让这些数据之间能互联互通,那么 Apache SeaTunnel 就是买通这些简单数据源的利器,它能够简略、精确、实时地把各种数据源整合到指标数据源当中,成为大数据流动的“高速公路”。
InfoQ:Apache SeaTunnel 是如何发挥作用的,其要害原理、外围设计是什么?
郭炜:面对成千盈百的数据源,咱们须要一个简略高效的架构来解决各种各样的数据源之间数据集成的问题。Apache SeaTunnel 由三大部分组成,源连接器(Source Connector)、传输计算引擎(SeaTunnel Zeta、Flink、Spark),指标连接器(Sink Connector)。简略来说,源连接器就是实时地读取数据源端(兴许是 JDBC,兴许是 Binlog,兴许是非结构化 Kafka 或者 SaaS API,AI 数据模型),把这些数据转化成 SeaTunnel 能够了解的规范数据格式再传送给传输计算引擎,传输计算引擎将对这些数据进行解决(例如数据格式变动,分词等)和散发,最终 Sink Connector 将 SeaTunnel 数据格式变动为指标端的格局存入指标数据库。当然,其中有非常复杂的高性能数据传输、分布式快照、全局 Checkpoint、两阶段提交等,来确保数据能够高效、疾速地传递到指标端。
最近社区还提交了 SeaTunnel-Web,让用户不仅能够用类 SQL 语言来做 Transform,还能够利用界面拖拽来间接买通不同的数据源。任何一个开源用户都能够不便地扩大本人应用数据源的 Connector,而后提交到 Apache 社区,让更多的人一起应用它。同时,你也能够疾速应用他人奉献的 Connector 来疾速解决本人企业数据源之间的买通问题。目前,SeaTunnel 曾经反对了包含 CDC、云存储、数据库、SaaS 等 100 多个数据源,让企业不便地买通各种各样的数据源。人人为我、我为人人,这在开源的 Apache SeaTunnel 我的项目中体现得酣畅淋漓。
Apache SeaTunnel 的演进过程
InfoQ:Apache SeaTunnel 我的项目的演进,次要有哪几个倒退阶段?
高俊:Apache SeaTunnel,起初名为 Waterdrop,是一个易用且高效的海量数据集成平台,次要基于 Apache Spark 和 Apache Flink 构建。它反对海量数据的实时同步与转换。
Waterdrop 阶段。这一阶段的次要指标是帮忙 Spark 更简略地解决异构数据源数据。在此期间,Waterdrop 的次要使命是通过提供一个简略易用、可能反对每天数百亿条海量数据同步的开源软件,将海量数据同步的能力流传到全世界。
SeaTunnel 初期。在 2021 年 Waterdrop 更名为 SeaTunnel 之后,它的次要指标是更简略地进行异构数据源同步和集成。SeaTunnel 的设计指标是要大大降低用户应用 Spark、Flink 等技术做数据集成的门槛。这个阶段的重点是利用 Spark 和 Flink 作为底层数据同步引擎,进步数据同步的吞吐性能。此外,SeaTunnel 还开始引入可插拔的插件体系,反对超过 100 种数据源,从而加强其数据集成的能力。
SeaTunnel 中期。在 SeaTunnel 的中期阶段,SeaTunnel 建设了 Zeta 引擎,专为数据同步集成而设计。新的引擎缩小了对第三方服务的依赖,使得那些没有大数据平台或不违心依赖大数据平台进行数据同步的用户也能轻松应用 SeaTunnel。Zeta 引擎利用 Dynamic Thread Sharing 技术优化资源应用,提供数据同步工作的 Checkpoint 和容错机制,以及执行打算优化器以缩小网络传输,从而进步数据同步效率。SeaTunnel 的这一阶段重点在于反对全场景数据同步,包含离线批量同步、全量同步、增量同步、实时同步以及 CDC。
SeaTunnel 最新阶段。最近,SeaTunnel 进入了一个新的倒退阶段,这个阶段的指标是使得更宽泛的用户群体,包含数据分析师和数据科学家,也能从 SeaTunnel 高效、简略的数据集成性能中受害。为了实现这个指标,SeaTunnel 引入了可视化界面,让用户能更直观、更不便地实现异构数据的实时同步和集成,其指标曾经扩大到为工程师、数据分析师、数据科学家、AI 算法工程师等人群提供更高效、更简略的异构数据同步、实时同步集成性能。
从 Waterdrop 到 SeaTunnel,再到 Zeta 引擎的自主设计,再到当初的可视化界面交融,Apache SeaTunnel 的倒退历程凸显了其继续翻新,致力于升高大数据处理难度,并晋升数据处理效率的使命。将来,咱们期待 SeaTunnel 能在大数据畛域继续推动翻新,为更多用户提供优质的数据集成解决方案。
InfoQ:Apache SeaTunnel 经验过重构?那么改良了哪些性能,并如何保障稳定性的?
高俊:这里次要指的是对 Apache SeaTunnel 连接器的重构,连接器是负责将具体的上下游数据源进行买通,是数据集成的要害组成部分。退出 Apache 之前,Waterdrop 的定位是让 Flink 和 Spark 应用起来更简略,所以整个架构设计都是基于 Flink 和 Spark 之上。特地是连接器,根本是将 Spark 和 Flink 的连接器引入进来就行了,对于 Spark 和 Flink 没有的连接器,须要应用 Spark 和 Flink 的 API 别离开发一套代码,晚期批和流还是不同的 Flink API,意味着同一个数据源为了实现批同步和流同步,也须要开发两套代码。
代码的开发量和保护老本太高了。于是去年年初社区发动了重构连接器的探讨,指标是定义 SeaTunnel 本人的连接器 API,与具体的引擎解耦,不依赖具体的引擎 API,真正的实现批流一体,同一个数据源只须要一套代码就能够同时运行在 Spark 和 Flink 引擎上。
在探讨初期有不少人持拥护意见,认为 Flink 和 Spark 这些引擎很成熟,强依赖它们也没什么问题,有些贡献者感觉咱们应该放弃 Spark 全面依赖 Flink,在 Flink 的根底上把性能做好做欠缺。而且,重构连接器 API 意味着之前的 50 多个连接器的工作都徒劳了,所有要从零开始。但最终社区达成了共识,所有从 SeaTunnel 我的项目的定位登程,所以技术方向应该遵从我的项目的指标和定位。指标确立后,社区花了一个月设计新的连接器 API,而后用了 4、5 个月就曾经反对到了 100 多个连接器,速度之快是之前的架构不可能达到的,并真正实现了 SeaTunnel 反对多引擎和多引擎版本的能力。
当初,SeaTunnel 曾经反对了 Spark2、Spark3、Flink 1.14、Flink 1.15、Flink 1.16 等多个引擎和版本,同时也有了本人的专一于解决同步畛域问题的超高性能引擎 Zeta。
InfoQ:SeaTunnel CDC 与 Flink CDC、DataX 的次要区别是什么?咱们应该如何选型?
郭炜:SeaTunnel 是批量解决和 CDC 解决同时反对,它能够自动化地切换批和流的切换点,同时在引擎方面,它反对了 Flink CDC 不反对的 DDL 变更检测,第三方 Kafka 缓冲反对,多表专用一个工作等。相比 DataX,除了批量性能超过其 30% 之外,更是反对了实时 CDC 同步场景。当然,最大的差异还是在于 SeaTunnel CDC 是一个反对 100 多个数据源的同步工具,它反对非结构化到结构化的主动转化,不仅反对数据库,也反对 Kafka、SaaS API 等简单数据的实时抽取。更是有弱小的 SeaTunnel-Web 界面,让大家拖拖拽拽就能够建设同步工作,同时能够监控解决各种同步状况。总之,SeaTunnel 的指标就是让异构数据源简略、高效、精确地集成到用户指定的指标端去。
InfoQ:Snowflake、AWS 在 Zero-ETL 数据转换、流通和集成上有一些投入,您们如何对待这个技术方向?它会是将来吗?
郭炜:Zero-ETL 和 DataMesh 相似,指标都是尽量不挪动数据或者大量挪动数据的状况下来达到实现查问数据后果的指标。在一些场景下,例如,KV 查问和 OLAP 联结查问或者 OLTP+OLAP 联结查问有肯定劣势。然而,数据利用的场景非常复杂,否则就不会呈现几千种数据引擎来解决各种各样的事项,同时,数据集成不仅仅是数据库之间的数据集成,还包含 SaaS 到数据源,向量数据到 AI 引擎,各种各样新兴的场景会层出不穷,这些其实都是 DataMesh 和 Zero-ETL 无奈解决的场景。所以,从我的观点来看,DataMesh 和 Zero-ETL 能够解决用户 20% 左右的数据集成的场景问题,随着 AI 和 SaaS 的风行,更多的场景须要更业余的数据集成工具来解决。
Apache SeaTunnel 的开源故事
InfoQ:Apache SeaTunnel 是如何和开源结缘的?能具体说说其中的故事吗?
高俊:SeaTunnel 的诞生。Apache SeaTunnel 开始叫做 Waterdrop,次要致力于更简略在不同数据源上应用 Spark、Flink 解决数据,起初遇到了郭炜和白鲸开源的代立冬,咱们一眼看中了这个畛域有限的空间。此时,Apache Sqoop 曾经服役,Apache 基金会畛域当中也没有一款能够代替 Sqoop 解决大数据同步生态的我的项目,而在国内 DataX 也只能反对批量同步数据源,同时数据源反对也无限,而在海内有 FiveTran、Airbyte 这些爆火的我的项目,在业界确实十分须要一个能够高效、简略、精确买通各种数据源的开源我的项目。
于是,在 Apache 董事会成员姜宁、欧洲 PMC Jean-Baptiste Onofré、Apache 大佬 Ted Liu 等人的反对下,SeaTunnel 进入到了 Apache 孵化器,成为一个业余的,以高效数据集成、买通各个数据源的 Apache 孵化我的项目。
进入 Apache 孵化器之后,SeaTunnel 失去了疾速的倒退,Connector 数量也从过来的 20 个变成当初的 100 多个连接器,涵盖了大部分公司应用的数据源,不仅是国内的 B 站、头条、新浪,连美国 JP Morgan 的用户都被如此多、高效的数据连接器吸引应用,印度第二大运营商 Bharti Airtel 更是在生产环境中应用了 SeaTunnel。
SeaTunnel 的第一个挑战。不过此时 SeaTunnel 也遇到它的第一个挑战,那就是已经以 Spark、Flink 为外围引擎的时候,咱们在大数据同步场景里多处受挫,例如,无奈反对 CDC 场景下的表主动变更,同步几千个表的时候,Spark、Flink 要么都在一个工作里,任何一个表出问题,整个工作失败,要么就是一个表一个工作,资源和源数据库都受不了,SeaTunnel 用户在数据量大了之后苦不堪言。这时候,我提出一个想法,那就是建设 Apache SeaTunnel 本人的引擎——一个专门为数据同步集成而生的引擎。它不依赖于以计算为主的 Flink、Spark,能够自在地满足数据同步场景中的 Schema Evolution,谬误数据采集,数据限流等,还能够节约 Flink、Spark 为简单计算预留的内存、CPU slot,同时采纳相似 Apache Arrow 的内存技术,在保障全局一致性前提下,最大限度晋升数据传输效率。而且,社区小伙伴们给这个引擎起了一个很有想象力的名字,Zeta,它是宇宙里速度最快小行星的名字,意味着能够载着宇宙的数据疾速穿梭于星际之间。(起初发现也是泽塔奥特曼的英文名,我想既能够帮忙数据星际传输,如果遇到怪兽也能够打小怪兽吧 ^_^)。
从零开始间接写一个引擎谈何容易,一遍一遍的设计探讨,一遍一遍地颠覆原有设计,大略做了四到五版的设计和原型实现后,在 2022 年的 10 月份,第一个版本的 SeaTunnel Zeta 才公布了 Alpha 版。这个版本一经公布就技惊四座,不仅反对了 DataX 不反对的 CDC 场景,还在框架上反对 DDL 变更同步,性能更是好得出奇,比海内相似开源的产品要快 40 倍。SeaTunnel Zeta 的呈现一下子关上了 Apache SeaTunnel 的天花板,无论未来有几千上万的数据源连接器,都能够乘坐着 Zeta 小星星以光速 1/3 的速度漫游宇宙了~
SeaTunnel 的第二个挑战,开源和开源商业界线怎么分?这时候,Apache SeaTunnel 的 Committer 们各个颇有大将风范,剑锋所指各种数据源,数据源连接器数量一下增长了 5 倍,从 2022 年 1 月份 20 个数据源变为 2022 年 12 月的 104 个数据源。
然而问题又来了,用户纷纷埋怨,写类 SQL 的代码还是太麻烦,普通人用不了,能不能更简略地用界面应用 SeaTunnel?确实,让数据同步能力平民化就是 SeaTunnel 这个我的项目建设的初衷。此时,曾经退出白鲸开源的我跟白鲸开源的联结创始人代立冬磋商,能不能把基于 SeaTunnel 的商业版 WhaleTunnel 的界面奉献给 Apache 社区,让更多的人拥更简略的数据同步的能力。始终推崇开源文化的开源积极分子代立冬非常明确一个简略易用的界面对于解决用户问题有如许的重要,可是如果界面也开源了,那么白鲸开源这家商业公司未来支出靠什么呢?怎么能养活这些酷爱开源的人持续奉献开源呢?
我找到了白鲸开源商业合伙人,也是前 Informatica 中国区总经理李晨和经营合伙人聂励峰磋商这个事件,尽管大家酷爱开源,然而大家也要吃饭养家糊口啊 …… 这次探讨十分强烈,继续了一整天。最终李晨讲到,“白鲸开源”的基因就是开源,如果咱们为了商业订单,把能帮忙到大家疾速解决问题的外围性能闭源了,这样闭源和开源会对抗,那么白鲸开源和 Informatica、Fivetran 这些闭源软件公司有什么区别?咱们要走就走一条在中国继续开源的路,深信在更多的用户对于开源产品的打磨,肯定会让白鲸开源商业产品做的更好,而不是走一条闭源产品的路!
于是,在 2023 年一个春天的夜晚,几个人一致同意把商业 WhaleTunnel 的界面全副奉献到 SeaTunnel 当中,让更多的人具备更简略异构数据实时同步的能力。在前面 SeaTunnel 周例会上,我一颁布这个音讯,一下子好多用户都兴奋了,说咱们就等着 web 开源了,连忙做好,咱们马上上线!(代立冬、李晨、聂励峰周会听到这里,浅浅一笑,偷偷公开线,不留功与名——如果未来这几个人进去拿着碗“化缘”,也请大家多多反对啊,反对他们就是反对 SeaTunnel 这些原创的开源力量了)。
SeaTunnel 毕业啦!过五关、斩六将,在 Apache 基金会 7 位 Mentor 的辅导下,Apache SeaTunnel 社区共退出了 28 位 Commiter、18 位 PMC,也在社区的共同努力下公布了 8 个 Apache Releases。通过通明的开发过程和开源的代码治理,Apache SeaTunnel 我的项目在社区中取得了宽泛的参加。两头还克服了社区的建设和本土化、精力调配、团队合作和社区成长等重重困难和挑战,最终于 2023 年 6 月 1 日儿童节这一天,给所有社区的小儿童和大儿童们献上了儿童节的贺礼!
中国终于有了本人的开源数据同步集成的顶级我的项目啦!这是 SeaTunnel 的一大步,但只是中国开源的一小步,置信更多的优良开源我的项目在中国如春笋般呈现,中国的开源商业也能够反对中国开源的爱好者们更好地兼顾养家糊口和开源奉献!
InfoQ:SeaTunnel 毕业成为首个国人主导的数据集成畛域 Apache 基金会顶级我的项目,有什么教训能够分享?特地是在经营一个全球化的社区方面?
高俊:就像咱们退出一家新公司须要理解这家公司的文化一样,参加 Apache 开源我的项目之前,咱们也须要理解 ASF 的文化。ASF 文化就是 The Apache Way。
深刻进入开源就会发现,开源不只是开放源码这么简略的一件事,开源还关乎社区治理、社区沉闷、社区沟通交流、社区文化等,这就须要咱们对 Apache way 有更加粗浅的了解。
鉴于此前的教训,Apache SeaTunnel 在进入 Apache 孵化器初期就对 Apache Way 的重要性有着粗浅的了解,比方对于开源社区来说,Community Over Code 的理念要植根心中,为此也须要社区做出筹备和致力,尽可能升高每个有趣味参加我的项目人的门槛,甚至打造 0 门槛,比方制订社区激励打算,制作新手入门指南,精选 Good First Issue,重要 Feature 停顿跟踪,通过定期的用户访谈获取反馈和优化倡议,定期解答社区对于我的项目和社区的疑难等。
社区奉献不仅限于代码,非代码的奉献甚至有时会施展比代码更加有价值的作用,比方利用自身影响力为我的项目引发关注做奉献,写作我的项目相干技术和非技术文章,参加社区组织的各种流动、在各种机会和场合为 Apache SeaTunnel“代言”,把它举荐给更多的用户等,都是参加社区的渠道。
同时,Community Over Code 还强调凋谢、交换、单干,Apache SeaTunnel 秉持着这些理念,保持社区内与海内外社区放弃沟通,互相学习交换,保持与 Apache 社区建设沟通,所有探讨产生在邮件内,issue 中,并通过社区自媒体渠道颁布我的项目和社区的重大进展和打算,让社区放弃公开通明。
从进入孵化期至今,Apache SeaTunnel 先后与多个海内外开源我的项目举办线上线下 Meetup 20 余场,包含已先于 Apache SeaTunnel 顺利从 ASF 孵化器毕业的 Apache Shenyu、Apache InLong、Apache Linkis,Apache Doris、IoTDB、StarRocks、TDengine 等成熟开源我的项目,以及在美国、印度等海内地区与 Trino、APISIX、Shopee、ALC Indore 联结举办的 Meetup 等。社区之间的单干与交换推动开源技术的倒退和利用,Apache SeaTunnel 与其余开源我的项目单干,独特解决了技术难题,有利于晋升开源生态的整体程度,拓展了开源生态的边界。
Apache SeaTunnel 还积极参与国内外的技术大会和展览,展现开源我的项目和技术成绩,通过与业界专家和开发者的交换,扩充我的项目的影响力和知名度。
通过工夫的积攒,社区已有了质的变动。从社区的邮件探讨、GitHub 的数据展现中,你会发现 Apache SeaTunnel 的社区开始真正变得沉闷与多元化。
InfoQ:在开源上,Apache SeaTunnel 还有哪些将来布局?
高俊:次要是五个方面:
- SeaTunnel 将进一步提高 Zeta 引擎的性能和稳定性,并将过来布局的 DDL 变更,谬误数据处理,流速管制、多表同步等落地实现。
- SeaTunnel-Web 也将从 Alpha 状态进入 Release 状态,让大家能够间接从界面来定义、管制整个同步流程。
- 增强 AGI 组件配合关系,除了能够应用 ChatGPT 主动生成 Connector 之外,增强向量数据库,大模型 插件的买通,让现有 100 多种数据源无缝对接大模型。
- 欠缺和上下游生态的关系,与 Apache DolphinScheduler、Apache Airflow 等 Apache 生态的整合和互联互通。
-
在 Google Sheet、飞书、腾讯文档反对之后,增强 SaaS Connector 的结构,例如 ChatGPT、Salesforce、Workday 等。
本文由 白鲸开源科技 提供公布反对!