seatunnel-web本地安装教程(超详细)
超详细讲解seatunnel-web本地安装流程
文章目录
1. 引言
本文为 seatunnel-web 的本地安装教程,如果直接参考官网官方的教程去安装,可能会有一些奇奇怪怪的问题,所以博主在本文详细记录安装的步骤,以便有需要的同学参考。
安装 seatunnel-web
按如下步骤执行:
- 编译打包 seatunnel 源码(2.3.3-release分支),启动SeaTunnel Zeta Engine服务;
- 初始化 seatunnel-web 数据库脚本;
- 编译打包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
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-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的核心源码及设计。谢谢大家的阅读,希望能帮助到大家,本文完!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)