在大資料處理領域,Apache SeaTunnel 已成為一款備受青睞的開源資料整合平臺,它不僅可以基於Apache Spark和Flink,而且還有社群單獨開發專屬資料整合的Zeta引擎,提供了強大的資料處理能力。隨著SeaTunnel Web的推出,使用者介面(UI)操作變得更加友好,專案部署和管理更加便捷。
本指南旨在提供一個簡明扼要的步驟,幫助使用者成功部署SeaTunnel及其Web介面。小主已經把可能遇到的坑都填過了,希望大家都能安安穩穩上路,不掉坑,話不多說,走起~
1.預置環境
1.1.所需軟體包及版本要求
-
CentOS 7.6.18_x86_64
-
JDK >= 1.8.151
-
Maven >= 3.6.3
-
Apache Seatunnel ==2.3.3
-
Apache Seatunnel Web == 1.0.0
-
MySQL >= 5.7.28
1.2.下載地址
官網下載入口: 下載入口
apache-seatunnel-2.3.3: apache-seatunnel-2.3.3-bin.tar.gz
apache-seatunnel-web-1.0.0: apache-seatunnel-web-1.0.0
1.3.準備工作
1.3.1.安裝JDK
安裝及配置系統環境變數略過,自行百度
1.3.2.安裝Maven
安裝及配置系統環境變數、配置阿里雲倉庫映象, 略過,自行百度
1.3.3.建立安裝軟體目錄
建立SeaTunnel後端服務安裝目錄
mkdir -p /opt/bigdata/seatunnel-2.3.3/backend
建立SeaTunnel前端服務安裝目錄
mkdir -p /opt/bigdata/seatunnel-2.3.3/web
1.3.4.下載或者本地上傳安裝包
下載apache-seatunnel-2.3.3-bin.tar.gz
進入1.3.2中建立好的安裝目錄
cd /opt/bigdata/seatunnel-2.3.3/backend
下載安裝包
wget https://dlcdn.apache.org/seatunnel/2.3.3/apache-seatunnel-2.3.3-bin.tar.gz
下載[apache-seatunnel-web-1.0.0.tar.gz
進入1.3.2中建立好的安裝目錄
cd /opt/bigdata/seatunnel-2.3.3/web
下載安裝包
wget https://dlcdn.apache.org/seatunnel/seatunnel-web/1.0.0/apache-seatunnel-web-1.0.0-bin.tar.gz
如果你已經將安裝包下載到本地, 可透過FTP工具上傳安裝包到前後端各自的安裝目錄。
2.安裝Apache Seatunnel
2.1.解壓安裝包
解壓後端安裝包
tar -zxf /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3-bin.tar.gz
重新命名安裝包
mv apache-seatunnel-2.3.3-bin apache-seatunnel-2.3.3
解壓前端安裝包
tar -zxf /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0-bin.tar.gz
重新命名安裝包
mv apache-seatunnel-web-1.0.0-bin apache-seatunnel-web-1.0.0
2.2.配置環境變數
在/etc/profile
中配置環境變數
讓修改配置立即生效
source /etc/profile
2.3.下載JAR包
2.3.1.建立目錄
mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/flink
mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/flink-sql
mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/spark
mkdir -p /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/seatunnel
2.3.2.修改下載指令碼
下載指令碼的位置
/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/bin
修改install-plugin.sh之前請先備份
mvn加速下載seatunnel相關jar包
安裝seatunnel過程中,解壓檔案後官方預設提供的connector的jar包只有2個,要想連線mysql,oracle,SqlServer,hive,kafka,clickhouse,doris等時,還需下載對應的jar包。
使用本地Maven加速下載connector相關jar包
seatunnel下載connector的jar時,使用mvnw來下載jar包,預設是從https://repo.maven.apache.org 下載,速度及其緩慢。我們可以改成自己在linux系統上安裝的mvn,配置阿里雲遠端倉庫地址,從阿里雲mvn源下載會快很多, 下面教大家如何進行修改。
修改其安裝外掛相關指令碼,複製bin目錄下install-plugin.sh重新命名為install-plugin.sh.bak
替換指令碼中的${SEATUNNEL_HOME}/mvnw為mvn,即可使用本地mvn,配合阿里雲的mvn源,可加速下載。
2.3.3.執行下載
自動下載
執行命令即可,一般不推薦,因為從官網下載速度太慢,可以透過修改相關的程式碼進行手動加速下載。
系統預設自動下載時會下載所有的聯結器JAR, 如果暫時不需要使用, 可以在執行下載指令碼執行之前先在/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/config/pulgun_config
配置中註釋掉不需要的聯結器
shell
sh /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/bin/install-plugin.sh
自動下載完成之後, 將/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/seatunnel
下所有的jar包都複製到/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib
目錄下
手動下載
修改程式碼,透過阿里雲的mvn源快速下載,然後將相關jar包複製到對應目錄即可。
seatunnel-connectors下載地址
注意:下載jar複製到兩個資料夾,一個是lib資料夾,一個是connectors/seatunnel
資料夾。
2.3.4.測試驗證
進入安裝目錄
cd /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3
啟動服務
./bin/seatunnel.sh --config ./config/v2.batch.config.template -e local
2.4.啟動服務
進入安裝目錄
cd /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3
啟動服務
nohup sh bin/seatunnel-cluster.sh 2>&1 &
在seatunnel的安裝目錄下檢視日誌
tail -f logs/seatunnel-engine-server.log
有以下類似資訊列印出,說明啟動成功。
必須保證Apache SeaTunnel的Server正常執行,Web端服務才能正常執行。
3.安裝Apache Seatunnel Web
3.1.安裝配置Seatunnel引擎叢集
在SeaTunnel的Web端機器上需要安裝SeaTunnel客戶端,如果服務端與Web端在同一臺機器,則可直接跳過這個步驟。
本文件的安裝過程中,Seatunnel服務端和web是安裝在同一臺機器上, 所以直接跳過此步安裝步驟。
這裡所說的Seatunnel引擎客戶端其實就是我們章2中安裝的Seatunnel服務端, 下面講解一下如何進行Seatunnel叢集的安裝配置
3.1.1.準備伺服器節點
我們現在需要搭建Seatunnel引擎叢集,需要準備n臺伺服器節點, 我這裡使用了3臺伺服器。比如, 已知我們的3臺伺服器的IP分別是
192.168.1.110
192.168.1.111
192.168.1.112
我們直接在章2
中已經安裝部署好的Seatunnel單節點中進行叢集的配置,主要的配置修改包含以下幾項:
3.1.2.修改JVM引數
在seatunnel的安裝目錄,找到$SEATUNNEL_HOME/bin/seatunnel-cluster.sh
將 JVM 選項新增到$SEATUNNEL_HOME/bin/seatunnel-cluster.sh第一行
JAVA_OPTS=“-Xms2G -Xmx2G”
如果不想這樣進行修改,也可以, 不過需要在進行叢集啟動時,自行增加JVM引數進行啟動, 啟動命令如下:
nohup sh $SEATUNNEL_HOME/bin/seatunnel-cluster.sh -DJvmOption="-Xms2G -Xmx2G" 2>&1 &
3.1.3.SeaTunnel Engine配置
SeaTunnel Engine Server配置是在sh $SEATUNNEL_HOME/config/seatunnel.yaml
.
詳細配置想可參考官方文件4. Config SeaTunnel Engine,這裡不贅述
3.1.4.SeaTunnel Engine Server配置
SeaTunnel Engine Server配置是在sh $SEATUNNEL_HOME/config/hazelcast.yaml
.
叢集名稱配置
SeaTunnel Engine 節點使用叢集名稱來確定對方是否與自己是一個叢集。 如果兩個節點之間的叢集名稱不同,SeaTunnel 引擎將拒絕服務請求。
網路配置
SeaTunnel Engine 叢集基於 Hazelcast,是執行 SeaTunnel Engine Server 的叢集成員的網路。 叢集成員自動連線在一起形成叢集。 這種自動加入是透過叢集成員用來查詢彼此的各種發現機制來實現的。
請注意,叢集形成後,叢集成員之間的通訊始終透過 TCP/IP 進行,無論使用何種發現機制。
SeaTunnel 引擎使用以下發現機制。
TCP
您可以將 SeaTunnel Engine 配置為完整的 TCP/IP 叢集。 有關配置詳細資訊,請參閱透過 TCP 發現成員部分。
hazelcast.yaml
配置示例如下:
hazelcast:
cluster-name: seatunnel
network:
join:
tcp-ip:
enabled: true
member-list:
- hostname1
port:
auto-increment: false
port: 5801
properties:
hazelcast.logging.type: log4j2
在獨立 SeaTunnel 引擎叢集中我們建議使用TCP方式。
另一方面,Hazelcast 提供了一些其他的服務發現方法。 詳情請參考hazelcast網
3.1.4.3 Map配置
- type
imap持久化型別,目前僅支援hdfs。
- namespace
命令空間用於區分不同業務的資料儲存位置,例如OSS的桶名。
- clusterName
這個引數主要用於叢集隔離,我們可以透過這個來區分不同的叢集,比如cluster1、cluster2,這個也可以用來區分不同的業務
- fs.defaultFS
We used hdfs api read/write file, so used this storage need provide hdfs configuration
if you used HDFS, you can config like this:
map:
engine*:
map-store:
enabled: true
initial-mode: EAGER
factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
properties:
type: hdfs
namespace: /tmp/seatunnel/imap
clusterName: seatunnel-cluster
storage.type: hdfs
fs.defaultFS: hdfs://localhost:9000
如果沒有 HDFS 並且您的叢集只有一個節點,您可以配置為使用本地檔案,如下所示:
map:
engine*:
map-store:
enabled: true
initial-mode: EAGER
factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
properties:
type: hdfs
namespace: /tmp/seatunnel/imap
clusterName: seatunnel-cluster
storage.type: hdfs
fs.defaultFS: file:///
如果你使用OSS,你可以這樣配置:
map:
engine*:
map-store:
enabled: true
initial-mode: EAGER
factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory
properties:
type: hdfs
namespace: /tmp/seatunnel/imap
clusterName: seatunnel-cluster
storage.type: oss
block.size: block size(bytes)
oss.bucket: oss://bucket name/
fs.oss.accessKeyId: OSS access key id
fs.oss.accessKeySecret: OSS access key secret
fs.oss.endpoint: OSS endpoint
fs.oss.credentials.provider: org.apache.hadoop.fs.aliyun.oss.AliyunCredentialsProvider
3.1.5.SeaTunnel Engine Client配置
SeaTunnel Engine Client配置是在sh $SEATUNNEL_HOME/config/hazelcast-client.yaml
.
叢集名稱配置
客戶端必須與 SeaTunnel 引擎具有相同的叢集名稱。 否則,SeaTunnel 引擎將拒絕客戶端請求。
網路配置
cluster-members
所有 SeaTunnel 引擎伺服器節點地址都需要新增到此處。
hazelcast-client:
cluster-name: seatunnel
properties:
hazelcast.logging.type: log4j2
network:
cluster-members:
- hostname1:5801
3.1.6.啟動Seatunnel引擎服務端節點
mkdir -p $SEATUNNEL_HOME/logs
cd $SEATUNNEL_HOME
./bin/seatunnel-cluster.sh -d
如果叢集存在多臺節點, 需要啟動所有節點上的Seatunnel引擎服務。
3.1.7.安裝Seatunnel引擎客戶端並啟動
您只需將SeaTunnel引擎節點上的安裝目錄目錄複製到客戶端節點主機的相同安裝目錄下,並像SeaTunnel引擎伺服器節點一樣配置SEATUNNEL_HOME,之後啟動服務即可。
3.2.配置Seatunnel Web服務
3.2.1.資料庫初始化
修改資料庫連線配置
將script/seatunnel_server_env.sh
相關配置改為你的對應的資料庫資訊
以上截圖中原始檔案中配置的是HOSTNAME,PORT,USERNAME,PASSWORD
等,但是因為的機器上有全域性配置檔案也用了這幾個變數名,但是連結的資料庫資訊和seatunnel連線的資料庫不是一個資料庫, 因為名稱衝突導致在啟動web服務時連線資料哭失敗,
所以我這裡修改了seatunnel_server_env.sh
和init_sql.sh
指令碼中的HOSTNAME,PORT,USERNAME,PASSWORD
可以加上字首SEATUNNEL_
,變成了
SEATUNNEL_HOSTNAME,SEATUNNEL_PORT,SEATUNNEL_USERNAME,SEATUNNEL_PASSWORD
一定要記住, 如果你按照文件修改了seatunnel_server_env.sh
指令碼的變數名, 一定要將init_sql.sh
指令碼中對應的變數名稱進行同步修改,如下圖:
執行初始化資料庫命令
進入seatunnel-web的安裝目錄,然後執行命令sh init_sql.sh
,無異常則執行成功。
3.2.2.配置WEB後端服務
修改後端基礎配置
web後端服務的配置檔案都在${web安裝目錄}/conf
下
vim conf/application.yml
修改埠號和資料來源連線資訊
配置client資訊
將seatunnel引擎服務節點的安裝目錄下的config目錄下的關於引擎客戶端的配置檔案複製到seatunnel-web安裝目錄下的conf目錄下
同一臺機器下部署直接使用以下複製命令(注意修改服務的安裝目錄為你自己的安裝目錄)
sudo cp /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/config/hazelcast-client.yaml /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/conf
如果不在同一臺機器上, 可以使用scp命令或者下載下來然後上傳到web服務的安裝主機的安裝目錄下的conf目錄下即可。
配置支援的外掛資訊
將seatunnel引擎服務節點的安裝目錄下的connectors目錄下的plugin-mapping.properties配置檔案複製到seatunnel-web安裝目錄下的conf目錄下
sudo cp /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/connectors/plugin-mapping.properties /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/conf
同一臺機器下部署直接使用以下複製命令(注意修改服務的安裝目錄為你自己的安裝目錄)如果不在同一臺機器上, 可以使用scp命令或者下載下來然後上傳到web服務的安裝主機的安裝目錄下的conf目錄下即可。
3.2.3.下載配置資料來源JAR包
這一步非常關鍵, 這一步如果沒有配置好, 即使你正常啟動了web應用,可能也會遇到下列問題:
- 資料來源型別選擇頁面為空, 我這裡因為正常配置, 所以正常顯示
- 沒有Source或者Sink進行選擇
- 任務無法正常執行
獲取下載指令碼
資料來源JAR包的下載指令碼在seatunnel-web
的原始碼包中存在,它的目錄在:
修改配置檔案如下:
執行指令碼,下載資料來源JAR包
正在下載
成功下載下所有的datasourceJAR包
上傳到Seatunnel-Web專案的libs目錄
將以上所有jar包複製到/opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/libs
目錄下
上傳到Seatunnel引擎服務的lib目錄
將以上所有jar包複製到/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib
目錄下
3.2.4.配置後設資料MySQL的驅動JAR包
MySQL的驅動包mysql-connector-java-8.0.20.jar
自行下載
上傳到SeaTunnel引擎服務的lib目錄
將mysql-connector-java-8.0.20.jar
包複製到/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib
下
3.2.5.啟動WEB服務
這一步也很容易出錯,很多人都配置對了,但是最後啟動起來,發現無法透過瀏覽訪問, 檢視日誌列印如下:
造成這樣的問題就是你執行啟動命令的位置不對, 注意web服務安裝之後的目錄結構如下圖:
所以啟動服務必須要保證服務可以訪問到ui目錄下的index.html檔案才可以,因為專案啟動前端的專案路徑預設新增了/ui的字首,所以後端專案的啟動路徑必須在ui目錄的父級目錄才可以,所以這裡需要再web服務的安裝目錄下執行啟動指令碼,舉例:
我這裡的安裝目錄是/opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0
, 所以我這裡直接切換到該目錄下,執行以下啟動命令:
#進入web服務的安裝目錄
cd /opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0
#執行啟動指令碼
sudo sh bin/seatunnel-backend-daemon.sh start
訪問http://主機IP:12306
(此埠為conf/application.yml
中配置的埠), 頁面自動跳轉到http://主機IP:12306/ui
,
預設登入的使用者名稱和密碼:
username:admin
password:admin
OK, 至此所有的搭建流程就結束了。
4.資源連結
這裡面有些資源的下載特別慢, 這裡將整個配置好的前後端的專案資源打包存放到百度網盤,地址如下:
Seatunnel引擎及Web服務一鍵安裝包
提取碼:rryz
下載下來之後,修改所有涉及資料庫連線的配置檔案為你自己的連線配置資訊, 然後執行3.2.1小節
的初始化資料庫命令, 然後依次啟動SeaTunnel引擎服務、Web服務即可。
透過遵循上述步驟,你應該能夠成功部署SeaTunnel及其Web介面。這將為你的大資料處理任務提供一個強大的工具,同時享受到基於Web的介面帶來的便利。如果在部署過程中遇到任何問題,不要猶豫,查閱SeaTunnel官方文件或加入社群尋求幫助。
創作不易,對您有幫助,點個讚唄,感謝~~~~
本文由 白鯨開源 提供釋出支援!