一、簡述
Apache DolphinScheduler是一個分散式去中心化,易擴充套件的視覺化DAG工作流任務排程系統。致力於解決資料處理流程中錯綜複雜的依賴關係,使排程系統在資料處理流程中開箱即用。有如下特性:
高可靠性
去中心化的多Master和多Worker, 自身支援HA功能, 採用任務佇列來避免過載,不會造成機器卡死
簡單易用
DAG監控介面,所有流程定義都是視覺化,通過拖拽任務定製DAG,通過API方式與第三方系統對接, 一鍵部署
豐富的使用場景
支援暫停恢復操作. 支援多租戶,更好的應對大資料的使用場景. 支援更多的任務型別,如 spark, hive, mr, python, sub_process, shell
高擴充套件性
支援自定義任務型別,排程器使用分散式排程,排程能力隨叢集線性增長,Master和Worker支援動態上下線
二、搭建過程
1.環境配置
叢集服務劃分:
192.168.30.141 s141 (master)
192.168.30.142 s142 (master)
192.168.30.143 s143 (api)
192.168.30.144 s144 (worker)
192.168.30.145 s145 (worker)
192.168.30.146 s146 (worker)
192.168.30.147 s147 (worker)
1>安裝軟體
PostgreSQL (8.2.15+) or MySQL (5.7系列) : 兩者任選其一即可, 如MySQL則需要JDBC Driver 5.1.47+
JDK (1.8+) : 必裝,請安裝好後在/etc/profile下配置 JAVA_HOME 及 PATH 變數
ZooKeeper (3.4.6+) :必裝
Hadoop (2.6+) or MinIO :選裝,如果需要用到資源上傳功能,可以選擇上傳到Hadoop or MinIO上
注意:DolphinScheduler本身不依賴Hadoop、Hive、Spark,僅是會呼叫他們的Client,用於對應任務的提交。
2>建立部署使用者
# 建立使用者需使用root登入,設定部署使用者名稱,請自行修改,後面以dolphinscheduler為例 useradd dolphinscheduler; # 設定使用者密碼,請自行修改,後面以111111為例 echo "111111" | passwd --stdin dolphinscheduler # 配置sudo免密 echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers
注意: - 因為是以 sudo -u {linux-user} 切換不同linux使用者的方式來實現多租戶執行作業,所以部署使用者需要有 sudo 許可權,而且是免密的。 - 如果發現/etc/sudoers檔案中有"Default requiretty"這行,也請註釋掉 - 如果用到資源上傳的話,還需要在`HDFS或者MinIO`上給該部署使用者分配讀寫的許可權
3>配置host對映和ssh打通
vim /etc/hosts 192.168.30.141 s141 192.168.30.142 s142 192.168.30.143 s143 192.168.30.144 s144 192.168.30.145 s145 192.168.30.146 s146 192.168.30.147 s147
在s141上,切換到部署使用者並配置ssh本機免密登入(其他機器同理)
su dolphinscheduler; ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
注意:正常設定後,dolphinscheduler使用者在執行命令ssh localhost
是不需要再輸入密碼的
在s141上,配置部署使用者dolphinscheduler ssh打通到其他待部署的機器(其他機器同理)
su dolphinscheduler; for ip in s142 s143 s144 s145 s146 s147; #請將此處s142 s143等替換為自己要部署的機器的hostname do ssh-copy-id $ip #該操作執行過程中需要手動輸入dolphinscheduler使用者的密碼 done # 當然 通過 sshpass -p xxx ssh-copy-id $ip 就可以省去輸入密碼了
在s141上,修改目錄許可權,建立並使得部署使用者對/opt/dolphinscheduler目錄有操作許可權(其他機器同理)
cd /opt
mkdir dolphinscheduler
sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler
2.安裝包獲取
可以下載最新版本的後端安裝包,也可以從github上clone原始碼自己打包,推薦後者,可以先把datasource.properties中資料庫連線修改為對應的,把dolphinscheduler_env.sh中環境變數修改自己對應的位置,將程式碼包上傳至伺服器 /opt/dolphinscheduler 下
3.安裝指令碼
該指令碼只啟動了worker,如果要啟動其他服務,可以解開註釋或新增對應服務的命令即可,劃分好叢集中各機器部署的服務,對應相應的指令碼
#!/bin/sh workDir=`dirname $0` workDir=`cd ${workDir};pwd` files=$(ls -l /opt/dolphinscheduler/ |awk '/^-/ {print $NF}' | grep 'apache-dolphinscheduler-incubating') file='' for i in $files do file=$i done tar -zxvf $workDir/$file -C $workDir ds_dir=${file%%.tar.gz*} #sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop master-server sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop worker-server #sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop api-server rm -rf $workDir/dolphinscheduler echo "mv $workDir/$ds_dir to $workDir/dolphinscheduler" mv $workDir/$ds_dir $workDir/dolphinscheduler chmod 755 $workDir/dolphinscheduler/bin/* sed -i 's/\r$//' $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh sed -i 's/\r$//' $workDir/dolphinscheduler/conf/env/dolphinscheduler_env.sh #sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh start worker-server #sh $workDir/dolphinscheduler/bin/dolphinscheduler-daemon.sh start api-server
4.部署
這裡使用Alibaba Cloud Toolkit外掛,可以很方便部署到多臺機器上
檢視服務:
叢集服務啟動成功
訪問頁面:http://192.168.30.143:12345/dolphinscheduler
部署成功