Apache Seatunnel本地源码构建编译运行调试

这篇具有很好参考价值的文章主要介绍了Apache Seatunnel本地源码构建编译运行调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Apache Seatunnel本地源码构建编译运行调试

1. 环境准备

  本文使用的是windows10-64位专业版的电脑,需要安装环境如下

1.1 Java环境

  jdk>=1.8 - 64 位的jdk、

1.2 Maven

  使用的是idea自带的maven,最好是安装一个方便源码编译构建,使用idea自带的maven无法执行mvnw,但是可以复制mvnw后面的在idea的maven中的run maven中的new goal里面执行即可。

1.3 IDEA

  代码编辑调试运行器

1.4 Docker环境

  mysql8.0.28的安装是使用docker安装部署

1.5 Mysql8.0.28

Docker部署Mysql5.7x和Myslq8.x

https://mp.weixin.qq.com/s/5PC_VXtNc8689ag8b8cYLA

  以上那几个步骤省略

1.6 其它环境准备

  还需要如下的如下环境:

Windows10安装Node.js环境

https://mp.weixin.qq.com/s/qHHcbl6AMmdEbZLKnhz_tA

Windows10安装Hadoop3.1.3环境

https://mp.weixin.qq.com/s/BaXK0dMu4whOrnKQbb6G-A

Windows10之wsl-Linux子系统安装JDK、Maven环境

https://mp.weixin.qq.com/s/Lq30469wZgikM72s8tv1ZA

在阅读本文需要对Apache SeaTunne有一点了解

Apache SeaTunne简介

https://mp.weixin.qq.com/s/uHZ-29OF-NawOL4oZW6z2A

2. 源码包下载

https://seatunnel.apache.org/download
https://github.com/apache/seatunnel
https://github.com/apache/seatunnel-web

  seatunnel可以在官方的download下载源码包或者在github上下载tag2.3.3包,不要下载2.3.3-release,不要下载xxx-release的分支,就拿2.3.3-release分支来说,里面的项目版本有2.3.3、又有2.3.4的版本,项目模块之前的版本不统一,就会导致编译版本冲突,下载tag中的2.3.3或者是download源码Source Code包,本文使用的tag2.3.3的包来本地编译构建运行的,使用2.3.3-release分支版本不统一导致冲突,我怀疑这个2.3.3-release分支估计是他们的开发分支,所以这里是需要注意的,不然很难在本地搞起来,seatunnel-web项目拉取的是1.0.0-release分支的代码。

3. idea项目配置

3.1 项目导入

  seatunnel解压路径如下:

st_web_basedir_path,ApacheSeatunnel

  seatunnel-web路径如下:

git clone https://github.com/apache/seatunnel-web.git
git checkout 1.0.0-release
或者使用git拉取,git环境可要可不要

st_web_basedir_path,ApacheSeatunnel

3.2 maven配置

  setting.xml配置

  配置成阿里的maven仓库方便编译构建是下载拉取项目所需的依赖包

 <localRepository>D:\developer\repository</localRepository> <!--改为自己的本地maven仓库的路径即可-->
<mirrors>
	<mirror>
	  <id>aliyunmaven</id>
	  <mirrorOf>*</mirrorOf>
	  <name>阿里云公共仓库</name>
	  <url>https://maven.aliyun.com/repository/public</url>
	</mirror>
	<mirror>
	  <id>aliyunmaven2</id>
	  <mirrorOf>*</mirrorOf>
	  <name>阿里云公共仓库2</name>
	  <url>https://maven.aliyun.com/repository/apache-snapshots</url>
	</mirror>
	<mirror>
	  <id>aliyunmaven3</id>
	  <mirrorOf>*</mirrorOf>
	  <name>阿里云公共仓库3</name>
	  <url>https://maven.aliyun.com/repository/central</url>
	</mirror>
  </mirrors>

  idaea的maven配置

st_web_basedir_path,ApacheSeatunnel

  两个项目都是这种配置,这里选择一个演示即可。

3.3 项目JDK配置

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

  在project和SDKs选项中选择配置下jdk,两个项目都是这种配置,这里选择一个演示即可。

3.4 项目启动参数配置

3.4.1 seatunnel项目启动参数配置

st_web_basedir_path,ApacheSeatunnel

  jvm参数如下:编译的压缩包的解压路径

-DSEATUNNEL_HOME=D:\developer\other-code\other\seatunnel\seatunnel-dist\target\apache-seatunnel-2.3.3

st_web_basedir_path,ApacheSeatunnel

  项目编译后会输出到seatunnel-dist的target下

3.4.2 seatunnel-web项目启动参数配置

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

  jvm参数和环境变量如下:

jvm参数
-DSEATUNNEL_HOME=D:\developer\other-code\other\seatunnel\seatunnel-dist\target\apache-sea
环境变量
ST_WEB_BASEDIR_PATH=D:\developer\other-code\other\seatunnel-web\seatunnel-web-dist\target\apache-seatunnel-web-1.0.1-SNAPSHOT\apache-seatunnel-web-1.0.1-SNAPSHOT

  项目编译后会输出到seatunnel-web-dist的target下

4. 源码编译运行

4.1 sql脚本执行

  脚本如下,复制出来执行即可:

st_web_basedir_path,ApacheSeatunnel

  数据库执行如下:

st_web_basedir_path,ApacheSeatunnel

4.2 编译构建

4.2.1 seatunnel编译构建

  jindodata先关的jar需要自行下载导入,在seatunnel-connectors-v2–>connector-file–>connector-file-jindo-oss的pom文件修改依赖如下:

       <dependency>
            <groupId>com.aliyun.jindodata</groupId>
            <artifactId>jindo-core</artifactId>
            <version>${jindo-sdk.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/jindo-core-4.6.1.jar</systemPath>
        </dependency>

        <dependency>
            <groupId>com.aliyun.jindodata</groupId>
            <artifactId>jindosdk</artifactId>
            <version>${jindo-sdk.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/jindo-sdk-4.6.1.jar</systemPath>
        </dependency>
        
        <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.2</version>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>

  引入jindodata相关的本地依赖和打包插件,jindodata相关包会在文末分享给大家

st_web_basedir_path,ApacheSeatunnel

  修改seatunnel-hadoop3-3.1.4-uber的maven如下:

st_web_basedir_path,ApacheSeatunnel

  该包如果不修改直接引入会导致下面的类死活依赖不到,后面将改包放入到taget的解压路径下的lib里面不生效导致报错如下:

st_web_basedir_path,ApacheSeatunnel

  加入mysql8.x的连接驱动包,这里不加的话,可以在解压的target目录下的lib中把这个jar包放进去,因为本文要进行的是mysql-jdbc—>mysql-jdbc的单表数据同步,所以需要这个jar包

st_web_basedir_path,ApacheSeatunnel

  seatunnel.yaml配置,这个基本默认即可

st_web_basedir_path,ApacheSeatunnel

  如果下载的是release支付的包或代码,需要在整个项目的pom中加入如下的配置:

              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>

  该插件配置是或略打包时候的gpg签名校验,不然会编译不通过,好多开源正规的项目都有这种签名校验的,所以需要加入这个插件才可以编译通过

4.2.3 seatunnel-web编译构建

  seatunnel-server–>seatunnel-app–>pom加入mysql8.x的连接驱动包,可以使用8.0.28的包

         <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>

  修改seatunnel-app下的application.yml

st_web_basedir_path,ApacheSeatunnel

  将seatunnel项目里面编译到seatunnel-dist下target里面的解压文件里面的的hazelcast-client.yaml文件和connectors文件下的plugin-mapping.properties(这个文件已经包含了,可以修改,注释里面的一些插件,放入自己需要的插件即可)文件拷贝到seatunnel-app的rusources里面,如上图所示.

  plugin-mapping.properties配置文件修改只包含如下两个插件:

seatunnel.source.Jdbc = connector-jdbc
seatunnel.sink.Jdbc = connector-jdbc

4.3 编译打包命令

seatunnel项目运行这个:
mvn clean package -pl seatunnel-dist -am -Dmaven.test.skip=true
seatunnel打包插件命令实例如下:
mvn clean package -pl seatunnel-connectors-v2/connector-jdbc -am -DskipTests -T 1C

seatunnel-web项目运行这个:
mvn clean package -pl seatunnel-web-dist -am -Dmaven.test.skip=true
或者可以直接点击右侧maven的package打包即可

  关于这个编译构建的官方也有讲,下面两个连接打开就有,需要仔细的阅读

https://seatunnel.apache.org/docs/2.3.3/contribution/setup
https://github.com/apache/seatunnel-web

4.4 启动运行

  在启动前需要先启动本地的mysql8.x、hadoop3.1.3

  在启动之前将如下的jar包放入到seatunnel和seatunnel-web编译构建的target的lib目录下,以免启动由于缺少jar依赖而报错
st_web_basedir_path,ApacheSeatunnel

  或者是把项目中编译好的插件或数据源jar复制到这个两个项目的target的lib目录下也是可以的,上面的是我去阿里云maven仓库下载的

  然后先启动seatunnel在启动seatunnel-web

  前端ui编译启动

  ui源码构建发布前需要修改访问后端的端口号:

st_web_basedir_path,ApacheSeatunnel

  cmd进入到seatunnel-web—>seatunnel-ui

  路径执行如下命令:

npm install
npm run dev

4.5 访问首页

  访问地址:

http://localhost:5173/
用户名/密码都是admin

st_web_basedir_path,ApacheSeatunnel

5. mysql-jdbc 到mysql-jdbc的单表数据同步

5.1 添加数据源

  如果创建不可以选择说明是对应的lib下面没有放入对应的数据源的插件jar包

st_web_basedir_path,ApacheSeatunnel

5.2 同步任务定义

  这里我们添加的是两个mysql-jdbc的数据源,这里采用任务类型是“数据集成”,mysql的单表同步到mysql的单表

  将seatunnel库中的表role表同步到seatunnel_copy数据库中的role表中,seatunnel_copy数据库中的role表的结构和seatunnel库中的表role表结构一模一样

  任务的source和sink的数据源如果不可以选,说明是lib下没有数据源相关的jar,需要放入指定的jar重启项目才可以选数据源

  source配置如下:

st_web_basedir_path,ApacheSeatunnel

  sink配置如下:

st_web_basedir_path,ApacheSeatunnel

5.3 同步任务执行

  保存选择任务的类型使用的流式任务:(保存可以选择流式任务也可以选择批任务)

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

  配置好任务之后,就可以点击运行按钮,执行完之后在“同步任务实例”列表中就可以看到之前的任务,状态是已完成

st_web_basedir_path,ApacheSeatunnel

5.4 同步任务执行遇到的问题

  如果状态执行不是已完成就会是一个以失败的状态,原因可能是缺少jar包或者是本地缺少hadoop3.1.3的环境,hadoop的环境官方的大佬说不是必须的,但是我在本地做这个案例的时候没有hadoop会执行报错的,所以上面seatunnel引擎的公共模块中的seatunnel.yaml配置里面配置了hdfs相关存储的信息,所以还需要去hdfs上新建一个目录如下:

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

  这个目录不建立没有试过会不会报错,反正是有总比没有好,本地没有hapood会报如下错误:

st_web_basedir_path,ApacheSeatunnel

  大致上是任务在执行的时候需要做一些任务的检查点或保存点的数据状态的存储,上面那个报错感觉是执行了两次或者是多个线程执行过导致数据本来第一次是已经同步过去了,后面有搞了一次就主键冲突导致任务状态变成失败了,有了hdfs就不会有这个报错的,也是很神奇。

5.5 同步任务执行的结果

  可以看到seatunnel库中role表数据同步到seatunnel_copy数据库中的role表中了

st_web_basedir_path,ApacheSeatunnel

6. 总结

  本地源码编译运行已经分享完了,这样做是为了更好的理解这个项目,你可以跑起来在idea中本地两边的项目打上断点,使用debug调试跟踪源码,可以开发一个插件或者是为这个项目贡献源码,或者是用于学习,通过欣赏项目的源码来学习项目中的一些好的设计思路,我个人觉得这个项目的亮点有一下几点:
  第一:使用hazelcast(底层基于netty和socket)实现了内核集群,同时也可以使用hazelcast的代client向hazelcast引擎服务提交一个任务,然后该任务由web端或者是linux的控制台提交到引擎服务上(提交的任务是一个json的文件,里面定义好了input、transform和sink这三个阶段的信息),引擎服务又有master和work,主节点负责管理work节点的状态和任务调度(任务需要下发到那个work节点上执行,利用多机分布式来跑任务),并且会对任务做保存点or检查点(有点像fink的保存点和检查点的概念)。
  第二是插件机制:一个插件就是一个jar包,把公共的流程步骤高度抽象封装到上层的api中,差异化的实现各种场景下的数据同步需求,数据源和插件是很丰富的
  第三是类加载器:实现了自己的类加载器,项目启动就通过自己实现的类加载器加载指定路径下的插件jar包,就是通过这种插件的加载机制来完成按需加载,插件的机制就是上一个插件的输出作为下一个插件的输入,数据在一个插件链条上滚动传递,有点像设计模式中的责任链模式。
  第四是三套引擎:默认使用的是自研的SeaTunnelEngine,还支持flink和spark两大引擎。
  上面只是我个人看到的一些优点,也没有细细的看,就随便看了下,或许还有我不晓得的新东西,上面的hazelcast可以研究学下下,插件机制和自定义类加载机制是可以应用于我们平时的业务代码开发中。
  有优点同样也存在缺点,她是一个闪亮的星星还处于发展阶段,相对来说还不是那么成熟,所以选型得慎重考虑,官方的文档虽然是比较全的,但是基本是英文的并且篇幅比较短,字少事多,赶脚写的不是那么详细,有的影藏的细节的东西,需要查看官方的公众号的文章或者是看源码中才能找到答案的,在遇到问题的时候最好的方法是找官方,寻求官方的帮助,加入官方的群聊,可以直接和大佬沟通,或者是你自己改源码解决,感觉不太靠谱还是不要使用以免背锅,本地构建编译如果你实在是编译运行不起来的话,多花一点时间是可以搞出来的,这个玩意我搞了有一个星期了吧,实在是有点蛋疼遇到各种奇葩的问题,在搞不出来,都有点想不搞了,放弃吧,但是一想在试一试结果还是被我搞出来了,坚持向下凿水源距离你可能就差一步之遥了,其实也是可以不编译构建,欣赏下源码也是不错的选择,然后不用把时间浪费在这个构建编译上,其实是为了打断点好调试一点,光看代码的话,也是只能浏览下看个大概,在学习研究这种开源的项目,也在只能是看他的官方文档和其他的一些博客资料,边搞边猜,边猜边搞,慢慢的也基本上能搞通,需要参看好多的文章或信息,然后从中实践出真知,所以我就写了这篇文章总结了下,下一篇文章分享在centOs上的安装部署实践mysql-jdbc==>mysql-jdbc同步例子中遇到的坑,敬请期待下一篇文章,希望我的分享对你有所帮助,请一键三连,么么么哒!

7.资料分享

链接:https://pan.baidu.com/s/1DWKpX2j5nyvDT3UucVc1Sg 
提取码:ip7p

  seatunnel-2.3.3.zip是tag的源码包, apache-seatunnel-2.3.3-src.tar.gz这个是官网的download下载的sourceCode包。文章来源地址https://www.toymoban.com/news/detail-794912.html

到了这里,关于Apache Seatunnel本地源码构建编译运行调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

    一直以来,大数据量一直是爆炸性增长,每天几十 TB 的数据增量已经非常常见,但云存储相对来说还是不便宜的。众多云上的大数据用户特别希望可以非常简单快速的将文件移动到更实惠的 S3、OSS 上进行保存,这篇文章就来介绍如何使用 SeaTunnel 来进行到 OSS 的数据同步。

    2024年02月08日
    浏览(50)
  • SeaTunnel本地运行以及kafka发送到redis说明

    Seatunnel2.3.1源码 Idea中的目录结构 通过maven进行代码编译 编译命令 mvn  clean package -pl seatunnel-dist -am -Dmaven.test.skip=true 编译单个模块命令 mvn  clean package -pl seatunnel-examples/seatunnel-engine-examples -am -Dmaven.test.skip=true -T 1C 编译完通过 SeaTunnelEngineExample 类来运行 这样就运行成功啦 附上

    2024年02月15日
    浏览(51)
  • 手把手教你掌握SeaTunnel k8s运行Zeta引擎本地模式的技巧

    转载自小虾米0.0 导读:随着Kubernetes的普及和发展,越来越多的企业和团队开始使用Kubernetes来管理和部署应用程序。然而,Kubernetes的默认工作方式可能不是最佳的选择,尤其是在需要更高效、更可靠的应用程序部署和管理能力时。因此,SeaTunnel提供了一种运行Zeta引擎(local-

    2024年04月24日
    浏览(38)
  • 本地构建自己的chatgpt已成为可能,国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持普通在笔记上运行chatgpt

    国外团队从GPT3.5提取大规模数据完成本地机器人训练,并开源项目源码和模型支持,普通在笔记上运行chatgpt。下面是他们分享的:收集到的数据、数据管理程序、训练代码和最终模型,以促进开放研究和可重复性。 在 2023 年 3 月 20 日至 2023 年 3 月 26 日期间,该团队使用 GPT

    2023年04月21日
    浏览(68)
  • 源码编译安装Apache

    目录 ✨apache安装步骤 🍭挂载镜像 🍭解压并安装 🍭安装主程序 🍭优化链接及服务 🍭查看httpd模块 🍭查看mpm配置文件 🍭查看apache主页 🍭使用ab命令进行压力测试    🦐博客主页:大虾好吃吗的博客    🦐专栏地址:Linux从入门到精通   检查是否已经rpm安装httpd服务,已

    2024年02月08日
    浏览(59)
  • VScode 运行编译 + 调试 C/C++,详细教程!!

    MinGW,下载地址,进入页面之后点击下载: 下载的时候按照提示内容,一直点击“continue”即可,直到进入这个页面:把以下出现的选项选中, (注意!)这两个的作用只是在写代码的时候#includestudio.h不报错,可以成功编译C/C++代码,并不能完成调试的功能,如果后续需要调

    2024年02月07日
    浏览(40)
  • # Apache SeaTunnel 究竟是什么?

    作者 | Shawn Gordon 翻译 | Debra Chen 原文链接 | What the Heck is Apache SeaTunnel? 我在2023年初开始注意到Apache SeaTunnel的相关讨论,一直低调地关注着。该项目始于2017年,最初名为Waterdrop,在Apache DolphinScheduler的创建者的贡献下发展起来,后者支持SeaTunnel作为任务插件。 我最初对于SeaT

    2024年04月08日
    浏览(102)
  • 【.net】本地调试运行只能用localhost的问题

      解决方案 找到到项目目录下 隐藏文件夹 .vs /项目名称/config/applicationhost.config   再加一条你要通过ip访问的地址并保存 打开ide vs  改成对应的地址   保存重新启动

    2024年02月12日
    浏览(33)
  • Visual Studio容器工具要求在构建,调试或运行容器化项目之前运行Docker

    出现此提示,是因为电脑未安装Docker所致,接下来就教大家如何安装Docker。 第一步:下载 地址:Install Docker Desktop on Windows | Docker Documentation 第二步:安装         1、双击 Docker Desktop Installer.exe 运行安装程序。         2、出现提示时,确保根据您选择的后端选择或不

    2023年04月17日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包