Apache SeaTunnel 及 Web 功能部署指南(小白版)

海豚调度發表於2024-03-01

在大資料處理領域,Apache SeaTunnel 已成為一款備受青睞的開源資料整合平臺,它不僅可以基於Apache Spark和Flink,而且還有社群單獨開發專屬資料整合的Zeta引擎,提供了強大的資料處理能力。隨著SeaTunnel Web的推出,使用者介面(UI)操作變得更加友好,專案部署和管理更加便捷。

file

本指南旨在提供一個簡明扼要的步驟,幫助使用者成功部署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

file

1.2.下載地址

官網下載入口: 下載入口

apache-seatunnel-2.3.3: apache-seatunnel-2.3.3-bin.tar.gz

file

apache-seatunnel-web-1.0.0: apache-seatunnel-web-1.0.0

file

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
file

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
file

解壓前端安裝包

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
file

2.2.配置環境變數

/etc/profile中配置環境變數
file
讓修改配置立即生效

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

file

2.3.2.修改下載指令碼

下載指令碼的位置

/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/bin
file

修改install-plugin.sh之前請先備份

mvn加速下載seatunnel相關jar包

安裝seatunnel過程中,解壓檔案後官方預設提供的connector的jar包只有2個,要想連線mysql,oracle,SqlServer,hive,kafka,clickhouse,doris等時,還需下載對應的jar包。

file

使用本地Maven加速下載connector相關jar包

seatunnel下載connector的jar時,使用mvnw來下載jar包,預設是從https://repo.maven.apache.org 下載,速度及其緩慢。我們可以改成自己在linux系統上安裝的mvn,配置阿里雲遠端倉庫地址,從阿里雲mvn源下載會快很多, 下面教大家如何進行修改。

修改其安裝外掛相關指令碼,複製bin目錄下install-plugin.sh重新命名為install-plugin.sh.bak

file

替換指令碼中的${SEATUNNEL_HOME}/mvnw為mvn,即可使用本地mvn,配合阿里雲的mvn源,可加速下載。

file

2.3.3.執行下載

自動下載

執行命令即可,一般不推薦,因為從官網下載速度太慢,可以透過修改相關的程式碼進行手動加速下載。

系統預設自動下載時會下載所有的聯結器JAR, 如果暫時不需要使用, 可以在執行下載指令碼執行之前先在/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/config/pulgun_config配置中註釋掉不需要的聯結器
file

shell
sh /opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/bin/install-plugin.sh

file

自動下載完成之後, 將/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

file

file
file
file

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 有以下類似資訊列印出,說明啟動成功。

file

必須保證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

file

將 JVM 選項新增到$SEATUNNEL_HOME/bin/seatunnel-cluster.sh第一行

JAVA_OPTS=“-Xms2G -Xmx2G”

file

如果不想這樣進行修改,也可以, 不過需要在進行叢集啟動時,自行增加JVM引數進行啟動, 啟動命令如下:

nohup sh $SEATUNNEL_HOME/bin/seatunnel-cluster.sh -DJvmOption="-Xms2G -Xmx2G" 2>&1 &

file

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相關配置改為你的對應的資料庫資訊

file
file

以上截圖中原始檔案中配置的是HOSTNAME,PORT,USERNAME,PASSWORD等,但是因為的機器上有全域性配置檔案也用了這幾個變數名,但是連結的資料庫資訊和seatunnel連線的資料庫不是一個資料庫, 因為名稱衝突導致在啟動web服務時連線資料哭失敗,

所以我這裡修改了seatunnel_server_env.shinit_sql.sh指令碼中的HOSTNAME,PORT,USERNAME,PASSWORD可以加上字首SEATUNNEL_,變成了

SEATUNNEL_HOSTNAME,SEATUNNEL_PORT,SEATUNNEL_USERNAME,SEATUNNEL_PASSWORD

一定要記住, 如果你按照文件修改了seatunnel_server_env.sh指令碼的變數名, 一定要將init_sql.sh指令碼中對應的變數名稱進行同步修改,如下圖:
file

執行初始化資料庫命令

進入seatunnel-web的安裝目錄,然後執行命令sh init_sql.sh,無異常則執行成功。

file

3.2.2.配置WEB後端服務

修改後端基礎配置

web後端服務的配置檔案都在${web安裝目錄}/conf

file

vim conf/application.yml修改埠號和資料來源連線資訊

file

配置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應用,可能也會遇到下列問題:

  • 資料來源型別選擇頁面為空, 我這裡因為正常配置, 所以正常顯示

file

  • 沒有Source或者Sink進行選擇

file

  • 任務無法正常執行
獲取下載指令碼

資料來源JAR包的下載指令碼在seatunnel-web的原始碼包中存在,它的目錄在:

file

修改配置檔案如下:

file

執行指令碼,下載資料來源JAR包

file

正在下載

file

成功下載下所有的datasourceJAR包

file

上傳到Seatunnel-Web專案的libs目錄

將以上所有jar包複製到/opt/bigdata/seatunnel-2.3.3/web/apache-seatunnel-web-1.0.0/libs目錄下

file

上傳到Seatunnel引擎服務的lib目錄

將以上所有jar包複製到/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib目錄下

file

3.2.4.配置後設資料MySQL的驅動JAR包

MySQL的驅動包mysql-connector-java-8.0.20.jar自行下載

file

上傳到SeaTunnel引擎服務的lib目錄

mysql-connector-java-8.0.20.jar包複製到/opt/bigdata/seatunnel-2.3.3/backend/apache-seatunnel-2.3.3/lib

file

3.2.5.啟動WEB服務

這一步也很容易出錯,很多人都配置對了,但是最後啟動起來,發現無法透過瀏覽訪問, 檢視日誌列印如下:

file

造成這樣的問題就是你執行啟動命令的位置不對, 注意web服務安裝之後的目錄結構如下圖:

file

所以啟動服務必須要保證服務可以訪問到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

file

file

OK, 至此所有的搭建流程就結束了。

4.資源連結

這裡面有些資源的下載特別慢, 這裡將整個配置好的前後端的專案資源打包存放到百度網盤,地址如下:

Seatunnel引擎及Web服務一鍵安裝包

提取碼rryz

下載下來之後,修改所有涉及資料庫連線的配置檔案為你自己的連線配置資訊, 然後執行3.2.1小節的初始化資料庫命令, 然後依次啟動SeaTunnel引擎服務、Web服務即可。

透過遵循上述步驟,你應該能夠成功部署SeaTunnel及其Web介面。這將為你的大資料處理任務提供一個強大的工具,同時享受到基於Web的介面帶來的便利。如果在部署過程中遇到任何問題,不要猶豫,查閱SeaTunnel官方文件或加入社群尋求幫助。

創作不易,對您有幫助,點個讚唄,感謝~~~~

本文由 白鯨開源 提供釋出支援!

相關文章