Apache SeaTunnel 及 Web 功能部署指南 (小白版)

在大数据处理领域,Apache SeaTunnel 已成为一款备受青睐的开源数据集成平台,它不仅可以基于 Apache Spark 和 Flink,而且还有社区单独开发专属数据集成的 Zeta 引擎,提供了强大的数据处理能力。随着 SeaTunnel Web 的推出,用户界面 (UI) 操作变得更加友好,项目部署和管理更加便捷。

在大数据处理领域,Apache SeaTunnel 已成为一款备受青睐的开源数据集成平台,它不仅可以基于 Apache Spark 和 Flink,而且还有社区单独开发专属数据集成的 Zeta 引擎,提供了强大的数据处理能力。随着 SeaTunnel Web 的推出,用户界面 (UI) 操作变得更加友好,项目部署和管理更加便捷。

17092583440869a23489b985a6d2cc811a2754ebbade9

本指南旨在提供一个简明扼要的步骤,帮助用户成功部署 SeaTunnel 及其 Web 界面。小主已经把可能遇到的坑都填过了,希望大家都能安安稳稳上路,不掉坑,话不多说,走起~

1. 预置环境

1.1. 所需软件包及版本要求

  • CentOS 7.6.18_x86_64

  • JDK >= 1.8.151

  • Maven >= 3.6.3

  • Apache Seatunnel ==2.3.3

  • Apache Seatunnel Web == 1.0.0

  • MySQL >= 5.7.28

17092587861608988904cf7c6c373079dbe2d2802ba3f

1.2. 下载地址

官网下载入口: 下载入口

apache-seatunnel-2.3.3: apache-seatunnel-2.3.3-bin.tar.gz

1709258786222582c18da374b7d19422f4f45bb0557c7

apache-seatunnel-web-1.0.0: apache-seatunnel-web-1.0.0

1709258786246c75f4af4b084d7e38e2d3fe8aa17a670

1.3. 准备工作

1.3.1. 安装 JDK

安装及配置系统环境变量略过,自行百度

1.3.2. 安装 Maven

安装及配置系统环境变量、配置阿里云仓库镜像,略过,自行百度

1.3.3. 创建安装软件目录

创建 SeaTunnel 后端服务安装目录

mkdir -p /opt/bigdata/seatunnel-2.3.3/backend

创建 SeaTunnel 前端服务安装目录

mkdir -p /opt/bigdata/seatunnel-2.3.3/web
17092587862562458eece87c441767647c846afd5584f

1.3.4. 下载或者本地上传安装包

下载 apache-seatunnel-2.3.3-bin.tar.gz

#进入 1.3.2 中创建好的安装目录

cd /opt/bigdata/seatunnel-2.3.3/backend

#下载安装包

wget https://dlcdn.apache.org/seatunnel/2.3.3/apache-seatunnel-2.3.3-bin.tar.gz

下载 [apache-seatunnel-web-1.0.0.tar.gz

#进入 1.3.2 中创建好的安装目录

cd /opt/bigdata/seatunnel-2.3.3/web

#下载安装包

wget https://dlcdn.apache.org/seatunnel/seatunnel-web/1.0.0/apache-seatunnel-web-1.0.0-bin.tar.gz

如果你已经将安装包下载到本地, 可通过 FTP 工具上传安装包到前后端各自的安装目录。

2. 安装 Apache Seatunnel

2.1. 解压安装包

#解压后端安装包

tar -zxf /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3-bin.tar.gz

#重命名安装包

mv apache-seatunnel-2.3.3-bin apache-seatunnel-2.3.3
17092587862386562596cf6a4cf806f67ef162cb42808

#解压前端安装包

tar -zxf /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0-bin.tar.gz

#重命名安装包

mv apache-seatunnel-web-1.0.0-bin apache-seatunnel-web-1.0.0
1709258786241ae883d3d90c9ca7289449b9aeb63dee7

2.2. 配置环境变量

在 /etc/profile 中配置环境变量
170925878711415dcf9d0c3a86eaf5c2ba4832a4a3e66

 让修改配置立即生效

source /etc/profile

2.3. 下载 JAR 包

2.3.1. 创建目录

mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/flink

mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/flink-sql

mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/spark

mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/seatunnel

17092587871156cb2233ac665537b1f97453eebe96b3f

2.3.2. 修改下载脚本

下载脚本的位置

/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/bin
17092587871586f7fc890aca28aff57b05e10115237d2

修改 install-plugin.sh 之前请先备份

mvn 加速下载 seatunnel 相关 jar 包

安装 seatunnel 过程中,解压文件后官方默认提供的 connector 的 jar 包只有 2 个,要想连接 mysql,oracle,SqlServer,hive,kafka,clickhouse,doris 等时,还需下载对应的 jar 包。

1709258787190ae2915cf83a541fbc9535ece2f7c47bd

使用本地 Maven 加速下载 connector 相关 jar 包

seatunnel 下载 connector 的 jar 时,使用 mvnw 来下载 jar 包,默认是从 https://repo.maven.apache.org 下载,速度及其缓慢。我们可以改成自己在 linux 系统上安装的 mvn,配置阿里云远程仓库地址,从阿里云 mvn 源下载会快很多, 下面教大家如何进行修改。

修改其安装插件相关脚本,复制 bin 目录下 install-plugin.sh 重命名为 install-plugin.sh.bak

1709258787184050c71907785f35c20c91b6e64a643dd

替换脚本中的 ${SEATUNNEL_HOME}/mvnw 为 mvn,即可使用本地 mvn,配合阿里云的 mvn 源,可加速下载。

1709258787185bbf01d2f16fd5f60ff07c680f60905f7

2.3.3. 执行下载

自动下载

执行命令即可,一般不推荐,因为从官网下载速度太慢,可以通过修改相关的代码进行手动加速下载。

系统默认自动下载时会下载所有的连接器 JAR, 如果暂时不需要使用, 可以在执行下载脚本执行之前先在 /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/config/pulgun_config 配置中注释掉不需要的连接器
17092587880713a8d46c94ef5055222a8b29261abda62

shellsh /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/bin/install-plugin.sh

1709258788052afc63d36ad345c1fd2f6c05a45574b2e

自动下载完成之后, 将 /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/seatunnel 下所有的 jar 包都拷贝到 /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib 目录下

手动下载

修改代码,通过阿里云的 mvn 源快速下载,然后将相关 jar 包复制到对应目录即可。

seatunnel-connectors 下载地址

注意:下载 jar 复制到两个文件夹,一个是 lib 文件夹,一个是 connectors/seatunnel 文件夹。

2.3.4. 测试验证

#进入安装目录

cd /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3

#启动服务

./bin/seatunnel.sh --config ./config/v2.batch.config.template -e local

170925878807385585ef1cf815ffb51a2d8da35587947

17092587881314b26f40c168884b818d4fd1f31dde02a

17092591814113c5825a0d4bdb85c67182ef89bc9c7eb 1709258788106834dbb7d8e93902d6b9f438c80fe561d file

2.4. 启动服务

#进入安装目录

cd /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3

#启动服务

nohup sh bin/seatunnel-cluster.sh 2>&1 &

在 seatunnel 的安装目录下查看日志

tail -f logs/seatunnel-engine-server.log 有以下类似信息打印出,说明启动成功。

1709258788106834dbb7d8e93902d6b9f438c80fe561d

必须保证 Apache SeaTunnel 的 Server 正常运行,Web 端服务才能正常运行。

3. 安装 Apache Seatunnel Web

3.1. 安装配置 Seatunnel 引擎集群

在 SeaTunnel 的 Web 端机器上需要安装 SeaTunnel 客户端,如果服务端与 Web 端在同一台机器,则可直接跳过这个步骤。

本文档的安装过程中,Seatunnel 服务端和 web 是安装在同一台机器上, 所以直接跳过此步安装步骤。

这里所说的 Seatunnel 引擎客户端其实就是我们章 2 中安装的 Seatunnel 服务端, 下面讲解一下如何进行 Seatunnel 集群的安装配置

3.1.1. 准备服务器节点

我们现在需要搭建 Seatunnel 引擎集群,需要准备 n 台服务器节点, 我这里使用了 3 台服务器。比如, 已知我们的 3 台服务器的 IP 分别是

192.168.1.110

192.168.1.111

192.168.1.112

我们直接在章2 中已经安装部署好的 Seatunnel 单节点中进行集群的配置,主要的配置修改包含以下几项:

3.1.2. 修改 JVM 参数

在 seatunnel 的安装目录,找到 $SEATUNNEL_HOME/bin/seatunnel-cluster.sh

17092587881328dac5dda6bb379af6c622e2c73e9390d

将 JVM 选项添加到 $SEATUNNEL_HOME/bin/seatunnel-cluster.sh 第一行

JAVA_OPTS=“-Xms2G -Xmx2G”

1709258789001ce408f23ce16d7a051a9a4bda7706158

如果不想这样进行修改,也可以, 不过需要在进行集群启动时,自行增加 JVM 参数进行启动, 启动命令如下:

nohup sh $SEATUNNEL_HOME/bin/seatunnel-cluster.sh -DJvmOption="-Xms2G -Xmx2G" 2>&1 &

1709258789042cb6d33c5cf1cf06d64bd26aad48c438e

3.1.3.SeaTunnel Engine 配置

SeaTunnel Engine Server 配置是在 sh $SEATUNNEL_HOME/config/seatunnel.yaml .

详细配置想可参考官方文档 4. Config SeaTunnel Engine,这里不赘述

3.1.4.SeaTunnel Engine Server 配置

SeaTunnel Engine Server 配置是在 sh $SEATUNNEL_HOME/config/hazelcast.yaml .

集群名称配置

SeaTunnel Engine 节点使用集群名称来确定对方是否与自己是一个集群。 如果两个节点之间的集群名称不同,SeaTunnel 引擎将拒绝服务请求。

网络配置

SeaTunnel Engine 集群基于 Hazelcast,是运行 SeaTunnel Engine Server 的集群成员的网络。 集群成员自动连接在一起形成集群。 这种自动加入是通过集群成员用来查找彼此的各种发现机制来实现的。

请注意,集群形成后,集群成员之间的通信始终通过 TCP/IP 进行,无论使用何种发现机制。

SeaTunnel 引擎使用以下发现机制。

TCP

您可以将 SeaTunnel Engine 配置为完整的 TCP/IP 集群。 有关配置详细信息,请参阅通过 TCP 发现成员部分。

hazelcast.yaml 配置示例如下:

hazelcast:  cluster-name: seatunnel  network:    join:      tcp-ip:        enabled: true        member-list:          - hostname1    port:      auto-increment: false      port: 5801  properties:    hazelcast.logging.type: log4j2

在独立 SeaTunnel 引擎集群中我们建议使用 TCP 方式。

另一方面,Hazelcast 提供了一些其他的服务发现方法。 详情请参考 hazelcast 网

3.1.4.3 Map 配置
  • type

imap 持久化类型,目前仅支持 hdfs。

  • namespace

命令空间用于区分不同业务的数据存储位置,例如 OSS 的桶名。

  • clusterName

这个参数主要用于集群隔离,我们可以通过这个来区分不同的集群,比如 cluster1、cluster2,这个也可以用来区分不同的业务

  • fs.defaultFS

We used hdfs api read/write file, so used this storage need provide hdfs configuration

if you used HDFS, you can config like this:

map:    engine*:       map-store:         enabled: true         initial-mode: EAGER         factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory         properties:           type: hdfs           namespace: /tmp/seatunnel/imap           clusterName: seatunnel-cluster           storage.type: hdfs           fs.defaultFS: hdfs://localhost:9000

如果没有 HDFS 并且您的集群只有一个节点,您可以配置为使用本地文件,如下所示:

map:    engine*:       map-store:         enabled: true         initial-mode: EAGER         factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory         properties:           type: hdfs           namespace: /tmp/seatunnel/imap           clusterName: seatunnel-cluster           storage.type: hdfs           fs.defaultFS: file:///

如果你使用 OSS,你可以这样配置:

map:    engine*:       map-store:         enabled: true         initial-mode: EAGER         factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory         properties:           type: hdfs           namespace: /tmp/seatunnel/imap           clusterName: seatunnel-cluster           storage.type: oss           block.size: block size(bytes)           oss.bucket: oss://bucket name/           fs.oss.accessKeyId: OSS access key id           fs.oss.accessKeySecret: OSS access key secret           fs.oss.endpoint: OSS endpoint           fs.oss.credentials.provider: org.apache.hadoop.fs.aliyun.oss.AliyunCredentialsProvider

3.1.5.SeaTunnel Engine Client 配置

SeaTunnel Engine Client 配置是在 sh $SEATUNNEL_HOME/config/hazelcast-client.yaml .

集群名称配置

客户端必须与 SeaTunnel 引擎具有相同的集群名称。 否则,SeaTunnel 引擎将拒绝客户端请求。

网络配置

cluster-members

所有 SeaTunnel 引擎服务器节点地址都需要添加到此处。

hazelcast-client:  cluster-name: seatunnel  properties:      hazelcast.logging.type: log4j2  network:    cluster-members:      - hostname1:5801

3.1.6. 启动 Seatunnel 引擎服务端节点

mkdir -p $SEATUNNEL_HOME/logscd $SEATUNNEL_HOME./bin/seatunnel-cluster.sh -d

如果集群存在多台节点, 需要启动所有节点上的 Seatunnel 引擎服务。

3.1.7. 安装 Seatunnel 引擎客户端并启动

您只需将 SeaTunnel 引擎节点上的安装目录目录复制到客户端节点主机的相同安装目录下,并像 SeaTunnel 引擎服务器节点一样配置 SEATUNNEL_HOME,之后启动服务即可。

3.2. 配置 Seatunnel Web 服务

3.2.1. 数据库初始化

修改数据库连接配置

将 script/seatunnel_server_env.sh 相关配置改为你的对应的数据库信息

1709259315495c8a5ad60ed2d861ec15e0bac200c12dd 1709258789033599845f2d2827b59ebb80da919dc3a47

以上截图中原始文件中配置的是 HOSTNAME,PORT,USERNAME,PASSWORD 等,但是因为的机器上有全局配置文件也用了这几个变量名,但是链接的数据库信息和 seatunnel 连接的数据库不是一个数据库,因为名称冲突导致在启动 web 服务时连接数据哭失败,

所以我这里修改了 seatunnel_server_env.sh 和 init_sql.sh 脚本中的 HOSTNAME,PORT,USERNAME,PASSWORD 可以加上前缀 SEATUNNEL_,变成了

SEATUNNEL_HOSTNAME,SEATUNNEL_PORT,SEATUNNEL_USERNAME,SEATUNNEL_PASSWORD

一定要记住, 如果你按照文档修改了 seatunnel_server_env.sh 脚本的变量名, 一定要将 init_sql.sh 脚本中对应的变量名称进行同步修改,如下图:
17092587892156aaa8367ca1b2f6504aa31896f5becb2

执行初始化数据库命令

进入 seatunnel-web 的安装目录,然后执行命令 sh init_sql.sh,无异常则执行成功。

170925878921900d47b91cd1d8d4579219c4fdfd709ca

3.2.2. 配置 WEB 后端服务

修改后端基础配置

web 后端服务的配置文件都在 ${web安装目录}/conf 下

17092587893356ce902d4041f02fb3ddfe95b94e9126f

vim conf/application.yml 修改端口号和数据源连接信息

1709258789930c0961bfcbbfc5d40fb4dc109ca221f1f

配置 client 信息

将 seatunnel 引擎服务节点的安装目录下的 config 目录下的关于引擎客户端的配置文件拷贝到 seatunnel-web 安装目录下的 conf 目录下

同一台机器下部署直接使用以下拷贝命令 (注意修改服务的安装目录为你自己的安装目录)

sudo cp /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/config/hazelcast-client.yaml /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/conf

如果不在同一台机器上, 可以使用 scp 命令或者下载下来然后上传到 web 服务的安装主机的安装目录下的 conf 目录下即可。

配置支持的插件信息

将 seatunnel 引擎服务节点的安装目录下的 connectors 目录下的 plugin-mapping.properties 配置文件拷贝到 seatunnel-web 安装目录下的 conf 目录下

sudo cp /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/plugin-mapping.properties /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/conf

同一台机器下部署直接使用以下拷贝命令 (注意修改服务的安装目录为你自己的安装目录) 如果不在同一台机器上, 可以使用 scp 命令或者下载下来然后上传到 web 服务的安装主机的安装目录下的 conf 目录下即可。

3.2.3. 下载配置数据源 JAR 包

这一步非常关键, 这一步如果没有配置好, 即使你正常启动了 web 应用,可能也会遇到下列问题:

  • 数据源类型选择页面为空, 我这里因为正常配置, 所以正常显示

170925878994115597760ebb6dcb488224aeee16f8735

  • 没有 Source 或者 Sink 进行选择

170925878997763c9971b88f8a8a276a728e0bbd87174

  • 任务无法正常执行

获取下载脚本

数据源 JAR 包的下载脚本在 seatunnel-web 的源码包中存在,它的目录在:

1709258790142674e5bc3958d64f07fdb5c6b4b8630db

修改配置文件如下:

170925879013688976536925e6f56047058d13a9df212

执行脚本,下载数据源 JAR 包

1709258790262e2f924a66a558264ddd74974ee47bbb7

正在下载

170925879089816641fe5d45c7c20142b4057f866c04c

成功下载下所有的 datasourceJAR 包

17092587908871d17a3fd1a479490f2b6a83b5e8af7d7

上传到 Seatunnel-Web 项目的 libs 目录

将以上所有 jar 包复制到 /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/libs 目录下

1709258790921649a89817ed64dd47623425ef4da94b9

上传到 Seatunnel 引擎服务的 lib 目录

将以上所有 jar 包复制到 /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib 目录下

170925879105689cd740cc8da63295550acea67c3bace

3.2.4. 配置元数据 MySQL 的驱动 JAR 包

MySQL 的驱动包 mysql-connector-java-8.0.20.jar 自行下载

17092587911455b37dcf1ae56afb644a1f100d1c5264c

上传到 SeaTunnel 引擎服务的 lib 目录

将 mysql-connector-java-8.0.20.jar 包复制到 /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib 下

1709258791238a6261fc7f3246778fd4562d525d583a3

3.2.5. 启动 WEB 服务

这一步也很容易出错,很多人都配置对了,但是最后启动起来,发现无法通过浏览访问, 查看日志打印如下:

1709258791834218a94644b24b33ed98830fff6b7ee75

造成这样的问题就是你执行启动命令的位置不对, 注意 web 服务安装之后的目录结构如下图:

1709258791836702b2f410769c5d3010b6b196eb45541

所以启动服务必须要保证服务可以访问到 ui 目录下的 index.html 文件才可以,因为项目启动前端的项目路径默认添加了 /ui 的前缀,所以后端项目的启动路径必须在 ui 目录的父级目录才可以,所以这里需要再 web 服务的安装目录下执行启动脚本,举例:

我这里的安装目录是 /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0, 所以我这里直接切换到该目录下,执行以下启动命令:

#进入web服务的安装目录cd /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0#执行启动脚本sudo sh bin/seatunnel-backend-daemon.sh start

访问 http://主机IP:12306 (此端口为 conf/application.yml 中配置的端口), 页面自动跳转到 http://主机IP:12306/ui

默认登录的用户名和密码:

username:admin

password:admin

170925879182967f8a1e8a9918afe778f4ae7a519543d

1709258791966d98e867cca87fc5493a00f41865ea34a

OK, 至此所有的搭建流程就结束了。

4. 资源链接

这里面有些资源的下载特别慢, 这里将整个配置好的前后端的项目资源打包存放到百度网盘,地址如下:

Seatunnel 引擎及 Web 服务一键安装包

提取码rryz

下载下来之后,修改所有涉及数据库连接的配置文件为你自己的连接配置信息, 然后执行 3.2.1小节的初始化数据库命令, 然后依次启动 SeaTunnel 引擎服务、Web 服务即可。

通过遵循上述步骤,你应该能够成功部署 SeaTunnel 及其 Web 界面。这将为你的大数据处理任务提供一个强大的工具,同时享受到基于 Web 的界面带来的便利。如果在部署过程中遇到任何问题,不要犹豫,查阅 SeaTunnel 官方文档或加入社区寻求帮助。

创作不易,对您有帮助,点个赞呗,感谢~~~~