dolphinscheduler 官網地址 https://dolphinscheduler.apache.org/
dolphinscheduler GitHub地址 https://github.com/apache/dolphinscheduler
Apache DolphinScheduler是一個分散式去中心化,易擴充套件的視覺化DAG工作流任務排程平臺。致力於解決資料處理流程中錯綜複雜的依賴關係,不能直觀監控任務健康狀態等問題,使排程系統在資料處理流程中開箱即用;以DAG流式的方式將Task組裝起來,可實時監控任務的執行狀態,同時支援重試、從指定節點恢復失敗、暫停及Kill任務等操作。
Master/Worker
cpu load,memory,cpu線上檢視。Linux 作業系統版本要求:
作業系統 | 版本 |
---|---|
Red Hat Enterprise Linux | 7.0 及以上 |
CentOS | 7.0 及以上 |
Oracle Enterprise Linux | 7.0 及以上 |
Ubuntu LTS | 16.04 及以上 |
伺服器建議設定:DolphinScheduler 支援執行在 Intel x86-64 架構的 64 位通用硬體伺服器平臺。對生產環境的伺服器硬體設定有以下建議:
CPU | 記憶體 | 硬碟型別 | 網路 | 範例數量 |
---|---|---|---|---|
4核+ | 8 GB+ | SAS | 千兆網路卡 | 1+ |
注意:
- 以上建議設定為部署 DolphinScheduler 的最低設定,生產環境強烈推薦使用更高的設定
- 硬碟大小設定建議 50GB+ ,系統磁碟和資料盤分開
網路要求,DolphinScheduler正常執行提供如下的網路埠設定:
元件 | 預設埠 | 說明 |
---|---|---|
MasterServer | 5678 | 非通訊埠,只需本機埠不衝突即可 |
WorkerServer | 1234 | 非通訊埠,只需本機埠不衝突即可 |
ApiApplicationServer | 12345 | 提供後端通訊埠 |
注意:
- MasterServer 和 WorkerServer 不需要開啟網路間通訊,只需本機埠不衝突即可
- 管理員可根據實際環境中 DolphinScheduler 元件部署方案,在網路側和主機側開放相關埠
使用者端 Web 瀏覽器要求:DolphinScheduler 推薦 Chrome 以及使用 Chromium 核心的較新版本瀏覽器存取前端視覺化操作介面
如果是簡單體驗 DolphinScheduler 的功能則使用Standalone方式介面,這裡可以使用二進位制也可以docker方式安裝;如果想體驗更完整的功能或者更大的任務量推薦使用偽叢集部署,這裡可以使用二進位制也可以docker-compose方式安裝;如果你是在生產中使用,推薦使用叢集部署或者kubernetes;我們這裡則選擇更好理解其架構和組成的二進位制叢集部署方式。
# 下載最新版本3.0.0-beta-2,也可以選擇2.0.6
wget https://dlcdn.apache.org/dolphinscheduler/3.0.0-beta-2/apache-dolphinscheduler-3.0.0-beta-2-bin.tar.gz
# 解壓檔案
tar -xvf apache-dolphinscheduler-3.0.0-beta-2-bin.tar.gz
準備三臺伺服器安裝叢集,ZooKeeper和MySQL 使用之前文章已部署好的,下面前置準備工作和準備啟動環境都是在三臺上都要執行
安裝每一臺伺服器都準備下面的前置條件
pstree
psmisc
yum -y install psmiscsudo
免密。以建立 dolphinscheduler 使用者為例:# 建立使用者需使用 root 登入
useradd dolphinscheduler
# 新增密碼
echo "dolphinscheduler" | passwd --stdin dolphinscheduler
# 設定 sudo 免密
sed -i '$adolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
# 修改目錄許可權,使得部署使用者對二進位制包解壓後的 apache-dolphinscheduler-*-bin 目錄有操作許可權
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
注意:因為任務執行服務是以
sudo -u {linux-user}
切換不同 linux 使用者的方式來實現多租戶執行作業,所以部署使用者需要有 sudo 許可權,而且是免密的。初學習者不理解的話,完全可以暫時忽略這一點。如果發現/etc/sudoers
檔案中有 "Defaults requirett" 這行,也請註釋掉。
su dolphinscheduler
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 在執行install.sh機器上設定連線其他機器的免密
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/dolphinscheduler
scp ~/.ssh/id_rsa.pub [email protected]:/tmp/dolphinscheduler
# 在192.168.5.53和192.168.12.27上執行
cat /tmp/dolphinscheduler/id_rsa.pub >> ~/.ssh/authorized_keys
注意: 設定完成後,可以通過執行命令
ssh localhost
判斷是否成功,如果不需要輸入密碼就能ssh登陸則證明成功。
完成基礎環境的準備後,需要根據你的機器環境修改組態檔。組態檔可以在目錄 bin/env
中找到,他們分別是 並命名為 install_env.sh
和 dolphinscheduler_env.sh
。
install_env.sh修改內容如下:
ips=${ips:-"192.168.5.52,192.168.5.53,192.168.12.27"}
sshPort=${sshPort:-"22"}
masters=${masters:-"192.168.5.52,192.168.5.53"}
workers=${workers:-"192.168.5.52:default,192.168.5.53:default,192.168.12.27:default"}
alertServer=${alertServer:-"192.168.5.52"}
apiServers=${apiServers:-"192.168.5.53"}
installPath=${installPath:-"/tmp/dolphinscheduler"}
deployUser=${deployUser:-"dolphinscheduler"}
zkRoot=${zkRoot:-"/dolphinscheduler"}
dolphinscheduler_env.sh
JAVA_HOME
和 SPARK_HOME
都是在這裡定義的。zookeeper
。DolphinScheduler 後設資料儲存在關係型資料庫中,目前支援 PostgreSQL 和 MySQL,這裡使用 MySQL 8.0.28則需要手動下載 mysql-connector-java 驅動(8.0.28) 並移動到 DolphinScheduler 的 lib目錄下(tools/libs/
)。此外其他幾個模組也都需要mysql-connector-java-8.0.28.jar
cp tools/libs/mysql-connector-java-8.0.28.jar master-server
cp tools/libs/mysql-connector-java-8.0.28.jar worker-server/libs/
cp tools/libs/mysql-connector-java-8.0.28.jar alert-server/libs/
cp tools/libs/mysql-connector-java-8.0.28.jar api-server/libs/
設定資料庫和使用者
mysql -uroot -p
mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
# 修改 {user} 和 {password} 為你希望的使用者名稱和密碼
mysql> CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler123';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%';
mysql> CREATE USER 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler123';
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost';
mysql> FLUSH PRIVILEGES;
然後修改./bin/env/dolphinscheduler_env.sh
,將username和password改成你在上一步中設定的使用者名稱dolphinscheduler和密碼dolphinscheduler123
export DATABASE=${DATABASE:-mysql}
export SPRING_PROFILES_ACTIVE=${DATABASE}
export SPRING_DATASOURCE_URL="jdbc:mysql://192.168.50.95:3308/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true"
export SPRING_DATASOURCE_USERNAME=dolphinscheduler
export SPRING_DATASOURCE_PASSWORD=dolphinscheduler123
完成上述步驟後已為 DolphinScheduler 建立一個新資料庫,現在可以通過快速的 Shell 指令碼來初始化資料庫
sh tools/bin/upgrade-schema.sh
執行後我們檢視dolphinscheduler資料庫,部分表如下
使用上面建立的部署使用者dolphinscheduler執行以下命令完成部署,部署後的執行紀錄檔將存放在 logs 資料夾內
sh ./bin/install.sh
檢視結果已經成功啟動整個叢集,每一臺都執行設定模組部分
瀏覽器存取地址 http://192.168.5.53:12345/dolphinscheduler/ui 即可登入系統UI。webUi 在org.apache.dolphinscheduler.api.ApiApplicationServer部署的機器是哪個,預設的使用者名稱和密碼是 admin/dolphinscheduler123 ,登入後進入首頁,首頁包含使用者所有專案的任務狀態統計、流程狀態統計、工作流定義統計。DolphinScheduler 支援兩種型別的內建主題,包括 Dark
和 Light
。當您想改變主題時,只需單擊頂部控制欄在 語言 左側名為 Dark
(or Light
) 的按鈕即可。專案首頁包含該專案的任務狀態統計、流程狀態統計、工作流定義統計。這幾個指標的說明如下
如果需要在某臺伺服器上啟動所有設定的服務或者某個服務
# 一鍵停止叢集所有服務
sh ./bin/stop-all.sh
# 一鍵開啟叢集所有服務
sh ./bin/start-all.sh
# 啟停 Master
sh ./bin/dolphinscheduler-daemon.sh stop master-server
sh ./bin/dolphinscheduler-daemon.sh start master-server
# 啟停 Worker
sh ./bin/dolphinscheduler-daemon.sh start worker-server
sh ./bin/dolphinscheduler-daemon.sh stop worker-server
# 啟停 Api
sh ./bin/dolphinscheduler-daemon.sh start api-server
sh ./bin/dolphinscheduler-daemon.sh stop api-server
# 啟停 Alert
sh ./bin/dolphinscheduler-daemon.sh start alert-server
sh ./bin/dolphinscheduler-daemon.sh stop alert-server
可以檢視當前Master、Worker、DB的系統情況,包括CPU、記憶體和平均負載
安全中心只有管理員賬戶才有許可權操作,分別有佇列管理、租戶管理、使用者管理、告警組管理、worker分組管理、令牌管理等功能,在使用者管理模組可以對資源、資料來源、專案等授權。接下來先挑幾個必要功能操作下
worker.properties
組態檔中引數 worker.tenant.auto.create=true
實現當 linux 使用者不存在時自動建立該使用者。worker.tenant.auto.create=true
引數會要求 worker 可以免密執行 sudo
命令每個 worker 節點都會歸屬於自己的 worker 分組,預設分組為 default。在任務執行時,可以將任務分配給指定 worker 分組,最終由該組中的 worker 節點執行該任務。
conf/worker.properties
組態檔. 修改 worker.groups 引數.worker.properties
中的設定。worker:
groups:
- default
- bigdatabase
預設有一個default組,三臺Worker節點都在這個組裡
新建一個巨量資料基礎工作組,選擇Worker,確定即可。
登出退出系統後用前面建立的普通使用者testuser重新登入系統,切換到專案管理模組,點選「建立專案」按鈕,輸入專案名稱,專案描述,點選「提交」,建立演示專案
本篇最後我們就以一個簡單執行多個依賴的shell指令碼的工作流來揭開使用的大門。
進入工作流定義頁面,點選「建立工作流」按鈕,進入工作流DAG編輯頁面,工具列中拖拽 [外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-TVT7yVWw-1659111362070)(shell.png)] 到畫板中,新增一個Shell任務,如下圖所示
test.sh
,指令碼中呼叫資源命令為 sh test.sh
;其餘兩個節點也相同建立方式,建立後通過拖拉編排任務的依賴關係,也可以選擇任務節點後選擇前置任務;設定任務之間的依賴關係: 點選任務節點的右側加號連線任務;如下圖所示,任務 shell-nodeA 和任務shell-nodeB 並行執行,當任務shell-nodeA和任務shell-nodeB執行完shell-nodeC會同時執行。如要刪除依賴關係: 點選右上角"箭頭"圖示[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-QUQtvl6n-1659111362085)(arrow.png)],選中連線線,點選右上角"刪除"圖示[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-vIJI4yCV-1659111362088)(delete.png)],刪除任務間的依賴關係。
儲存工作流定義: 點選」儲存「按鈕,彈出"設定DAG圖名稱"彈框,如下圖所示,輸入工作流定義名稱,工作流定義描述,設定全域性引數(選填),點選"新增"按鈕,工作流定義建立成功。
進入工作流定義頁面,工作流定義列表的操作功能如下:
通過如下操作執行工作流,生成工作流範例
工作流範例可以點選重跑按鈕
檢視任務定義
檢視任務範例,我們重跑了一次因此任務範例有6個
可以多次繼續重跑,在任務範例列表操作按鈕還可以檢視紀錄檔和下載紀錄檔
**本人部落格網站 **IT小神 www.itxiaoshen.com