0


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

目录,发现只有打包了两个

demo

connector

,其实这两个包是不够的,**后续

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
npminstallnpm 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 字节)。

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

packageorg.apache.seatunnel.app.security;importio.jsonwebtoken.SignatureAlgorithm;importio.jsonwebtoken.security.Keys;importjavax.crypto.SecretKey;importjava.util.Base64;publicclassJwtKeyUtil{/**
     * 生成一个符合 HS256 算法要求的密钥字符串
     *
     * @return 生成的密钥字符串
     */publicstaticStringgenerateSecretKey(){SecretKey secretKey =Keys.secretKeyFor(SignatureAlgorithm.HS256);returnBase64.getEncoder().encodeToString(secretKey.getEncoded());}publicstaticvoidmain(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-oss

seatunnel-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的核心源码及设计。谢谢大家的阅读,希望能帮助到大家,本文完!


本文转载自: https://blog.csdn.net/qq_20042935/article/details/139986802
版权归原作者 杨林伟 所有, 如有侵权,请联系我们删除。

“seatunnel-web本地安装教程(超详细)”的评论:

还没有评论