1. 引言
官方安装教程:https://github.com/apache/seatunnel-web
本文为 seatunnel-web 的本地安装教程,假如直接参考官网官方的教程去安装,大概会有一些奇希奇怪的问题,所以博主在本文具体记录安装的步调,以便有需要的同学参考。
安装 seatunnel-web 按如下步调实行:
- 编译打包 seatunnel 源码(2.3.3-release分支),启动SeaTunnel Zeta Engine服务;
- 初始化 seatunnel-web 数据库脚本;
- 编译打包seatunnel-web源码(main分支),设置启动参数和情况变量,启动web server以及前端。
2. 后端打包摆设
起首需要打包摆设后端工程,可以直接下载安装包或从源码构建:
- 安装包地址:https://seatunnel.apache.org/download
- 源码地址:https://github.com/apache/seatunnel.git
为了让大家更进一步的去理解,本文利用的是源码的方式构建。
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操作:
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的核心源码及计划。谢谢大家的阅读,希望能资助到大家,本文完!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |