Apache SeaTunnel详解与部署(最新版本2.3.8)

目录

一、概述

1.1、软件介绍

1.2、解决问题​

1.3、软件特性​

1.4、使用用户

1.5、产品对比

二、架构

2.1、运行流程

2.2、连接器​

2.3、引擎

2.3.1、设计理念

2.3.2、集群管理​

2.3.3、核心功能​

2.3.4、引擎对比

三、软件部署 

3.1、Docker部署

3.1.1、拉取镜像

3.1.2、任务提交

 3.2、发布包部署

 3.2.1、Apache SeaTunnel部署与使用

3.2.1.1、软件解压

3.2.1.2、安装插件

3.2.1.2.1 更换maven地址 

3.2.1.2.2 减少插件下载

3.2.1.3、测试

3.2.1.4、启动服务

3.2.2、 SeaTunnel-Web部署与使用

3.2.2.1、下载解压

3.2.2.2、 安装运行

3.2.2.3、浏览器验证

一、概述

1.1、软件介绍

SeaTunnel是一个非常易用、超高性能的分布式数据集成平台,支持实时海量数据同步。 每天可稳定高效同步数百亿数据,已被近百家企业应用于生产。

Apache SeaTunnel是中国开发者主导的项目,也是Apache基金会中第一个诞生自中国的数据集成平台项目。

SeaTunnel原名Waterdrop,于2017年由乐视创建,并于同年在GitHub上开源
2021年10月改名为SeaTunnel
2021年12月9日SeaTunnel进入Apache孵化
2023年6月1日Apache SeaTunnel 毕业成为 Apache 顶级项目

Seatunnel的中文是"水滴",来自中国当代科幻小说作家刘慈欣的《三体》系列,它是三体人制造的宇宙探测器,会反射几乎全部的电磁波,表面绝对光滑,温度处于绝对零度,全部由被强互作用力紧密锁死的质子与中子构成,无坚不摧。在末日之战中,仅一个水滴就摧毁了人类太空武装力量近2千艘战舰

官网地址:

Apache SeaTunnel | Apache SeaTunnel

1.2、解决问题

SeaTunnel专注于数据集成和数据同步,主要旨在解决数据集成领域的常见问题:

  • 数据源多样:常用数据源有数百种,版本不兼容。 随着新技术的出现,更多的数据源不断出现。 用户很难找到一个能够全面、快速支持这些数据源的工具。
  • 同步场景复杂:数据同步需要支持离线全量同步、离线增量同步、CDC、实时同步、全库同步等多种同步场景。
  • 资源需求高:现有的数据集成和数据同步工具往往需要大量的计算资源或JDBC连接资源来完成海量小表的实时同步。 这增加了企业的负担。
  • 缺乏质量和监控:数据集成和同步过程经常会出现数据丢失或重复的情况。 同步过程缺乏监控,无法直观了解任务过程中数据的真实情况。
  • 技术栈复杂:企业使用的技术组件不同,用户需要针对不同组件开发相应的同步程序来完成数据集成。
  • 管理和维护困难:受限于底层技术组件(Flink/Spark)不同,离线同步和实时同步往往需要分开开发和管理,增加了管理和维护的难度。

1.3、软件特性

  • 丰富且可扩展的Connector:SeaTunnel提供了不依赖于特定执行引擎的Connector API。 基于该API开发的Connector(Source、Transform、Sink)可以运行在很多不同的引擎上,例如目前支持的SeaTunnel引擎(Zeta)、Flink、Spark等。
  • Connector插件:插件式设计让用户可以轻松开发自己的Connector并将其集成到SeaTunnel项目中。 目前,SeaTunnel 支持超过 100 个连接器,并且数量正在激增。
  • 批流集成:基于SeaTunnel Connector API开发的Connector完美兼容离线同步、实时同步、全量同步、增量同步等场景。 它们大大降低了管理数据集成任务的难度。
  • 支持分布式快照算法,保证数据一致性。
  • 多引擎支持:SeaTunnel默认使用SeaTunnel引擎(Zeta)进行数据同步。 SeaTunnel还支持使用Flink或Spark作为Connector的执行引擎,以适应企业现有的技术组件。 SeaTunnel 支持 Spark 和 Flink 的多个版本。
  • JDBC复用、数据库日志多表解析:SeaTunnel支持多表或全库同步,解决了过度JDBC连接的问题; 支持多表或全库日志读取解析,解决了CDC多表同步场景下需要处理日志重复读取解析的问题。
  • 高吞吐量、低延迟:SeaTunnel支持并行读写,提供稳定可靠、高吞吐量、低延迟的数据同步能力。
  • 完善的实时监控:SeaTunnel支持数据同步过程中每一步的详细监控信息,让用户轻松了解同步任务读写的数据数量、数据大小、QPS等信息。
  • 支持两种作业开发方法:编码和画布设计。 SeaTunnel Web 项目 GitHub - apache/seatunnel-web: SeaTunnel is a distributed, high-performance data integration platform for the synchronization and transformation of massive data (offline & real-time). 提供作业、调度、运行和监控功能的可视化管理。

1.4、使用用户

SeaTunnel 拥有大量用户

1.5、产品对比

对比项Apache SeaTunnelDataXApache SqoopApache FlumeFlink CDC
部署难度容易容易中等,依赖于 Hadoop 生态系统容易中等,依赖于 Hadoop 生态系统
运行模式分布式,也支持单机单机本身不是分布式框架,依赖 Hadoop MR 实现分布式分布式,也支持单机分布式,也支持单机
健壮的容错机制无中心化的高可用架构设计,有完善的容错机制易受比如网络闪断、数据源不稳定等因素影响MR 模式重,出错处理麻烦有一定的容错机制主从模式的架构设计,容错粒度比较粗,容易造成延时
支持的数据源丰富度支持 MySQL、PostgreSQL、Oracle、SQLServer、Hive、S3、RedShift、HBase、Clickhouse等过 100 种数据源支持 MySQL、ODPS、PostgreSQL、Oracle、Hive 等 20+ 种数据源仅支持 MySQL、Oracle、DB2、Hive、HBase、S3 等几种数据源支持 Kafka、File、HTTP、Avro、HDFS、Hive、HBase等几种数据源支持 MySQL、PostgresSQL、MongoDB、SQLServer 等 10+ 种数据源
内存资源占用中等
数据库连接占用少(可以共享 JDBC 连接)多(每个表需一个连接)
自动建表支持不支持不支持不支持不支持
整库同步支持不支持不支持不支持不支持(每个表需配置一次)
断点续传支持不支持不支持不支持支持
多引擎支持支持 SeaTunnel Zeta、Flink、Spark 3 个引擎选其一作为运行时只能运行在 DataX 自己引擎上自身无引擎,需运行在 Hadoop MR 上,任务启动速度非常慢支持 Flume 自身引擎只能运行在 Flink 上
数据转换算子(Transform)支持 Copy、Filter、Replace、Split、SQL 、自定义 UDF 等算子支持补全,过滤等算子,可以 groovy 自定义算子只有列映射、数据类型转换和数据过滤基本算子只支持 Interceptor 方式简单转换操作支持 Filter、Null、SQL、自定义 UDF 等算子
单机性能比 DataX 高 40%  - 80%较好一般一般较好
离线同步支持支持支持支持支持
增量同步支持支持支持支持支持
实时同步支持不支持不支持支持支持
CDC同步支持不支持不支持不支持支持
批流一体支持不支持不支持不支持支持
精确一致性MySQL、Kafka、Hive、HDFS、File 等连接器支持不支持不支持不支持精确,提供一定程度的一致性MySQL、PostgreSQL、Kakfa 等连接器支持
可扩展性插件机制非常易扩展易扩展扩展性有限,Sqoop主要用于将数据在Apache Hadoop和关系型数据库之间传输易扩展易扩展
统计信息
Web UI正在实现中(拖拉拽即可完成)
与调度系统集成度已经与 DolphinScheduler 集成,后续也会支持其他调度系统不支持不支持不支持
社区非常活跃非常不活跃已经从 Apache 退役非常不活跃非常活跃

二、架构

2.1、运行流程

SeaTunnel的运行流程如上图所示。

用户配置作业信息并选择提交作业的执行引擎。

Source Connector负责并行读取数据并将数据发送到下游Transform或直接发送到Sink,Sink将数据写入目的地。 值得注意的是,Source、Transform 和 Sink 可以很容易地自行开发和扩展。

SeaTunnel 是一个 EL(T) 数据集成平台。 因此,在SeaTunnel中,Transform只能用于对数据进行一些简单的转换,例如将一列的数据转换为大写或小写,更改列名,或者将一列拆分为多列。

SeaTunnel 使用的默认引擎是 SeaTunnel Engine。 如果您选择使用Flink或Spark引擎,SeaTunnel会将Connector打包成Flink或Spark程序并提交给Flink或Spark运行。

2.2、连接器

  • 源连接器 SeaTunnel 支持从各种关系、图形、NoSQL、文档和内存数据库读取数据; 分布式文件系统,例如HDFS; 以及各种云存储解决方案,例如S3和OSS。 我们还支持很多常见SaaS服务的数据读取。 您可以在[此处] 访问详细列表。 如果您愿意,您可以开发自己的源连接器并将其轻松集成到 SeaTunnel 中。

  • 转换连接器 如果源和接收器之间的架构不同,您可以使用转换连接器更改从源读取的架构,使其与接收器架构相同。

  • Sink Connector SeaTunnel 支持将数据写入各种关系型、图形、NoSQL、文档和内存数据库; 分布式文件系统,例如HDFS; 以及各种云存储解决方案,例如S3和OSS。 我们还支持将数据写入许多常见的 SaaS 服务。 您可以在[此处]访问详细列表。 如果您愿意,您可以开发自己的 Sink 连接器并轻松将其集成到 SeaTunnel 中。

2.3、引擎

2.3.1、设计理念

SeaTunnel Engine 是一个由社区开发的用于数据同步场景的引擎,作为 SeaTunnel 的默认引擎,它支持高吞吐量、低延迟和强一致性的数据同步作业操作,更快、更稳定、更节省资源且易于使用。

SeaTunnel Engine 的整体设计遵循以下路径:

  • 更快,SeaTunnel Engine 的执行计划优化器旨在减少数据网络传输,从而减少由于数据序列化和反序列化造成的整体同步性能损失,使用户能够更快地完成数据同步操作。同时,支持速度限制,以合理速度同步数据。
  • 更稳定,SeaTunnel Engine 使用 Pipeline 作为数据同步任务的最小粒度的检查点和容错。任务的失败只会影响其上游和下游任务,避免了任务失败导致整个作业失败或回滚的情况。同时,SeaTunnel Engine 还支持数据缓存,用于源数据有存储时间限制的场景。当启用缓存时,从源读取的数据将自动缓存,然后由下游任务读取并写入目标。在这种情况下,即使由于目标失败而无法写入数据,也不会影响源的常规读取,防止源数据过期被删除。
  • 节省空间,SeaTunnel Engine 内部使用动态线程共享技术。在实时同步场景中,对于每个表数据量很大但每个表数据量很小的表,SeaTunnel Engine 将在共享线程中运行这些同步任务,以减少不必要的线程创建并节省系统空间。在读取和写入数据方面,SeaTunnel Engine 的设计目标是最小化 JDBC 连接的数量;在 CDC 场景中,SeaTunnel Engine 将重用日志读取和解析资源。
  • 简单易用,SeaTunnel Engine 减少了对第三方服务的依赖,并且可以独立于如 Zookeeper 和 HDFS 等大数据组件实现集群管理、快照存储和集群 HA 功能。这对于目前缺乏大数据平台的用户,或者不愿意依赖大数据平台进行数据同步的用户来说非常有用。

未来,SeaTunnel Engine 将进一步优化其功能,以支持离线批同步的全量同步和增量同步、实时同步和 CDC。

2.3.2、集群管理

  • 支持独立运行;
  • 支持集群运行;
  • 支持自治集群(去中心化),使用户无需为 SeaTunnel Engine 集群指定主节点,因为它可以在运行过程中自行选择主节点,并且在主节点失败时自动选择新的主节点;
  • 自治集群节点发现和具有相同 cluster_name 的节点将自动形成集群。

2.3.3、核心功能

  • 支持在本地模式下运行作业,作业完成后集群自动销毁;
  • 支持在集群模式下运行作业(单机或集群),通过 SeaTunnel 客户端将作业提交给 SeaTunnel Engine 服务,作业完成后服务继续运行并等待下一个作业提交;
  • 支持离线批同步;
  • 支持实时同步;
  • 批流一体,所有 SeaTunnel V2 Connector 均可在 SeaTunnel Engine 中运行;
  • 支持分布式快照算法,并支持与 SeaTunnel V2 Connector 的两阶段提交,确保数据只执行一次。
  • 支持在 Pipeline 级别调用作业,以确保即使在资源有限的情况下也能启动;
  • 支持在 Pipeline 级别对作业进行容错。任务失败只影响其所在 Pipeline,只需要回滚 Pipeline 下的任务;
  • 支持动态线程共享,以实时同步大量小数据集。

2.3.4、引擎对比

Apache SeaTunne默认使用的是自研的SeaTunne Zeta引擎,还支持Spark、Flink计算引擎

三、软件部署 

3.1、Docker部署

3.1.1、拉取镜像

docker pull apache/seatunnel:2.3.8

3.1.2、任务提交

# Run fake source to console sink
docker run --rm -it apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c config/v2.batch.config.template

# Run job with custom config file
docker run --rm -it -v /<The-Config-Directory-To-Mount>/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c /config/fake_to_console.conf

# Example
# If you config file is in /tmp/job/fake_to_console.conf
docker run --rm -it -v /tmp/job/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -m local -c /config/fake_to_console.conf

# Set JVM options when running
docker run --rm -it -v /tmp/job/:/config apache/seatunnel:<version_tag> ./bin/seatunnel.sh -DJvmOption="-Xms4G -Xmx4G" -m local -c /config/fake_to_console.conf

 3.2、发布包部署

下载地址:

https://seatunnel.incubator.apache.org/download

上面下载太慢,可以使用国内镜像

apache-seatunnel-2.3.8安装包下载_开源镜像站-阿里云

部署参考:https://seatunnel.incubator.apache.org/zh-CN/docs/2.3.8/start-v2/locally/deployment 

 3.2.1、Apache SeaTunnel部署与使用

3.2.1.1、软件解压
cd /usr/local/soft/
tar -zxvf apache-linkis-1.6.0-bin.tar.gz
3.2.1.2、安装插件

安装插件前需要进行Maven镜像地址更换与一些不用的插件不需要下载

cd /usr/local/soft/apache-seatunnel-2.3.8/
sh bin/install-plugin.sh
3.2.1.2.1 更换maven地址 

整个过程非常慢…从国外maven中央仓库下载东西,可以使用maven的阿里云镜像

setting文件地址:/root/.m2/wrapper/dists/apache-maven-3.8.4-bin/52ccbt68d252mdldqsfsn03jlf/apache-maven-3.8.4/conf/

 换成阿里云镜像

<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror> 
    <id>aliyun-maven</id>
    <mirrorOf>*</mirrorOf> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

 

更换后再下载速度很快

3.2.1.2.2 减少插件下载

默认插件全部下载,如果自己用不到,可以注释掉,因为即便下载了也不用,占用空间,如果下载有需要可以再下载,配置地址如下:/usr/local/soft/apache-seatunnel-2.3.8/config/plugin_config

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# This mapping is used to resolve the Jar package name without version (or call artifactId)
#
# corresponding to the module in the user Config, helping SeaTunnel to load the correct Jar package.
# Don't modify the delimiter " -- ", just select the plugin you need
--connectors-v2--
#connector-amazondynamodb
connector-assert
#connector-cassandra
connector-cdc-mysql
connector-cdc-mongodb
#connector-cdc-sqlserver
connector-cdc-postgres
#connector-cdc-oracle
#connector-cdc-tidb
connector-clickhouse
connector-datahub
connector-dingtalk
#connector-doris
connector-elasticsearch
connector-email
connector-file-ftp
connector-file-hadoop
connector-file-local
connector-file-oss
connector-file-jindo-oss
#connector-file-s3
connector-file-sftp
connector-file-obs
#connector-google-sheets
#connector-google-firestore
connector-hive
connector-http-base
connector-http-feishu
connector-http-gitlab
connector-http-github
connector-http-jira
connector-http-klaviyo
connector-http-lemlist
connector-http-myhours
connector-http-notion
connector-http-onesignal
connector-http-wechat
connector-hudi
connector-iceberg
connector-influxdb
connector-iotdb
connector-jdbc
connector-kafka
connector-kudu
#connector-maxcompute
connector-mongodb
connector-neo4j
#connector-openmldb
#connector-pulsar
connector-rabbitmq
connector-redis
connector-druid
#connector-s3-redshift
#connector-sentry
#connector-slack
connector-socket
#connector-starrocks
#connector-tablestore
#connector-selectdb-cloud
connector-hbase
#connector-amazonsqs
#connector-easysearch
#connector-paimon
#connector-rocketmq
#connector-tdengine
connector-web3j
#connector-milvus
#connector-activemq
#connector-sls
#connector-qdrant
#connector-typesense
#connector-cdc-opengauss

连接器下载到/usr/local/soft/apache-seatunnel-2.3.8/connectors/,可以单独保存,以后安装就不用再下载

上述内容也可以直接上传,地址如下
链接: https://pan.baidu.com/s/1Q4lTMtiBWlP5-3epmCC6jw?pwd=ejkx 提取码: ejkx 

3.2.1.3、测试
cd /usr/local/soft/apache-seatunnel-2.3.8/
./bin/seatunnel.sh --config ./config/v2.batch.config.template -m local

3.2.1.4、启动服务

用于web端连接

cd /usr/local/soft/apache-seatunnel-2.3.8/bin/
nohup sh seatunnel-cluster.sh 2>&1 &

3.2.2、 SeaTunnel-Web部署与使用

3.2.2.1、下载解压
cd /usr/local/soft/
mkdir apache-seatunnel-2.3.8-web
tar -zxvf apache-linkis-1.6.0-web-bin.tar.gz -C apache-seatunnel-2.3.8-web

3.2.2.2、 安装运行
cd /usr/local/soft/apache-seatunnel-2.3.8-web/
sh install.sh

3.2.2.3、浏览器验证

浏览器输入:http://node11:8088/ 

其它参考:

Apache Seatunnel部署(apache-seatunnel-2.3.3-bin.tar.gz + apache-seatunnel-web-1.0.0-bin.tar.gz)_com.hazelcast.internal.diagnostics.healthmonitor-优快云博客

部署SeaTunnel单节点Standalone 模式环境_seatunnel linux完整部署步骤-优快云博客

SeaTunnel 与 DataX 、Sqoop、Flume、Flink CDC 对比 - 墨天轮

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

源图客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值