目錄
一. Apache DolphinScheduler 背景
二. Apache DolphinScheduler 介紹
三. Apache DolphinScheduler 特性
四. Apache DolphinScheduler 單機部署流程
1. Linux 作業系統版本要求
2. 服務器建議配置
3. 基礎軟體安裝
4. 下載二進制 tar.gz 包并安裝
5. 創建部署用戶并賦予目錄操作權限
6. ssh 免密配置
7. 資料庫初始化
8. 修改運行引數
9. 一鍵部署
10. 登錄系統
11. 啟停服務
一. Apache DolphinScheduler 背景
2017年,易觀在運營自己 6.8Pb 大小、6.02 億月活、每天近萬個調度任務的大資料平臺時,受到 ETL (資料倉庫技術) 復雜的依賴關系、平臺易用性、可維護性及二次開發等方面的問題,技術團隊渴望找到一個具有以下功能的資料調度工具:
- 易于使用,開發人員可以通過非常簡單的拖拽操作構建ETL程序;
- 不僅對于 ETL 開發人員,無法撰寫代碼的人也可以使用此工具進行 ETL 操作,例如系統管理員和分析師;
- 解決 “復雜任務依賴” 問題,并且可以實時監視 ETL 運行狀態;
- 支持多租戶;
- 支持許多任務型別:Shell,MR,Spark,Flink,SQL(mysql,postgresql,hive,sparksql,clickhouse等),DataX,Sqoop,Python,Sub_Process,Procedure 等;
- 支持HA和線性可擴展性,
易觀技術團隊意識到現有開源專案沒有能夠達到他們要求的,因此決定自行開發這個工具,
他們在2017年底設計了 DolphinScheduler 的主要架構;2018年5月完成第一個內部使用版本,后來又迭代了幾個內部版本后,系統逐漸穩定下來,
二. Apache DolphinScheduler 介紹

Apache DolphinScheduler (Incubator,原 Easy Scheduler) 是一個可視化的分布式大資料作業流任務調度系統,DolphinScheduler 致力于“可視化操作作業流(任務)之間的依賴關系,并可視化監控整個資料處理程序”,簡稱 ”DS” , 中文名 為“小海豚調度”(海豚聰明、人性化,又左右腦可互相換班,終生不用睡覺),
DolphinScheduler 以有向無環圖 (DAG) 的方式將任務組裝起來,可實時監控任務的運行狀態,同時支持重試、從指定節點恢復失敗、暫停及 Kill 任務等操作,
Apache DolphinScheduler 于 17 年在易觀數科立項,美國時間 2019 年 8 月 29 號正式通過頂級開源組織 Apache 基金會的投票決議,以全票通過的優秀表現正式成為了 Apache 范訓器專案, 目前已累計有 400+ 公司在生產上使用,
三. Apache DolphinScheduler 特性
高可靠性
去中心化的多 Master 和多 Worker , 自身支持 HA 功能, 采用任務佇列來避免過載,不會造成機器卡死;
簡單易用
DAG 監控界面,所有流程定義都是可視化,通過拖拽任務完成定制 DAG ,通過 API 方式與第三方系統集成, 一鍵部署;
豐富的使用場景
支持暫停恢復操作. 支持多租戶,更好的應對大資料的使用場景. 支持更多的任務型別,如: Spark, Hive, M/R, Python, Sub_process, Shell;
高擴展性
支持自定義任務型別,調度器使用分布式調度,調度能力隨集群線性增長,Master 和 Worker 支持動態上下線;
四. Apache DolphinScheduler 單機部署流程
DolphinScheduler 作為一款開源分布式作業流任務調度系統,可以很好的部署和運行在 Intel 架構服務器環境及主流虛擬化環境下,并支持主流的 Linux 作業系統環境,
1. Linux 作業系統版本要求
| 作業系統 | 版本 |
|---|---|
| Red Hat Enterprise Linux | 7.0 及以上 |
| CentOS | 7.0 及以上 |
| Oracle Enterprise Linux | 7.0 及以上 |
| Ubuntu LTS | 16.04 及以上 |
2. 服務器建議配置
DolphinScheduler 支持運行在 Intel x86-64 架構的 64 位通用硬體服務器平臺,對生產環境的服務器硬體配置有以下建議:
| CPU | 記憶體 | 硬碟型別 | 網路 | 實體數量 |
|---|---|---|---|---|
| 4核+ | 8 GB+ | SAS | 千兆網卡 | 1+ |
如果服務器硬體配置不符合要求,建議升級服務器配置,不然可能因為配置不夠而無法啟動,不要問我是怎么知道的······
3. 基礎軟體安裝
必裝項
- 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+) ;
ZooKeeper 下載地址:
https://archive.apache.org/dist/zookeeper/
安裝步驟可以參考如下鏈接:
https://segmentfault.com/a/1190000019501252
選裝項
- Hadoop (2.6+) or MinIO :如果需要用到資源上傳功能,針對單機可以選擇本地檔案目錄作為上傳檔案夾(此操作不需要部署 Hadoop );當然也可以選擇上傳到Hadoop or MinIO集群上;
注意:DolphinScheduler 本身不依賴 Hadoop、Hive、Spark,僅是會呼叫他們的 Client,用于對應任務的運行,
4. 下載二進制 tar.gz 包并安裝
下載鏈接:https://dolphinscheduler.apache.org/zh-cn/download/download.html

創建部署目錄,比如 /opt/dolphinscheduler,將安裝包上傳至服務器部署目錄:
mkdir -p /opt/dolphinscheduler
對安裝包進行解壓:
tar -zxvf apache-dolphinscheduler-1.3.6-bin.tar.gz -C /opt/dolphinscheduler
重命名:
mv apache-dolphinscheduler-1.3.6-bin dolphinscheduler-bin
5. 創建部署用戶并賦予目錄操作權限
創建部署用戶時,一定要配置 sudo 免密,我們以創建 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
修改目錄權限,使得部署用戶對 dolphinscheduler-bin 目錄有操作權限:
chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin
之后需要配置 ssh的免密配置,
6. ssh 免密配置
切換到部署用戶并配置 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 是不需要再輸入密碼的;
7. 資料庫初始化
進入資料庫:
mysql -uroot -p
進入資料庫命令列視窗后,執行資料庫初始化命令,設定訪問賬號和密碼:
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
給用戶授權并重繪(不要忘記替換這里的用戶名和密碼):
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'%' IDENTIFIED BY '{password}';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO '{user}'@'localhost' IDENTIFIED BY '{password}';
flush privileges;
創建表和匯入基礎資料:
(1) 進入當前目錄,修改 conf 目錄下 datasource.properties 中的下列配置:
cd dolphinscheduler-bin/
vi conf/datasource.properties
(2) 如果選擇 MySQL,需要注釋掉 PostgreSQL 相關配置, 還需要手動添加 [ mysql-connector-java 驅動 jar ] 包到 lib 目錄下,這里下載的是mysql-connector-java-5.1.47.jar:

(3) 然后正確配置資料庫連接相關資訊:

(4) 修改并保存完后,執行 script 目錄下的創建表及匯入基礎資料腳本:
sh script/create-dolphinscheduler.sh
? 注意: 如果執行上述腳本報 ”/bin/java: No such file or directory“ 錯誤,請在/etc/profile下配置 JAVA_HOME 及 PATH 變數,
8. 修改運行引數
修改 conf/env 目錄下的 dolphinscheduler_env.sh 環境變數(沒有用到的可以忽略):
export HADOOP_HOME=/opt/soft/hadoop
export HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
#export SPARK_HOME1=/opt/soft/spark1
export SPARK_HOME2=/opt/soft/spark2
export PYTHON_HOME=/opt/soft/python
export JAVA_HOME=/opt/soft/java
export HIVE_HOME=/opt/soft/hive
export FLINK_HOME=/opt/soft/flink
export DATAX_HOME=/opt/soft/datax/bin/datax.py
export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME:$PATH
我們這里這是測驗,只保留 JAVA_HOME:
# 可以去環境變數檔案里查找 java 路徑
export JAVA_HOME=/opt/soft/java
export PATH=$JAVA_HOME/bin:$PATH
將jdk軟鏈到 /usr/bin/java 下:
sudo ln -s /opt/soft/java/bin/java /usr/bin/java
修改一鍵部署組態檔 conf/config/install_config.conf中的各引數,特別注意以下引數的配置:
# 這里填 mysql or postgresql
dbtype="mysql"
# 資料庫連接地址
dbhost="localhost:3306"
# 資料庫名
dbname="dolphinscheduler"
# 資料庫用戶名,此處需要修改為上面設定的{user}具體值
username="xxx"
# 資料庫密碼, 如果有特殊字符,請使用\轉義,需要修改為上面設定的{password}具體值
password="xxx"
#Zookeeper地址,單機本機是localhost:2181,記得把2181埠帶上
zkQuorum="localhost:2181"
#將DS安裝到哪個目錄,如: /opt/soft/dolphinscheduler,不同于現在的目錄
installPath="/opt/soft/dolphinscheduler"
#使用哪個用戶部署,使用第3節創建的用戶
deployUser="dolphinscheduler"
# 郵件配置,以qq郵箱為例
# 郵件協議
mailProtocol="SMTP"
# 郵件服務地址
mailServerHost="smtp.qq.com"
# 郵件服務埠
mailServerPort="25"
# mailSender和mailUser配置成一樣即可
# 發送者
mailSender="xxx@qq.com"
# 發送用戶
mailUser="xxx@qq.com"
# 郵箱密碼
mailPassword="xxx"
# TLS協議的郵箱設定為true,否則設定為false
starttlsEnable="true"
# 開啟SSL協議的郵箱配置為true,否則為false,注意: starttlsEnable和sslEnable不能同時為true
sslEnable="false"
# 郵件服務地址值,參考上面 mailServerHost
sslTrust="smtp.qq.com"
# 業務用到的比如sql等資源檔案上傳到哪里,可以設定:HDFS,S3,NONE,單機如果想使用本地檔案系統,請配置為HDFS,因為HDFS支持本地檔案系統;如果不需要資源上傳功能請選擇NONE,強調一點:使用本地檔案系統不需要部署hadoop
resourceStorageType="HDFS"
# 這里以保存到本地檔案系統為例
#注:但是如果你想上傳到HDFS的話,NameNode啟用了HA,則需要將hadoop的組態檔core-site.xml和hdfs-site.xml放到conf目錄下,本例即是放到/opt/dolphinscheduler/conf下面,并配置namenode cluster名稱;如果NameNode不是HA,則修改為具體的ip或者主機名即可
defaultFS="file:///data/dolphinscheduler" #hdfs://{具體的ip/主機名}:8020
# 如果沒有使用到Yarn,保持以下默認值即可;如果ResourceManager是HA,則配置為ResourceManager節點的主備ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是單ResourceManager請配置yarnHaIps=""即可
# 注:依賴于yarn執行的任務,為了保證執行結果判斷成功,需要確保yarn資訊配置正確,
yarnHaIps="192.168.xx.xx,192.168.xx.xx"
# 如果ResourceManager是HA或者沒有使用到Yarn保持默認值即可;如果是單ResourceManager,請配置真實的ResourceManager主機名或者ip
singleYarnIp="yarnIp1"
# 資源上傳根路徑,支持HDFS和S3,由于hdfs支持本地檔案系統,需要確保本地檔案夾存在且有讀寫權限
resourceUploadPath="/data/dolphinscheduler"
# 具備權限創建resourceUploadPath的用戶
hdfsRootUser="hdfs"
#在哪些機器上部署DS服務,本機選localhost
ips="localhost"
#ssh埠,默認22
sshPort="22"
#master服務部署在哪臺機器上
masters="localhost"
#worker服務部署在哪臺機器上,并指定此worker屬于哪一個worker組,下面示例的default即為組名
workers="localhost:default"
#報警服務部署在哪臺機器上
alertServer="localhost"
#后端api服務部署在在哪臺機器上
apiServers="localhost"
引數一定要配置正確,一一對應著修改,
9. 一鍵部署
切換到部署用戶,執行一鍵部署腳本:
sh install.sh
腳本完成后,會啟動以下 5 個服務,使用 jps命令查看服務是否啟動 (jps為java JDK自帶)
MasterServer ----- master服務
WorkerServer ----- worker服務
LoggerServer ----- logger服務
ApiApplicationServer ----- api服務
AlertServer ----- alert服務
如果以上服務都正常啟動,說明自動部署成功,
然而,理想很豐滿,現實很骨感,部署一帆風順基本是不太可能的,在運行 jps 命令后發現,只有兩個服務啟動了:

查看錯誤日志,尷尬了,原來是因為服務器空間不夠,不過啟動了兩個服務,起碼說明配置程序沒有大的問題,

雖然我自己的服務因為客觀原因無法啟動,但是本著做事有頭有尾的原則,剩下的操作流程給大家補全了,可以按照以下步驟走完全程,
10. 登錄系統
訪問前端頁面地址,介面 ip 請自行修改:
http://192.168.xx.xx:12345/dolphinscheduler
這是來自官方訪問成功的截圖:

11. 啟停服務
一鍵停止集群所有服務
sh ./bin/stop-all.sh
一鍵開啟集群所有服務
sh ./bin/start-all.sh
啟停 Master
sh ./bin/dolphinscheduler-daemon.sh start master-server
sh ./bin/dolphinscheduler-daemon.sh stop 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
啟停 Logger
sh ./bin/dolphinscheduler-daemon.sh start logger-server
sh ./bin/dolphinscheduler-daemon.sh stop logger-server
啟停 Alert
sh ./bin/dolphinscheduler-daemon.sh start alert-server
sh ./bin/dolphinscheduler-daemon.sh stop alert-server
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/286928.html
標籤:其他
