SeaTunnel 实战: Apache SeaTunnel 安装与部署

打印 上一主题 下一主题

主题 2308|帖子 2308|积分 6924


提示:本次安装 SeaTunnel及SeaTunnel Web均在一台服务器上部署,集群部署本篇文章步调大概并不适合。
一、准备工作

1.1 环境

类目要求(基础环境安装请自行百度)操作系统CentOS 7.6.18_x86_64 内核 3.10.0-1160.el7.x86_64JavaJava 8 或 11, 其他高于Java 8的版本理论上也可以工作, 以及设置 JAVA_HOMEMaven版本>= 3.6.3数据库Mysql 8.x 1.2 下载

进入 SeaTunnel 下载页面 下载最新版本的发布版安装包

目前 SeaTunnel 最新版本为 2.3.6 版本。

目前 SeaTunnel Web最新版本为 1.0.1 版本。
所下载的安装包如下:

二、SeaTunnel安装

2.1 解压安装包

  1. tar -xvf apache-seatunnel-2.3.6-bin.tar.gz
复制代码
2.2.设置环境变量


  1. export SEATUNNEL_HOME=/seatunnel/apache-seatunnel-2.3.6
  2. export PATH=$SEATUNNEL_HOME/bin:$PATH
复制代码
2.3.设置立刻生效

  1. source /etc/profile
复制代码
2.4 下载SeaTunnel相干jar包

安装SeaTunnel过程中,解压文件后官方默认提供的connector的jar包只有2个,如下图所示:

要想连接Mysql,Oracle,SqlServer,Hive,Kafka,Clickhouse,Doris等时,还需下载对应的jar包。
SeaTunnel下载connector的jar时,使用mvnw来下载jar包,默认是从https://repo.maven.apache.org 下载,速率有点慢,确实是有点慢,好处是不消再一个个拷贝Jar包,所以我还是建议用这种方式进行下载。
如果改用maven下载,依赖包会进入maven的仓库,并不会进入SeaTunnel设置的目录下,如果非要这么做,Jar包下载结束后,可以去maven仓库中,一个个拷贝进来。
改为maven下载,只必要对设置文件做一点修改,具体见截图中的文字部门。

系统默认自动下载时会下载 plugin_config 文件中的所有连接器,路径如下:
  1. /seatunnel/apache-seatunnel-2.3.6/config
  2. /plugin_config
复制代码
如果暂时不必要这么多依赖, 可以在实行下载脚本之前先在 plugin_config 设置中注释掉不必要的连接器。
  1. --connectors-v2--
  2. connector-amazondynamodb
  3. connector-assert
  4. connector-cassandra
  5. connector-cdc-mysql
  6. connector-cdc-mongodb
  7. connector-cdc-sqlserver
  8. connector-cdc-postgres
  9. connector-cdc-oracle
  10. connector-clickhouse
  11. connector-datahub
  12. connector-dingtalk
  13. connector-doris
  14. connector-elasticsearch
  15. connector-email
  16. connector-file-ftp
  17. connector-file-hadoop
  18. connector-file-local
  19. connector-file-oss
  20. connector-file-jindo-oss
  21. connector-file-s3
  22. connector-file-sftp
  23. connector-file-obs
  24. connector-google-sheets
  25. connector-google-firestore
  26. connector-hive
  27. connector-http-base
  28. connector-http-feishu
  29. connector-http-gitlab
  30. connector-http-github
  31. connector-http-jira
  32. connector-http-klaviyo
  33. connector-http-lemlist
  34. connector-http-myhours
  35. connector-http-notion
  36. connector-http-onesignal
  37. connector-http-wechat
  38. connector-hudi
  39. connector-iceberg
  40. connector-influxdb
  41. connector-iotdb
  42. connector-jdbc
  43. connector-kafka
  44. connector-kudu
  45. connector-maxcompute
  46. connector-mongodb
  47. connector-neo4j
  48. connector-openmldb
  49. connector-pulsar
  50. connector-rabbitmq
  51. connector-redis
  52. connector-druid
  53. connector-s3-redshift
  54. connector-sentry
  55. connector-slack
  56. connector-socket
  57. connector-starrocks
  58. connector-tablestore
  59. connector-selectdb-cloud
  60. connector-hbase
  61. connector-amazonsqs
  62. connector-easysearch
  63. connector-paimon
  64. connector-rocketmq
  65. connector-tdengine
  66. connector-web3j
  67. connector-milvus
复制代码
可以看到 2.3.6版本支持的连接器比2.3.5版本多了许多,Apache出品,必属精品。
实行下载命令
  1. /seatunnel/apache-seatunnel-2.3.6/bin/install-plugin.sh
复制代码
下载过程耗时比较长,可以去划个水先,耐烦等候即可
实行完毕之后,会有类似于下图的效果表现页。

自动下载完成之后, 将 /seatunnel/apache-seatunnel-2.3.6/connectors


下所有的jar包都拷贝到 /seatunnel/apache-seatunnel-2.3.6/lib 目录下

2.5 测试验证

  1. #进入SeaTunnel bin目录 启动服务
  2. ./seatunnel.sh --config  ../config/v2.batch.config.template -e local
复制代码
看到如下页面,证明设置没有题目,就可以启动 Seatunnel 服务了。

2.6 启动服务

  1. #进入SeaTunnel bin目录 启动服务
  2. nohup sh seatunnel-cluster.sh 2>&1 &
复制代码
在seatunnel的安装目录下查看日记
  1. tail -100f logs/seatunnel-engine-server.log
复制代码
看到如下所示页面,即标识启动成功。

三、SeaTunnel Web 1.0.1安装

3.1 将下载的压缩包解压缩到指定目录下

  1. tar -xvf apache-seatunnel-web-1.0.1-bin.tar.gz
复制代码
重定名下
  1. mv apache-seatunnel-web-1.0.1-bin apache-seatunnel-web-1.0.1
复制代码
3.2 设置 SeaTunnel Web 环境变量

  1. export SEATUNNEL_WEB_HOME=/seatunnel/apache-seatunnel-web-1.0.1
  2. export PATH=${SEATUNNEL_WEB_HOME}/bin:$PATH
复制代码
3.3 初始化数据库

数据库脚本路径
  1. /seatunnel/apache-seatunnel-web-1.0.1/script
复制代码

这里我直接选择跳过 init_sql.sh 初始化数据库的脚本,直接navicat 实行 seatunnel_server_mysql.sql。
实行成功,会创建seatunnel的数据库,及数据表的导入。

3.4 修改端口与数据源

设置文件 application.yml 路径
  1. /seatunnel/apache-seatunnel-web-1.0.1/conf
复制代码


3.5 修改secretKey(很重要)

我专门写了代码,生成这个secretKey,直接也附上吧。
  1.         <dependency>
  2.             <groupId>io.jsonwebtoken</groupId>
  3.             <artifactId>jjwt-api</artifactId>
  4.             <version>0.11.2</version>
  5.         </dependency>
  6.         <dependency>
  7.             <groupId>io.jsonwebtoken</groupId>
  8.             <artifactId>jjwt-impl</artifactId>
  9.             <version>0.11.2</version>
  10.         </dependency>
复制代码
  1.     public static void main(String[] args) {
  2.         SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);
  3.         String key =  Base64.getEncoder().encodeToString(secretKey.getEncoded());
  4.         System.out.println(key);
  5.     }
复制代码
生成的key,填写到 secretKey 的位置。

3.6 设置引擎服务信息

复制引擎服务中设置文件到 Web 设置目录下面。将 hazelcast-client 设置文件拷贝到 Web 的 conf 目录下:
  1. /seatunnel/apache-seatunnel-2.3.6/config
复制代码
将插件设置文件拷贝到 Web 的 conf 目录下:
  1. /seatunnel/apache-seatunnel-2.3.6/connectors
复制代码
全部拷贝至Web 的 conf 目录下:
  1. /seatunnel/apache-seatunnel-web-1.0.1/conf
复制代码

3.7 下载设置数据源JAR包

download_datasource.sh 数据源脚本在

根据你的必要选择必要下载的数据源,如果不下载在 Web 中设置数据源时会提示没有可用的数据源,记得修改版本号为1.0.1,这个我估计是版本更新留下的bug,默认是1.0.0。

修改为用maven进行下载。

实行脚本 download_datasource.sh,在下面的路径下
  1. /seatunnel/apache-seatunnel-web-1.0.1/bin
复制代码
  1. ./download_datasource.sh
复制代码
实行完成,会看到下面的表现。

接纳这种方式下载的,数据源包还是会先辈到 maven 仓库里面,然后再一个个拷贝进来。

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

将以上所有jar包复制到 /seatunnel/apache-seatunnel-web-1.0.1/libs 目录下

3.8 设置元数据MySQL的驱动JAR包

MySQL的驱动包 mysql-connector-java-8.0.30.jar 自行下载,copy到/seatunnel/apache-seatunnel-web-1.0.1/libs 目录下。

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

将 mysql-connector-java-8.0.30.jar 包复制到/seatunnel/apache-seatunnel-2.3.6/lib下

3.10 启动WEB服务

  启动服务必须要包管服务可以访问到ui目录下的index.html文件才可以,由于项目启动前端的项目路径默认添加了/ui的前缀,所以后端项目的启动路径必须在ui目录的父级目录才可以,所以这里必要再web服务的安装目录下实行启动脚本。
我这里的安装目录是/seatunnel/apache-seatunnel-web-1.0.1,所以我这里直接切换到该目录下,实行以下启动命令:
  1. #进入web服务的安装目录
  2. cd /seatunnel/apache-seatunnel-web-1.0.1
  3. #执行启动脚本
  4. sh bin/seatunnel-backend-daemon.sh start
复制代码
访问http://主机IP:8801(此端口为conf/application.yml中设置的端口), 页面自动跳转到http://主机IP:8801/ui,
默认登录的用户名和暗码:
  1. username: admin
  2. password: admin
复制代码
欣赏器访问图示地点,看到如下界面,基本启动就成功了。

四、排错过程

4.1 nested exception is java.lang.NoClassDefFoundError 错误

  1. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectorCache' defined in URL [jar:file:/seatunnel/apache-seatunnel-web-1.0.1/libs/seatunnel-app-1.0.1.jar!/org/apache/seatunnel/app/bean/connector/ConnectorCache.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.seatunnel.app.bean.connector.ConnectorCache]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions
  2.         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1334)
  3.         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1232)
  4.         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
  5.         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
  6.         at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
  7.         at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
  8.         at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
  9.         at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
  10.         at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
  11.         at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
  12.         at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
  13.         at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145)
  14.         at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:745)
  15.         at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:420)
  16.         at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
  17.         at org.springframework.boot.SpringApplication.run(SpringApplication.java:1317)
  18.         at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306)
  19.         at org.apache.seatunnel.app.SeatunnelApplication.main(SeatunnelApplication.java:36)
  20. Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.seatunnel.app.bean.connector.ConnectorCache]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions
  21.         at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:224)
  22.         at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
  23.         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1326)
  24.         ... 17 common frames omitted
  25. Caused by: java.lang.NoClassDefFoundError: org/apache/seatunnel/api/table/catalog/schema/TableSchemaOptions
  26.         at org.apache.seatunnel.connectors.seatunnel.amazondynamodb.source.AmazonDynamoDBSourceFactory.optionRule(AmazonDynamoDBSourceFactory.java:45)
  27.         at org.apache.seatunnel.api.table.factory.FactoryUtil.sourceFullOptionRule(FactoryUtil.java:256)
  28.         at org.apache.seatunnel.plugin.discovery.AbstractPluginDiscovery.lambda$getAllPlugin$5(AbstractPluginDiscovery.java:260)
  29.         at java.lang.Iterable.forEach(Iterable.java:75)
  30.         at org.apache.seatunnel.plugin.discovery.AbstractPluginDiscovery.getAllPlugin(AbstractPluginDiscovery.java:248)
  31.         at org.apache.seatunnel.app.thirdparty.framework.PluginDiscoveryUtil.getAllConnectors(PluginDiscoveryUtil.java:126)
  32.         at org.apache.seatunnel.app.bean.connector.ConnectorCache.refresh(ConnectorCache.java:107)
  33.         at org.apache.seatunnel.app.bean.connector.ConnectorCache.<init>(ConnectorCache.java:73)
  34.         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  35.         at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  36.         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  37.         at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
  38.         at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
  39.         ... 19 common frames omitted
  40. Caused by: java.lang.ClassNotFoundException: org.apache.seatunnel.api.table.catalog.schema.TableSchemaOptions
  41.         at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
  42.         at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
  43.         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
  44.         at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
  45.         ... 32 common frames omitted
复制代码
基本是版本不符导致,从maven下载2.3.6版本的jar包更换2.3.3版本的jar包,重新启动。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立聪堂德州十三局店

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表