国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Apache Seatunnel本地源碼構(gòu)建編譯運(yùn)行調(diào)試

這篇具有很好參考價值的文章主要介紹了Apache Seatunnel本地源碼構(gòu)建編譯運(yùn)行調(diào)試。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Apache Seatunnel本地源碼構(gòu)建編譯運(yùn)行調(diào)試

1. 環(huán)境準(zhǔn)備

??本文使用的是windows10-64位專業(yè)版的電腦,需要安裝環(huán)境如下

1.1 Java環(huán)境

??jdk>=1.8 - 64 位的jdk、

1.2 Maven

??使用的是idea自帶的maven,最好是安裝一個方便源碼編譯構(gòu)建,使用idea自帶的maven無法執(zhí)行mvnw,但是可以復(fù)制mvnw后面的在idea的maven中的run maven中的new goal里面執(zhí)行即可。

1.3 IDEA

??代碼編輯調(diào)試運(yùn)行器

1.4 Docker環(huán)境

??mysql8.0.28的安裝是使用docker安裝部署

1.5 Mysql8.0.28

Docker部署Mysql5.7x和Myslq8.x

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

??以上那幾個步驟省略

1.6 其它環(huán)境準(zhǔn)備

??還需要如下的如下環(huán)境:

Windows10安裝Node.js環(huán)境

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

Windows10安裝Hadoop3.1.3環(huán)境

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

Windows10之wsl-Linux子系統(tǒng)安裝JDK、Maven環(huán)境

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

在閱讀本文需要對Apache SeaTunne有一點(diǎn)了解

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的版本,項目模塊之前的版本不統(tǒng)一,就會導(dǎo)致編譯版本沖突,下載tag中的2.3.3或者是download源碼Source Code包,本文使用的tag2.3.3的包來本地編譯構(gòu)建運(yùn)行的,使用2.3.3-release分支版本不統(tǒng)一導(dǎo)致沖突,我懷疑這個2.3.3-release分支估計是他們的開發(fā)分支,所以這里是需要注意的,不然很難在本地搞起來,seatunnel-web項目拉取的是1.0.0-release分支的代碼。

3. idea項目配置

3.1 項目導(dǎo)入

??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環(huán)境可要可不要

st_web_basedir_path,ApacheSeatunnel

3.2 maven配置

??setting.xml配置

??配置成阿里的maven倉庫方便編譯構(gòu)建是下載拉取項目所需的依賴包

 <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 項目啟動參數(shù)配置

3.4.1 seatunnel項目啟動參數(shù)配置

st_web_basedir_path,ApacheSeatunnel

??jvm參數(shù)如下:編譯的壓縮包的解壓路徑

-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項目啟動參數(shù)配置

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

??jvm參數(shù)和環(huán)境變量如下:

jvm參數(shù)
-DSEATUNNEL_HOME=D:\developer\other-code\other\seatunnel\seatunnel-dist\target\apache-sea
環(huán)境變量
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. 源碼編譯運(yùn)行

4.1 sql腳本執(zhí)行

??腳本如下,復(fù)制出來執(zhí)行即可:

st_web_basedir_path,ApacheSeatunnel

??數(shù)據(jù)庫執(zhí)行如下:

st_web_basedir_path,ApacheSeatunnel

4.2 編譯構(gòu)建

4.2.1 seatunnel編譯構(gòu)建

??jindodata先關(guān)的jar需要自行下載導(dǎo)入,在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相關(guān)的本地依賴和打包插件,jindodata相關(guān)包會在文末分享給大家

st_web_basedir_path,ApacheSeatunnel

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

st_web_basedir_path,ApacheSeatunnel

??該包如果不修改直接引入會導(dǎo)致下面的類死活依賴不到,后面將改包放入到taget的解壓路徑下的lib里面不生效導(dǎo)致報錯如下:

st_web_basedir_path,ApacheSeatunnel

??加入mysql8.x的連接驅(qū)動包,這里不加的話,可以在解壓的target目錄下的lib中把這個jar包放進(jìn)去,因為本文要進(jìn)行的是mysql-jdbc—>mysql-jdbc的單表數(shù)據(jù)同步,所以需要這個jar包

st_web_basedir_path,ApacheSeatunnel

??seatunnel.yaml配置,這個基本默認(rèn)即可

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簽名校驗,不然會編譯不通過,好多開源正規(guī)的項目都有這種簽名校驗的,所以需要加入這個插件才可以編譯通過

4.2.3 seatunnel-web編譯構(gòu)建

??seatunnel-server–>seatunnel-app–>pom加入mysql8.x的連接驅(qū)動包,可以使用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(這個文件已經(jīng)包含了,可以修改,注釋里面的一些插件,放入自己需要的插件即可)文件拷貝到seatunnel-app的rusources里面,如上圖所示.

??plugin-mapping.properties配置文件修改只包含如下兩個插件:

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

4.3 編譯打包命令

seatunnel項目運(yùn)行這個:
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項目運(yùn)行這個:
mvn clean package -pl seatunnel-web-dist -am -Dmaven.test.skip=true
或者可以直接點(diǎn)擊右側(cè)maven的package打包即可

??關(guān)于這個編譯構(gòu)建的官方也有講,下面兩個連接打開就有,需要仔細(xì)的閱讀

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

4.4 啟動運(yùn)行

??在啟動前需要先啟動本地的mysql8.x、hadoop3.1.3

??在啟動之前將如下的jar包放入到seatunnel和seatunnel-web編譯構(gòu)建的target的lib目錄下,以免啟動由于缺少jar依賴而報錯
st_web_basedir_path,ApacheSeatunnel

??或者是把項目中編譯好的插件或數(shù)據(jù)源jar復(fù)制到這個兩個項目的target的lib目錄下也是可以的,上面的是我去阿里云maven倉庫下載的

??然后先啟動seatunnel在啟動seatunnel-web

??前端ui編譯啟動

??ui源碼構(gòu)建發(fā)布前需要修改訪問后端的端口號:

st_web_basedir_path,ApacheSeatunnel

??cmd進(jìn)入到seatunnel-web—>seatunnel-ui

??路徑執(zhí)行如下命令:

npm install
npm run dev

4.5 訪問首頁

??訪問地址:

http://localhost:5173/
用戶名/密碼都是admin

st_web_basedir_path,ApacheSeatunnel

5. mysql-jdbc 到mysql-jdbc的單表數(shù)據(jù)同步

5.1 添加數(shù)據(jù)源

??如果創(chuàng)建不可以選擇說明是對應(yīng)的lib下面沒有放入對應(yīng)的數(shù)據(jù)源的插件jar包

st_web_basedir_path,ApacheSeatunnel

5.2 同步任務(wù)定義

??這里我們添加的是兩個mysql-jdbc的數(shù)據(jù)源,這里采用任務(wù)類型是“數(shù)據(jù)集成”,mysql的單表同步到mysql的單表

??將seatunnel庫中的表role表同步到seatunnel_copy數(shù)據(jù)庫中的role表中,seatunnel_copy數(shù)據(jù)庫中的role表的結(jié)構(gòu)和seatunnel庫中的表role表結(jié)構(gòu)一模一樣

??任務(wù)的source和sink的數(shù)據(jù)源如果不可以選,說明是lib下沒有數(shù)據(jù)源相關(guān)的jar,需要放入指定的jar重啟項目才可以選數(shù)據(jù)源

??source配置如下:

st_web_basedir_path,ApacheSeatunnel

??sink配置如下:

st_web_basedir_path,ApacheSeatunnel

5.3 同步任務(wù)執(zhí)行

??保存選擇任務(wù)的類型使用的流式任務(wù):(保存可以選擇流式任務(wù)也可以選擇批任務(wù))

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

??配置好任務(wù)之后,就可以點(diǎn)擊運(yùn)行按鈕,執(zhí)行完之后在“同步任務(wù)實例”列表中就可以看到之前的任務(wù),狀態(tài)是已完成

st_web_basedir_path,ApacheSeatunnel

5.4 同步任務(wù)執(zhí)行遇到的問題

??如果狀態(tài)執(zhí)行不是已完成就會是一個以失敗的狀態(tài),原因可能是缺少jar包或者是本地缺少hadoop3.1.3的環(huán)境,hadoop的環(huán)境官方的大佬說不是必須的,但是我在本地做這個案例的時候沒有hadoop會執(zhí)行報錯的,所以上面seatunnel引擎的公共模塊中的seatunnel.yaml配置里面配置了hdfs相關(guān)存儲的信息,所以還需要去hdfs上新建一個目錄如下:

st_web_basedir_path,ApacheSeatunnel

st_web_basedir_path,ApacheSeatunnel

??這個目錄不建立沒有試過會不會報錯,反正是有總比沒有好,本地沒有hapood會報如下錯誤:

st_web_basedir_path,ApacheSeatunnel

??大致上是任務(wù)在執(zhí)行的時候需要做一些任務(wù)的檢查點(diǎn)或保存點(diǎn)的數(shù)據(jù)狀態(tài)的存儲,上面那個報錯感覺是執(zhí)行了兩次或者是多個線程執(zhí)行過導(dǎo)致數(shù)據(jù)本來第一次是已經(jīng)同步過去了,后面有搞了一次就主鍵沖突導(dǎo)致任務(wù)狀態(tài)變成失敗了,有了hdfs就不會有這個報錯的,也是很神奇。

5.5 同步任務(wù)執(zhí)行的結(jié)果

??可以看到seatunnel庫中role表數(shù)據(jù)同步到seatunnel_copy數(shù)據(jù)庫中的role表中了

st_web_basedir_path,ApacheSeatunnel

6. 總結(jié)

??本地源碼編譯運(yùn)行已經(jīng)分享完了,這樣做是為了更好的理解這個項目,你可以跑起來在idea中本地兩邊的項目打上斷點(diǎn),使用debug調(diào)試跟蹤源碼,可以開發(fā)一個插件或者是為這個項目貢獻(xiàn)源碼,或者是用于學(xué)習(xí),通過欣賞項目的源碼來學(xué)習(xí)項目中的一些好的設(shè)計思路,我個人覺得這個項目的亮點(diǎn)有一下幾點(diǎn):
??第一:使用hazelcast(底層基于netty和socket)實現(xiàn)了內(nèi)核集群,同時也可以使用hazelcast的代client向hazelcast引擎服務(wù)提交一個任務(wù),然后該任務(wù)由web端或者是linux的控制臺提交到引擎服務(wù)上(提交的任務(wù)是一個json的文件,里面定義好了input、transform和sink這三個階段的信息),引擎服務(wù)又有master和work,主節(jié)點(diǎn)負(fù)責(zé)管理work節(jié)點(diǎn)的狀態(tài)和任務(wù)調(diào)度(任務(wù)需要下發(fā)到那個work節(jié)點(diǎn)上執(zhí)行,利用多機(jī)分布式來跑任務(wù)),并且會對任務(wù)做保存點(diǎn)or檢查點(diǎn)(有點(diǎn)像fink的保存點(diǎn)和檢查點(diǎn)的概念)。
??第二是插件機(jī)制:一個插件就是一個jar包,把公共的流程步驟高度抽象封裝到上層的api中,差異化的實現(xiàn)各種場景下的數(shù)據(jù)同步需求,數(shù)據(jù)源和插件是很豐富的
??第三是類加載器:實現(xiàn)了自己的類加載器,項目啟動就通過自己實現(xiàn)的類加載器加載指定路徑下的插件jar包,就是通過這種插件的加載機(jī)制來完成按需加載,插件的機(jī)制就是上一個插件的輸出作為下一個插件的輸入,數(shù)據(jù)在一個插件鏈條上滾動傳遞,有點(diǎn)像設(shè)計模式中的責(zé)任鏈模式。
??第四是三套引擎:默認(rèn)使用的是自研的SeaTunnelEngine,還支持flink和spark兩大引擎。
??上面只是我個人看到的一些優(yōu)點(diǎn),也沒有細(xì)細(xì)的看,就隨便看了下,或許還有我不曉得的新東西,上面的hazelcast可以研究學(xué)下下,插件機(jī)制和自定義類加載機(jī)制是可以應(yīng)用于我們平時的業(yè)務(wù)代碼開發(fā)中。
??有優(yōu)點(diǎn)同樣也存在缺點(diǎn),她是一個閃亮的星星還處于發(fā)展階段,相對來說還不是那么成熟,所以選型得慎重考慮,官方的文檔雖然是比較全的,但是基本是英文的并且篇幅比較短,字少事多,趕腳寫的不是那么詳細(xì),有的影藏的細(xì)節(jié)的東西,需要查看官方的公眾號的文章或者是看源碼中才能找到答案的,在遇到問題的時候最好的方法是找官方,尋求官方的幫助,加入官方的群聊,可以直接和大佬溝通,或者是你自己改源碼解決,感覺不太靠譜還是不要使用以免背鍋,本地構(gòu)建編譯如果你實在是編譯運(yùn)行不起來的話,多花一點(diǎn)時間是可以搞出來的,這個玩意我搞了有一個星期了吧,實在是有點(diǎn)蛋疼遇到各種奇葩的問題,在搞不出來,都有點(diǎn)想不搞了,放棄吧,但是一想在試一試結(jié)果還是被我搞出來了,堅持向下鑿水源距離你可能就差一步之遙了,其實也是可以不編譯構(gòu)建,欣賞下源碼也是不錯的選擇,然后不用把時間浪費(fèi)在這個構(gòu)建編譯上,其實是為了打斷點(diǎn)好調(diào)試一點(diǎn),光看代碼的話,也是只能瀏覽下看個大概,在學(xué)習(xí)研究這種開源的項目,也在只能是看他的官方文檔和其他的一些博客資料,邊搞邊猜,邊猜邊搞,慢慢的也基本上能搞通,需要參看好多的文章或信息,然后從中實踐出真知,所以我就寫了這篇文章總結(jié)了下,下一篇文章分享在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這個是官網(wǎng)的download下載的sourceCode包。文章來源地址http://www.zghlxwxcb.cn/news/detail-794912.html

到了這里,關(guān)于Apache Seatunnel本地源碼構(gòu)建編譯運(yùn)行調(diào)試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包