作者 | Shawn Gordon
翻译 | Debra Chen
原文链接 | What the Heck is Apache SeaTunnel?
我在2023年初开端注意到Apache SeaTunnel的相关讨论,一向低调地关注着。该项目始于2017年,开端名为Waterdrop,在Apache DolphinScheduler的创立者的贡献下发展起来,后者支撑SeaTunnel作为使命插件。
我开端关于SeaTunnel是什么以及为什么我会关怀它感到困惑。这意味着我将在至少能答复我的这些问题的层面上,对Apache SeaTunnel有一个深度的介绍。那么,让我们开端吧。
什么是SeaTunnel?
Apache SeaTunnel的项目介绍是“一个高性能的、分布式的、大规模数据集成工具,供给了异构数据集成和数据同步的一体化处理方案。”它包含三个主要组件:
- 源连接器
- 转化连接器
- 方针连接器
许多源连接器(Connector)可供挑选;在版别2.3.3中,可用的连接器如链接所示。它支撑包含关系型、NoSQL和图形等格局,以及分布式文件体系(如HDFS)和方针存储(如S3)等。
假如源和方针之间的格局不同,则转化连接器(Transform Tonnector)会发挥作用,实质上它便是对数据进行映射。
方针连接器(Sink)是源的另一侧,但现在你是在写入数据而不是读取。截至本文编撰时,SeaTunnel声明已支撑超过100个连接器。
有了这些组件,SeaTunnel能够处理数据集成和同步中常见的问题。因而,它供给了实时和批处理数据的高性能数据同步。文章称它能够“实时同步数十亿数据量”。尽管我不确定是什么意思,但考虑到像阿里巴巴这样的公司在运用它,它的速度或许非常快。
SeaTunnel的特性
我对体系中的连接器API功能印象深刻。正如前面所述,Apache SeaTunnel已有超过100个预先构建的连接器,但假如需求其他连接器,你能够创立自己的连接器。这些连接器不与特定的履行引擎绑定,而能够运用Flink、Spark或本地的SeaTunnel引擎。连接器的插件架构让我想起了Trino的生态体系。
数据能够以批处理或实时方法同步,并供给了各种同步选项。SeaTunnel一个很棒的特性是它能够与JDBC已配合工作,支撑多表或整个数据库的同步。这就处理了CDC多表同步方案的需求。
SeaTunnel的运行时流程如下所示:
- 配置作业信息并挑选履行引擎。
- 源连接器并行读取数据,并将其传递到转化器、方针连接器或直接传递到方针。
请记住,SeaTunnel是一个EL(T)集成平台,因而它只能自行进行根本的数据转化:
- 更改列中的数据大小写
- 更改列名
- 将一列拆分为多列
SeaTunnel job
SeaTunnel job,或配置文件或许由四个部分组成:env、source、transform和sink。假如不履行转化,则能够忽略transform部分。配置文件能够选用hocon或json格局编写。从SeaTunnel文档中借鉴,以下是hocon格局的简单示例:
Copy code
env {
job.mode = "BATCH"
}
source {
FakeSource {
result_table_name = "fake"
row.num = 100
schema = {
fields {
name = "string"
age = "int"
card = "int"
}
}
}
}
transform {
Filter {
source_table_name = "fake"
result_table_name = "fake1"
fields = [name, card]
}
}
sink {
Clickhouse {
host = "clickhouse:8123"
database = "default"
table = "seatunnel_console"
fields = ["name", "card"]
username = "default"
password = ""
source_table_name = "fake1"
}
}
尽管格局非常易于阅览和了解,但我能够看出,关于大型表格,它或许会变得相当复杂。我要在此谈论一下,就像许多开源项目一样,SeaTunnel的文档相当缺乏,但据我观察的时刻,该项目似乎有一个相当活跃的Slack频道。
SeaTunnel运用要求
它是一个Java体系,支撑Java 8或Java 11版别,但应该与较旧的体系兼容。假如你已经装置了Java,则只需从其网站获取所需的插件(或编写自己的插件),并在配置文件中进行设置。之后,依照上文所述创立用于办理作业的配置文件。只需你有访问源和方针数据存储库的凭证,控制台就会供给反馈信息。
Apache SeaTunnel还供给了Web界面,供那些想要替代CLI的用户挑选。这将是我个人运用这个体系的首选方法,因为它的可视性更好,但装置和运用也需求更多的过程。
总结
SeaTunnel明显适用于某些场景,就我目前所看到的状况而言,在处理各种数据源和方针的大量数据时,它才会发挥作用。我完全能够预见,SeaTunnel还将在很多场景中让工作变得更简单,所以我会把这个项目放在我的工具箱里。SeaTunnel团队供给了一个很好的快速入门攻略,帮助用户能够轻松地自行尝试,看看它是否能处理你的问题吧!
本文由 白鲸开源科技 供给发布支撑!