# Apache SeaTunnel 究竟是什么?
作者 | 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团队提供了一个很好的快速入门指南,帮助用户可以轻松地自行尝试,看看它是否能解决你的问题吧!
本文由 白鲸开源 提供发布支持!
# Apache SeaTunnel 究竟是什么?的更多相关文章
- 陈胡:Apache SeaTunnel实现 非CDC数据抽取实践
导读: 随着全球数据量的不断增长,越来越多的业务需要支撑高并发.高可用.可扩展.以及海量的数据存储,在这种情况下,适应各种场景的数据存储技术也不断的产生和发展.与此同时,各种数据库之间的同步与转化的需 ...
- Apache SeaTunnel (Incubating) 2.1.0 发布,内核重构、全面支持 Flink
2021 年 12 月 9 日,SeaTunnel (原名 Waterdrop) 成功加入 Apache 孵化器,进入孵化器后,SeaTunnel 社区花费了大量时间来梳理整个项目的外部依赖以确保整个 ...
- 中国联通改造 Apache DolphinScheduler 资源中心,实现计费环境跨集群调用与数据脚本一站式访问
截止2022年,中国联通用户规模达到4.6亿,占据了全中国人口的30%,随着5G的推广普及,运营商IT系统普遍面临着海量用户.海量话单.多样化业务.组网模式等一系列变革的冲击. 当前,联通每天处理话单 ...
- 倒计时0日!Apache DolphineScheduler4月 Meetup 大佬手把手教你大数据开发,离线调度
随着互联网技术和信息技术的发展,信息的数据化产生了许多无法用常规工具量化.处理和捕捉的数字信息.面对多元的数据类型,海量的信息价值,如何有效地对大数据进行挖掘分析,对大数据工作流进行调度,是保障企业大 ...
- Apache DolphinScheduler ASF 孵化器毕业一周年,汇报来了!
不知不觉,Apache DolphinScheduler 已经从 Apache 软件基金会(以下简称 ASF)孵化器毕业一年啦! 北京时间 2021 年 4 月 9 日,ASF 官方宣布 Apache ...
- 恭喜社区喜提三枚新 Committer!
点击上方 蓝字关注我们 ✎ 编 者 按 Apache DolphinScheduler 社区最近又迎来三位新的 Committer,凭借对社区的高质量贡献,社区很荣幸地邀请他们加入 Committer ...
- 修改代码150万行!与 Blink 合并后的 Apache Flink 1.9.0 究竟有哪些重大变更?
8月22日,Apache Flink 1.9.0 正式发布,早在今年1月,阿里便宣布将内部过去几年打磨的大数据处理引擎Blink进行开源并向 Apache Flink 贡献代码.当前 Flink 1. ...
- 避免用Apache Beanutils进行属性的copy。why?让我们一起一探究竟
在实际的项目开发中,对象间赋值普遍存在,随着双十一.秒杀等电商过程愈加复杂,数据量也在不断攀升,效率问题,浮出水面. 问:如果是你来写对象间赋值的代码,你会怎么做? 答:想都不用想,直接代码走起来,g ...
- Apache Spark源码剖析
Apache Spark源码剖析(全面系统介绍Spark源码,提供分析源码的实用技巧和合理的阅读顺序,充分了解Spark的设计思想和运行机理) 许鹏 著 ISBN 978-7-121-25420- ...
- apache无法正常启动,80端口被占用的解决方法
apache无法正常启动,80端口被占用的解决方法 网上的方法: 仔细查看提示: make_sock: could not bind to address 0.0.0.0:80 恍然大悟,计算机上安装 ...
随机推荐
- 抖音验证签名和接口含中文签名,需要在发送端加上utf8编码
抖音验证签名和接口含中文签名,需要在发送端加上utf8编码 抖音验签和抖音异步通知回调验签解决:是对整个接收的字符串做验签,而不是部分数据做验签解决中文参数问题,否则中文乱码报验签错误 签名算法htt ...
- 如果redis没有设置expire,他是否默认永不过期
如果redis没有设置expire,他是否默认永不过期?默认是的 通过EXPIRE key seconds 命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间 ...
- ThreadLocal本地局部线程demo
ThreadLocal本地局部线程demo import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Hash ...
- uniapp 开发微信小程序 使用微信小程序一键登录
研究了一天的uniapp开发微信小程序的第一步,登录! 刚开始使用uni.getUserInfo函数No!不行,无法运行,研究文档发现是这个函数被微信小程序团队给禁用了,OK换! 后来换成了uni.g ...
- 有点儿神奇,原来vue3的setup语法糖中组件无需注册因为这个
前言 众所周知,在vue2的时候使用一个vue组件要么全局注册,要么局部注册.但是在setup语法糖中直接将组件import导入无需注册就可以使用,你知道这是为什么呢?注:本文中使用的vue版本为3. ...
- 基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建镜像加速服务
本文主要介绍了如何基于 Cloudflare Workers 和 cloudflare-docker-proxy 搭建 dockerhub.gcr.quay 等镜像加速服务. 最近,受限于各种情况,部 ...
- 随机森林R语言预测工具
随机森林(Random Forest)是一种基于决策树的集成学习方法,它通过构建多个决策树并集成它们的预测结果来提高预测的准确性.在R语言中,我们可以使用randomForest包来构建和训练随机森林 ...
- mysql判断两个字符串(以逗号分隔)是否存在交集
转载:https://blog.csdn.net/username666/article/details/107815331?utm_medium=distribute.pc_relevant.non ...
- AI Agent技术的最新进展与改变世界的典型项目巡礼
AI Agent技术的最新进展与改变世界的典型项目巡礼 1. AI Agent 技术发展以及典型项目 1.0 前 AI Agent 时代 在学术探索的浩瀚星空中,机器人技术领域的璀璨明珠莫过于Agen ...
- Linux常用指令及shell脚本记录
记录一些常用指令在博客上,以防哪天因太久不敲而忘却,还可以直接翻看博客记录,不用再一条条百度搜...... 一.Linux常用指令 一.设置文件权限为aapp用户及用户组-- chown -R app ...