seatunnel-web本地安装教程(超详细)

1. 引言

官方安装教程:https://github.com/apache/seatunnel-web

本文为 seatunnel-web 的本地安装教程,如果直接参考官网官方的教程去安装,可能会有一些奇奇怪怪的问题,所以博主在本文详细记录安装的步骤,以便有需要的同学参考。


安装 seatunnel-web 按如下步骤执行

  1. 编译打包 seatunnel 源码(2.3.3-release分支),启动SeaTunnel Zeta Engine服务;
  2. 初始化 seatunnel-web 数据库脚本;
  3. 编译打包seatunnel-web源码(main分支),配置启动参数和环境变量,启动web server以及前端。

2. 后端打包部署

首先需要打包部署后端工程,可以直接下载安装包或从源码构建:

为了让大家更进一步的去理解,本文使用的是源码的方式构建。

2.1 打包

首先需要打包。IDEA导入源码后,IDEA导入并切换到 2.3.3-release 稳定版分支(备注:因为seatunnel-web项目的main分支默认使用的seatunnel版本也是为2.3.3版本,所以这里使用2.3.3版本)。

进入项目根目录终端执行打包命令:

mvn -U -T 1C clean install -DskipTests -D"maven.test.skip"=true -D"maven.javadoc.skip"=true -D"checkstyle.skip"=true -D"license.skipAddThirdParty" 

或直接使用IDEA打包
在这里插入图片描述
从上图可以看到打包成功,在/seatunnel/seatunnel-dist/target/apache-seatunnel-2.3.4-SNAPSHOT-bin.tar.gz目录可以看到打包完成的压缩包。

接着复制到固定的目录,并解压:

## 复制到本地固定目录
## 解压
tar -zxvf apache-seatunnel-2.3.4-SNAPSHOT-bin.tar.gz

解压后目录如下:
在这里插入图片描述

2.2 启动SeaTunnel Zeta Engine 服务

启动命令:

## 进去启动目录
cd apache-seatunnel-2.3.4-SNAPSHOT/bin/

## 启动
./seatunnel-cluster.sh -d

## 验证端口是否被占用(mac系统)
lsof -i:5801

启动成功,可以看到 5801 端口被占用了,后端服务启动成功:
在这里插入图片描述

2.3 其它

进入connectors/seatunnel目录,发现只有打包了两个democonnector,其实这两个包是不够的,后续seatunnel-web工程启动时会读取这里面的目录加载驱动并放到不同类型的cache,如果不加多几个,会导致新建同步任务,配置作业时无法找到数据源(即使已经添加了数据源)
在这里插入图片描述可以按需添加connector,具体在/seatunnel/seatunnel-dist/src/main/assembly/assembly-bin.xml文件里添加自己需要的connector,但是为了方便,我在这里添加所有的connector,例如:

<!-- ============ Connectors Jars ============  -->
<!-- SeaTunnel connectors for Demo -->
<dependencySet>
    <useProjectArtifact>false</useProjectArtifact>
    <useTransitiveDependencies>true</useTransitiveDependencies>
    <unpack>false</unpack>
    <includes>
        <include>org.apache.seatunnel:connector-*:jar</include>
    </includes>
    <outputDirectory>/connectors/seatunnel</outputDirectory>
    <scope>provided</scope>
</dependencySet>

3. web端打包部署

使用的是默认main分支

IDEA导入源码https://github.com/apache/seatunnel-web.git

3.1 初始化数据库

数据库客户端连接本地mysql数据库,执行/seatunnel-web/seatunnel-server/seatunnel-app/src/main/resources/script/seatunnel_server_mysql.sql初始化脚本,执行成功如下:
在这里插入图片描述

3.2 打包配置

打包项目:
在这里插入图片描述
修改seatunnel-server/seatunnel-app/src/main/resources/application.yml,添加本地数据库连接信息(注意:下图的 jwt.secretkey 按官网教程设置为 Seatunnel是会报错的,后面会贴上解决方式):
在这里插入图片描述
按教程,拷贝后端编译后的 plugin-mapping.properties 文件(即:/seatunnel/seatunnel-dist/target/apache-seatunnel-2.3.4-SNAPSHOT/connectors/plugin-mapping.properties)至seatunnel-web/seatunnel-server/seatunnel-app/src/main/resources目录。
在这里插入图片描述

配置 SeatunnelApplication
在这里插入图片描述
Add VM Options…
在这里插入图片描述
输入:-DSEATUNNEL_HOME=${seatunnel安装包解压路径},例如:在这里插入图片描述
还需要配置前端环境变量(ST_WEB_BASEDIR_PATH),变量值为可一般当前项目路径/seatunnel-web/seatunnel-web-dist/target/apache-seatunnel-web-1.0.0-SNAPSHOT/apache-seatunnel-web-1.0.0-SNAPSHOT,以下是官网的配置流程图:
在这里插入图片描述

3.2 启动服务

启动web后端服务: /seatunnel-web/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/SeatunnelApplication.java
在这里插入图片描述

启动前端:

cd seatunnel-ui
npm install
npm run dev

在这里插入图片描述
浏览器打开:http://localhost:5173/,默认账号密码为:admin/admin
在这里插入图片描述
登录成功后,添加数据源,新建任务等,都正常:
在这里插入图片描述

4. 报错汇总

4.1 JWT SecretKey长度问题

登录报错了:

2024-06-26 16:26:59.675 seatunnel yanglinweideMacBook-Pro-2.local ERROR [tr:,sp:] [qtp170778406-29] [GlobalExceptionHandler.logError():83] - The signing key's size is 72 bits which is not secure enough for the HS256 algorithm.  The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HS256 MUST have a size >= 256 bits (the key size must be greater than or equal to the hash output size).  Consider using the io.jsonwebtoken.security.Keys class's 'secretKeyFor(SignatureAlgorithm.HS256)' method to create a key guaranteed to be secure enough for HS256.  See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
io.jsonwebtoken.security.WeakKeyException: The signing key's size is 72 bits which is not secure enough for the HS256 algorithm.  The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HS256 MUST have a size >= 256 bits (the key size must be greater than or equal to the hash output size).  Consider using the io.jsonwebtoken.security.Keys class's 'secretKeyFor(SignatureAlgorithm.HS256)' method to create a key guaranteed to be secure enough for HS256.  See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
	at io.jsonwebtoken.SignatureAlgorithm.assertValid(SignatureAlgorithm.java:371)

这个错误提示表明,当前使用的签名密钥长度不足以满足 HS256 算法的安全要求。根据 JWT JWA 规范 (RFC 7518, Section 3.2),HS256 算法的密钥长度必须大于或等于 256 位 (32 字节)。

新建一个工具类去执行生成:

package org.apache.seatunnel.app.security;

import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;

import javax.crypto.SecretKey;
import java.util.Base64;

public class JwtKeyUtil {

    /**
     * 生成一个符合 HS256 算法要求的密钥字符串
     *
     * @return 生成的密钥字符串
     */
    public static String generateSecretKey() {
        SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);
        return Base64.getEncoder().encodeToString(secretKey.getEncoded());
    }

    public static void main(String[] args) {
        // 生成并打印密钥
        String secretKey = generateSecretKey();
        System.out.println("Generated Secret Key: " + secretKey);
    }
}

在这里插入图片描述
复制到/seatunnel-web/seatunnel-server/seatunnel-app/src/main/resources/application.yml:
在这里插入图片描述

重新启动SeatunnelApplication,登录成功:
在这里插入图片描述

4.2 Cannot load driver class: com.mysql.cj.jdbc.Driver

提示MySQL驱动找不到,把 /seatunnel-web/seatunnel-server/seatunnel-app/pom.xml 里面mysql-connector-java依赖的scope由test改为provided
在这里插入图片描述

4.3 spotless校验报错

提示了错误:
在这里插入图片描述
这个错误指的是没有通过spotless插件的校验检查,执行如下命令自动修复,如下直接在IDEA操作:

mvn spotless:apply

4.4 maven依赖报错

当然,还有很多的报错问题,一般都是依赖的问题,最好的方式直接打开IDEA maven视图,把报错的依赖处理即可。例如:暂时移除一些依赖(如:connector-file-jindo-ossseatunnel-flink-15-starter)(不建议)、或可能是由于一些jar包无法下载的问题,需要科学上网。

4.5 seatunnel无法加载源名称列表

添加了数据源之后,seatunnel无法加载源名称列表。需要确认前端(seatunnel-web)引用的是哪个seatunnel版本,具体在根目录的pom文件:

<seatunnel-framework.version>2.3.3</seatunnel-framework.version>

如上面代码所示,当前seatunnel-web使用的seatunnel版本为2.3.3,因此配置的后端部署包必须为2.3.3版本(即:SEATUNNEL_HOME的启动参数对应的seatunnel版本必须一致)。因为seatunnel-web会使用插件发现工具类(PluginDiscoveryUtil)动态加载指定目录的所有jar包,如果版本不一致,会导致程序启动失败或不会把这些jar包放入到cache(对应:org.apache.seatunnel.app.bean.connector.ConnectorCache),有兴趣的可以看源码,这里不展开说明。

5. 文末

本文主要讲解 seatunnel-web 在本地的安装部署教程,坑基本都填完了,后面我会继续研究并分享出seatunnel的核心源码及设计。谢谢大家的阅读,希望能帮助到大家,本文完!

为了安装Apache Seatunnel,您可以按照以下步骤进行操作: 1. 首先,您需要下载Apache Seatunnel的二进制文件。您可以在中找到下载链接。 2. 下载完后,使用以下命令解压文件: ``` sudo tar -zxvf apache-seatunnel-incubating-2.1.3-bin.tar.gz ``` 3. 接下来,您需要配置环境变量。打开`/etc/profile`文件: ``` sudo vim /etc/profile ``` 4. 在文件末尾添加以下内容,并保存文件: ``` export SEATUNNEL_HOME=/usr/local/apache-seatunnel-incubating-2.1.3 export PATH=$PATH:${SEATUNNEL_HOME}/bin ``` 5. 让环境变量生效: ``` source /etc/profile ``` 现在,您已功安装了Apache Seatunnel。您可以使用`start-seatunnel-spark.sh`命令提交Spark任务,或使用`start-seatunnel-flink.sh`命令提交Flink任务。 : https://join.slack.com/t/apacheseatunnel/shared_invite/zt-1kcxzyrxz-lKcF3BAyzHEmpcc4OSaCjQ : ``` #下载解压 sudo wget "apache-seatunnel-incubating-2.1.3-bin.tar.gz" sudo tar -zxvf apache-seatunnel-incubating-2.1.3-bin.tar.gz #配置环境变量 sudo vim /etc/profile export SEATUNNEL_HOME=/usr/local/apache-seatunnel-incubating-2.1.3 export PATH=$PATH:${SEATUNNEL_HOME}/bin #环境变量生效 source /etc/profile ``` : 提交Spark任务用`start-seatunnel-spark.sh`,提交Flink任务则用`start-seatunnel-flink.sh`。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [一文搞定 Apache SeaTunnel 2.3.1 全流程部署使用](https://blog.csdn.net/weixin_54625990/article/details/131099059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SeaTunnel安装及测试](https://blog.csdn.net/dwjlyl/article/details/128250253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值