1. 概述
FineDataLink 支援使用 Kafka 作為資料同步的中間軟體,暫存來源資料庫中的資料,便於目標資料庫寫入資料,實現實時資料同步。
本文介紹 Kafka ZooKeeper 模式的部署方案,以便後續 配置管道任务
注1:此範例為 Linux 系統下部署 Kafka;Kafka 建議安裝在 Linux 系統中(Kafka 也支援安裝在 Windows 中,但效能會受到限制,僅做示範使用,不建議用於生産環境 )。
注2:Kafka KRaft 模式的部署方案請參見:部署Kafka:KRaft模式
注3:目前産品不支援 Kafka 叢集。
2. KRaft 模式與 ZooKeeper 模式說明
詳情請參見:KRaft 模式與 ZooKeeper 模式說明
3. 前提條件
Kafka 運作需要 Java 環境,因此需要確定伺服器中已經指定了可使用的 Java 環境(指定 JAVA_HOME環境變數)。注:JDK 版本不能低於 1.8。
注:若 kafka 和 FineDataLink 部署在同一個伺服器上,可以使用同一個 JAVA 環境,操作步驟如下:
在 etc/profile 檔案中配置 Java環境,增加如下內容:
注:下面程式碼中%FineDataLink%更換為實際 FineDataLink 安裝路徑。
並執行source /etc/profile儲存,使修改立即生效。
Kafka 效能可參考官方文檔: Apache Kafka
4. 操作步驟
點選下載安裝包:Kafka 安裝包
4.1 解壓安裝包
上傳 kafka 安裝包。
注:可以將 Kafka 安裝在任意Linux 環境中,如果Kafka 和FDL不在一台伺服器上,Kafka就需要進行一些單獨配置實現 Kafka 的跨伺服器存取,可參見 增加配置。
使用命令 tar zxvf kafka安裝包檔案名稱.tgz 解壓安裝包,例如如下圖所示:
注:(請勿直接在windows環境下解壓後,進行檔案上傳,這樣會造成檔案被修改,常見報錯:/bin/bash^M: 壞的解譯器: 沒有那個檔案或目錄)
4.2 修改 Kafka 儲存資料的目錄
注:使用者也可忽略本節內容,使用預設資料儲存位置。
Kafka 在使用時需要儲存資料到指定資料夾,因此需要建立資料夾用來存放暫存在 Kafka 中的資料。
範例在 /data 目錄下建立:kafka-logs,如下圖所示:
注:建議資料夾建立在伺服器中磁碟空間相對大的位置,資料夾位置可自行設定。
開啟 Kafka 安裝目錄下的 config 檔案中的 server.properties 檔案,找到 log.dirs=,修改資料儲存位置,把等於號後邊的值更換為建立好的給 Kafka 儲存資料的目錄,修改之後儲存。如下圖所示:
注:此處路徑為範例,使用者可根據實際情況設定儲存資料目錄位置。
4.3 修改 listeners
如果 kafka 和 FDL 不在同一個伺服器,則需要修改 server.properties 檔案的 listeners。詳情請參見:增加配置
若 kafka 和 FDL 在同一個伺服器,忽略本節內容。
注:Kafka 配置中無需指定 topic,FineDataLink 會自動建立,每張表對應一個topic。
4.4 修改 zookeeper 資料儲存目錄
範例在 /data 目錄下建立:zookeeper 資料夾,如下圖所示:
注:資料夾位置可自行設定。
開啟 Kafka 安裝目錄下的 config 檔案中的 zookeeper.properties 檔案,找到 dataDir=,修改資料儲存位置,把等於號後邊的值更換為建立好的給 Kafka 儲存資料的目錄,修改之後儲存。如下圖所示:
4.5 啟動 Kafka
1)啟動 zookeeper
由於 kafka 服務依賴於zookeeper 服務,使用 kafka 自帶的 zookeeper,進入 Kafka 目錄,使用命令:cd /.../kafka_2.13-2.8.1
執行命令啟動 zookeeper。
2)查看 zookeeper 運作狀態
執行命令 ps -ef|grep zookeeper 查看是否啟動成功。 若顯示類似如下 18300 的進程號的記錄,則表示啟動成功。
3)啟動 Kafka
執行 nohup ./bin/kafka-server-start.sh ./config/server.properties >./kafka.log 2>&1 &
4)查看 Kafka 運作狀態
執行命令 ps -ef|grep kafka 查看是否啟動成功。 若顯示類似如下 18300 的進程號的記錄,則表示啟動成功。
注:關閉 Kafka 步驟為先關閉 Kafka,再關閉 zookeeper,命令詳情見本文第5節。
5. 後續步驟
安裝部署好 Kafka 後,即可在 FinedataLink 中配置传输队列