DolphinScheduler架構(gòu)圖
目錄
一、補(bǔ)充
二、部署流程
1.下載二進(jìn)制tar.gz包
2.創(chuàng)建部署用戶并賦予目錄操作權(quán)限
3.ssh免密配置
4.數(shù)據(jù)庫初始化
5.修改運(yùn)行參數(shù)
6.一鍵部署
7.登錄系統(tǒng)
如果你還不夠熟悉DolphinScheduler,可以參考:
《調(diào)度系統(tǒng)Apache DolphinScheduler介紹和設(shè)計(jì)原理》
《DolphinScheduler分布式作業(yè)管理平臺(tái)》
一、補(bǔ)充
安裝psmisc:
apt-get?install?psmisc
二谣蠢、部署流程
1.下載二進(jìn)制tar.gz包
下載最新版本的后端安裝包至服務(wù)器部署目錄,比如創(chuàng)建 /opt/dolphinscheduler 做為安裝部署目錄闻丑,下載地址:https://dlcdn.apache.org/dolphinscheduler/1.3.8/apache-dolphinscheduler-1.3.8-src.tar.gz,下載后上傳 tar 包到該目錄中
注:此處應(yīng)當(dāng)下載bin文件
解壓
#?創(chuàng)建部署目錄勋颖,部署目錄請不要?jiǎng)?chuàng)建在?/root嗦嗡、/home?等高權(quán)限目錄?
mkdir?-p?/opt/dolphinscheduler
cd/opt/dolphinscheduler
#?解壓縮
tar?-zxvf?apache-dolphinscheduler-1.3.8-bin.tar.gz
#重命名
mv?apache-dolphinscheduler-1.3.8-bin??dolphinscheduler-bin
筆者在/usr/local位置上創(chuàng)建dolphinscheduler文件夾,上傳并解壓了安裝包饭玲。隨后將壓縮包重命名為dolphinscheduler-bin侥祭。
mkdir?dolphinscheduler
cddolphinscheduler
#?解壓縮
tar?-zxvf?apache-dolphinscheduler-1.3.8-bin.tar.gz?-C
#重命名
mv?apache-dolphinscheduler-1.3.8-bin??dolphinscheduler-bin
附:
查看虛擬機(jī)ip地址
ifconfig
inet后跟的值即為ip地址
隨后用filezilla連接虛擬機(jī),傳輸文件
主機(jī)號即為剛剛查詢的結(jié)果茄厘,協(xié)議選擇SFTP而不是默認(rèn)的FTP矮冬,用戶名為虛擬機(jī)系統(tǒng)的用戶名而不是linux終端terminal的用戶。
連接成功后即可看到linux文件目錄次哈,用拖拽的方式即可傳輸文件胎署。
筆者此處遇到權(quán)限問題:
filezilla報(bào)錯(cuò):
命令:????put"C:\Users\86136\Desktop\apache-dolphinscheduler-1.3.8-src.tar.gz""apache-dolphinscheduler-1.3.8-src.tar.gz"
錯(cuò)誤:????/usr/local/dolphinscheduler/apache-dolphinscheduler-1.3.8-src.tar.gz:?openforwrite:?permission?denied
錯(cuò)誤:????文件傳輸失敗
在虛擬機(jī)上授權(quán)
sudo?chmod?777?/usr/local/dolphinscheduler
重新傳輸,問題解決窑滞。
實(shí)際上琼牧,在安裝filezilla后直接拖拽文件進(jìn)虛擬機(jī)界面也能實(shí)現(xiàn)文件傳輸恢筝,但就筆者而言這一操作偶爾能夠成功但常常導(dǎo)致系統(tǒng)死機(jī)。
2.創(chuàng)建部署用戶并賦予目錄操作權(quán)限
創(chuàng)建部署用戶巨坊,并且一定要配置 sudo 免密撬槽。以創(chuàng)建 dolphinscheduler 用戶為例
#?創(chuàng)建用戶需使用?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
#?修改目錄權(quán)限,使得部署用戶對?dolphinscheduler-bin?目錄有操作權(quán)限
chown?-R?dolphinscheduler:dolphinscheduler?dolphinscheduler-bin
注意:
因?yàn)槿蝿?wù)執(zhí)行服務(wù)是以 sudo -u {linux-user} 切換不同 linux 用戶的方式來實(shí)現(xiàn)多租戶運(yùn)行作業(yè)趾撵,所以部署用戶需要有 sudo 權(quán)限侄柔,而且是免密的。初學(xué)習(xí)者不理解的話占调,完全可以暫時(shí)忽略這一點(diǎn)
如果發(fā)現(xiàn) /etc/sudoers 文件中有 "Defaults requirett" 這行暂题,也請注釋掉
如果用到資源上傳的話,還需要給該部署用戶分配操作本地文件系統(tǒng)或者 HDFS 或者 MinIO的權(quán)限
坑:
echo"dolphinscheduler"|?passwd?--stdin?dolphinscheduler
這步會(huì)報(bào)錯(cuò)妈候。linux的passwd命令沒有--stdin的語法
應(yīng)該用
echo"dolphinscheduler:123456"|?chpasswd
修改用戶dolphinscheduler密碼為123456
另外這五條指令在第一次成功運(yùn)行時(shí)都沒有運(yùn)行成功提示敢靡。
切換到部署用戶并配置 ssh 本機(jī)免密登錄
su?dolphinscheduler
ssh-keygen?-t?rsa?-P''-f?~/.ssh/id_rsa
cat?~/.ssh/id_rsa.pub?>>?~/.ssh/authorized_keys
chmod?600?~/.ssh/authorized_keys
注意:正常設(shè)置后,dolphinscheduler 用戶在執(zhí)行命令 ssh localhost 是不需要再輸入密碼的
坑:這里運(yùn)行會(huì)報(bào)錯(cuò)Could not create directory '/home/dolphinscheduler/.ssh
需要先以root身份在/home下創(chuàng)建dolphinscheduler目錄再在dolphinscheduler里創(chuàng)建.ssh目錄苦银,
然后切換回dolphinscheduler用戶執(zhí)行啸胧。除此之外可能還需要對這些目錄進(jìn)行授權(quán)。
進(jìn)入數(shù)據(jù)庫幔虏,默認(rèn)數(shù)據(jù)庫是 PostgreSQL纺念,如選擇 MySQL 的話,后續(xù)需要添加 mysql-connector-java 驅(qū)動(dòng)包到 DolphinScheduler 的 lib 目錄下
mysql-connector-java下載網(wǎng)址:MySQL :: Download Connector/J
注意切換下載linux版并且注意對應(yīng)版本號想括。
這里對應(yīng)的主要是ubuntu的版本而不是linux版本陷谱。
查看ubuntu版本的方法 :
cat?/proc/version
結(jié)果如下:
筆者用的18.04版本
下載好后放到DolphinScheduler 的 lib 目錄下解壓
但是筆者此處遇到一點(diǎn)問題,下載下來的文件解壓后的結(jié)果似乎并不太常規(guī)瑟蜈,沒法簡單地tar解包
解決方法是在windows中解壓烟逊,然后打開解壓出的壓縮包,該壓縮包里./usr/share/java里有我們需要的mysql-connector-java-8.0.26.jar铺根,取出來傳入linux的lib文件夾下宪躯。
之后執(zhí)行如下指令進(jìn)入數(shù)據(jù)庫:
#啟動(dòng)mysql服務(wù)
service?mysql?start
#登錄
mysql?-uroot?-p
此處遇到了另一個(gè)問題,運(yùn)行service mysql start報(bào)錯(cuò)Failed to start mysql.service: Unit mysql.service not found.
解決方法:
#查詢/etc/init.d/下是否存在mysql位迂,無結(jié)果說明不存在
ll?/etc/init.d/?|?grep?mysql
#查詢mysql.server所在位置
find?/?-name?mysql.server
#把mysql.server復(fù)制過去访雪,其中/usr/local/mysql/是筆者的mysql安裝目錄
cp?/usr/local/mysql/support-files/mysql.server?/etc/init.d/mysql
進(jìn)入數(shù)據(jù)庫命令行窗口后,執(zhí)行數(shù)據(jù)庫初始化命令掂林,設(shè)置訪問賬號和密碼臣缀。注: {user} 和 {password} 需要替換為具體的數(shù)據(jù)庫用戶名和密碼
mysql>?CREATE?DATABASE?dolphinscheduler?DEFAULT?CHARACTER?SET?utf8?DEFAULT?COLLATE?utf8_general_ci;
mysql>?GRANT?ALL?PRIVILEGES?ON?dolphinscheduler.*?TO'{user}'@'%'IDENTIFIED?BY'{password}';
mysql>?GRANT?ALL?PRIVILEGES?ON?dolphinscheduler.*?TO'{user}'@'localhost'IDENTIFIED?BY'{password}';
mysql>?flush?privileges;
注:如果需要查看mysql中的用戶及其密碼可使用如下代碼
SELECT?User,?Host,?Password?FROM?mysql.user;
創(chuàng)建表和導(dǎo)入基礎(chǔ)數(shù)據(jù)
首先退出sql(按Ctrl+c)
接下來修改 conf 目錄下 datasource.properties 中的下列配置
cd/usr/local/dolphinscheduler/dolphinscheduler-bin
vi?conf/datasource.properties
如果選擇 MySQL,請注釋(用‘#’)掉 PostgreSQL 相關(guān)配置(反之同理)泻帮,還需要手動(dòng)添加 [ mysql-connector-java 驅(qū)動(dòng) jar ] 包到 lib 目錄下精置,這里下載的是 mysql-connector-java-5.1.47.jar,然后正確配置數(shù)據(jù)庫連接相關(guān)信息
提示:切換至英文輸入法锣杂,輸入i進(jìn)入修改狀態(tài)氯窍,方向鍵改變光標(biāo)位置饲常,完成后先按Esc退出插入狀態(tài),再輸入:wq保存并退出狼讨。:q可用來直接退出而不保存贝淤。
#?postgre
#?spring.datasource.driver-class-name=org.postgresql.Driver
#?spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler
#?mysql
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true#?需要修改ip,本機(jī)localhost即可
spring.datasource.username=xxx#?需要修改為上面的{user}值
spring.datasource.password=xxx#?需要修改為上面的{password}值
先把PostgreSQL 相關(guān)的代碼注釋掉政供,然后注意修改這里的xxx
修改并保存完后播聪,執(zhí)行 script 目錄下的創(chuàng)建表及導(dǎo)入基礎(chǔ)數(shù)據(jù)腳本
sh?script/create-dolphinscheduler.sh
注意: 如果執(zhí)行上述腳本提示 “/bin/java: No such file or directory” 錯(cuò)誤,請?jiān)?/etc/profile 下配置 JAVA_HOME 及 PATH 變量
正好筆者此處也遇到了類似的問題:
script/create-dolphinscheduler.sh: 37: script/create-dolphinscheduler.sh: /bin/java: not found
那么我們就按照提示進(jìn)入/etc文件夾下的profile文件進(jìn)行編輯吧:
vi?/etc/profile
在最下方添加如下代碼:
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
exportJAVA_HOME?JRE_HOME?PATH?CLASSPATH
當(dāng)然此處可能由于每個(gè)人jdk所在位置以及版本不同而需要做出適當(dāng)修改布隔。
如果之前使用的npm安裝jdk离陶,那么jdk很有可能被安裝在/usr/lib/jvm目錄下
而我們所需的java文件地址為:/usr/lib/jvm/java-8-openjdk-amd64/bin/java (此處可能略有不同)
:wq保存退出。
之后再敲入如下代碼:
source/etc/profile???//使修改立即生效
echo$JAVA_HOME//查看JAVA_HOME的值
javac?-version
第一條使設(shè)置生效衅檀,二三條檢驗(yàn)配置是否成功招刨。
5.修改運(yùn)行參數(shù)
修改 /usr/local/dolphinscheduler/dolphinscheduler-bin/conf/env 目錄下的 dolphinscheduler_env.sh 環(huán)境變量(以相關(guān)用到的軟件都安裝在 /opt/soft 下為例)
vi?/usr/local/dolphinscheduler/dolphinscheduler-bin/conf/env/dolphinscheduler_env.sh
注釋export SPARK_HOME1=/opt/soft/spark1這行
export DATAX_HOME=/opt/soft/datax/bin/datax這行加上.py
exportHADOOP_HOME=/opt/soft/hadoop
exportHADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop
#?export?SPARK_HOME1=/opt/soft/spark1
exportSPARK_HOME2=/opt/soft/spark2
exportPYTHON_HOME=/opt/soft/python
exportJAVA_HOME=/opt/soft/java
exportHIVE_HOME=/opt/soft/hive
exportFLINK_HOME=/opt/soft/flink
exportDATAX_HOME=/opt/soft/datax/bin/datax.py
exportPATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME:$PATH
注意: 這一步非常重要,例如 JAVA_HOME 和 PATH 是必須要配置的哀军,沒有用到的可以忽略或者注釋掉沉眶;如果找不到 dolphinscheduler_env.sh,請運(yùn)行 ls -a
將 jdk 軟鏈到 /usr/bin/java 下(仍以 JAVA_HOME=/opt/soft/java 為例)
sudo?ln?-s?/opt/soft/java/bin/java?/usr/bin/java
修改一鍵部署配置文件conf/config/install_config.conf中的各參數(shù)杉适,特別注意以下參數(shù)的配置
vim?/usr/local/dolphinscheduler/dolphinscheduler-bin/conf/config/install_config.conf
#?這里填?mysql?or?postgresql
dbtype="mysql"
#?數(shù)據(jù)庫連接地址
dbhost="localhost:3306"
#?數(shù)據(jù)庫名
dbname="dolphinscheduler"
#?數(shù)據(jù)庫用戶名谎倔,此處需要修改為上面設(shè)置的?{user}?具體值
username="xxx"
#?數(shù)據(jù)庫密碼,如果有特殊字符猿推,請使用?\?轉(zhuǎn)義片习,需要修改為上面設(shè)置的?{password}?具體值
password="xxx"
#?Zookeeper地址,單機(jī)本機(jī)是?localhost:2181蹬叭,記得把?2181?端口帶上
zkQuorum="localhost:2181"
#?將?DS?安裝到哪個(gè)目錄藕咏,如:?/opt/soft/dolphinscheduler,不同于現(xiàn)在的目錄
installPath="/opt/soft/dolphinscheduler"
#?使用哪個(gè)用戶部署秽五,使用第?3?節(jié)創(chuàng)建的用戶
deployUser="dolphinscheduler"
#?郵件配置孽查,以?qq?郵箱為例
#?郵件協(xié)議
mailProtocol="SMTP"
#?郵件服務(wù)地址
mailServerHost="smtp.qq.com"
#?郵件服務(wù)端口
mailServerPort="25"
#?mailSender?和?mailUser?配置成一樣即可
#?發(fā)送者
mailSender="xxx@qq.com"
#?發(fā)送用戶
mailUser="xxx@qq.com"
#?郵箱密碼
mailPassword="xxx"
#?TLS?協(xié)議的郵箱設(shè)置為?true,否則設(shè)置為?false
starttlsEnable="true"
#?開啟 SSL 協(xié)議的郵箱配置為 true筝蚕,否則為 false卦碾。注意: starttlsEnable 和 sslEnable 不能同時(shí)為 true
sslEnable="false"
#?郵件服務(wù)地址值铺坞,參考上面?mailServerHost
sslTrust="smtp.qq.com"
#?業(yè)務(wù)用到的比如 sql 等資源文件上傳到哪里起宽,可以設(shè)置:HDFS,S3,NONE,單機(jī)如果想使用本地文件系統(tǒng)济榨,請配置為 HDFS坯沪,因?yàn)?HDFS 支持本地文件系統(tǒng);如果不需要資源上傳功能請選擇 NONE擒滑。強(qiáng)調(diào)一點(diǎn):使用本地文件系統(tǒng)不需要部署 hadoop
resourceStorageType="HDFS"
#?這里以保存到本地文件系統(tǒng)為例
#?注:但是如果你想上傳到 HDFS 的話腐晾,NameNode 啟用了 HA叉弦,則需要將 hadoop 的配置文件 core-site.xml 和 hdfs-site.xml 放到 conf 目錄下,本例即是放到?/opt/dolphinscheduler/conf 下面藻糖,并配置 namenode cluster 名稱淹冰;如果 NameNode 不是 HA,則修改為具體的 ip 或者主機(jī)名即可
defaultFS="file:///data/dolphinscheduler"#hdfs://{具體的ip/主機(jī)名}:8020
#?如果沒有使用到 Yarn巨柒,保持以下默認(rèn)值即可樱拴;如果 ResourceManager 是 HA,則配置為 ResourceManager 節(jié)點(diǎn)的主備 ip 或者 hostname洋满,比如?"192.168.xx.xx,192.168.xx.xx"?;如果是單 ResourceManager 請配置 yarnHaIps=""?即可
#?注:依賴于yarn執(zhí)行的任務(wù)晶乔,為了保證執(zhí)行結(jié)果判斷成功,需要確保yarn信息配置正確
yarnHaIps="192.168.xx.xx,192.168.xx.xx"
#?如果 ResourceManager 是 HA 或者沒有使用到 Yarn 保持默認(rèn)值即可牺勾;如果是單 ResourceManager正罢,請配置真實(shí)的 ResourceManager 主機(jī)名或者 ip
singleYarnIp="yarnIp1"
#?資源上傳根路徑,支持?HDFS?和?S3驻民,由于?hdfs?支持本地文件系統(tǒng)翻具,需要確保本地文件夾存在且有讀寫權(quán)限
resourceUploadPath="/data/dolphinscheduler"
#?具備權(quán)限創(chuàng)建?resourceUploadPath的用戶
hdfsRootUser="hdfs"
#?配置?api?server?port
apiServerPort="12345"
#?在哪些機(jī)器上部署?DS?服務(wù),本機(jī)選?localhost
ips="localhost"
#?ssh端口川无,默認(rèn)22
sshPort="22"
#?master服務(wù)部署在哪臺(tái)機(jī)器上
masters="localhost"
#?worker服務(wù)部署在哪臺(tái)機(jī)器上呛占,并指定此?worker?屬于哪一個(gè)?worker?組,下面示例的?default?即為組名
workers="localhost:default"
#?報(bào)警服務(wù)部署在哪臺(tái)機(jī)器上
alertServer="localhost"
#?后端api服務(wù)部署在在哪臺(tái)機(jī)器上
apiServers="localhost"
注:如果打算用到 資源中心 功能懦趋,請執(zhí)行以下命令:
sudo?mkdir?/data/dolphinscheduler
sudo?chown?-R?dolphinscheduler:dolphinscheduler?/data/dolphinscheduler
6.一鍵部署
切換到部署用戶晾虑,執(zhí)行一鍵部署腳本
sh?install.sh
注意:第一次部署的話,在運(yùn)行中第3步 3,stop server 出現(xiàn) 5 次以下信息仅叫,此信息可以忽略
sh:?bin/dolphinscheduler-daemon.sh:?No?such?file?or?directory
運(yùn)行時(shí)報(bào)錯(cuò):install.sh: 22: install.sh: source: not found 1.replace file install.sh: 28: install.sh: [[: not found install.sh: 34: [: ==: unexpected operator 2.create directory 3.scp resources /usr/local/dolphinscheduler/dolphinscheduler-bin/script/scp-hosts.sh: 21: /usr/local/dolphinscheduler/dolphinscheduler-bin/script/scp-hosts.sh: source: not found /usr/local/dolphinscheduler/dolphinscheduler-bin/script/scp-hosts.sh: 24: /usr/local/dolphinscheduler/dolphinscheduler-bin/script/scp-hosts.sh: [[: not found /usr/local/dolphinscheduler/dolphinscheduler-bin/script/scp-hosts.sh: 29: /usr/local/dolphinscheduler/dolphinscheduler-bin/script/scp-hosts.sh: Syntax error: "(" unexpected scp copy failed to exit
原因:默認(rèn)使用dash作為shell帜篇,但sh是bash shell的命令。
解決方案:
dpkg-reconfigure?dash(需要root權(quán)限)
在界面中選擇no
再運(yùn)行l(wèi)s?-l?/bin/sh?后顯示/bin/sh?->?bash
再運(yùn)行sh命令即可
腳本完成后诫咱,會(huì)啟動(dòng)以下 5 個(gè)服務(wù)笙隙,使用
jps
命令查看服務(wù)是否啟動(dòng)( jps 為 JDK 自帶)
如果顯示中包含:
MasterServer?????????-----?master服務(wù)
WorkerServer?????????-----?worker服務(wù)
LoggerServer?????????-----?logger服務(wù)
ApiApplicationServer?-----?api服務(wù)
AlertServer??????????-----?alert服務(wù)
如果以上服務(wù)都正常啟動(dòng),說明自動(dòng)部署成功
部署成功后坎缭,可以進(jìn)行日志查看竟痰,日志統(tǒng)一存放于 logs 文件夾內(nèi)
/usr/dolphinscheduler/logs
logs/
├──?dolphinscheduler-alert-server.log
├──?dolphinscheduler-master-server.log
|——?dolphinscheduler-worker-server.log
|——?dolphinscheduler-api-server.log
|——?dolphinscheduler-logger-server.log
訪問前端頁面地址,接口 ip (自行修改) http://192.168.xx.xx:12345/dolphinscheduler
部署完成掏呼,成功進(jìn)入界面坏快。
推薦參考文檔:
官網(wǎng)網(wǎng)址:
https://dolphinscheduler.apache.org/zh-cn/
官網(wǎng)使用教程:https://www.bilibili.com/video/BV1d64y1s7eZ
你可以在這里參考原文鏈接:https://blog.csdn.net/qq_50740678/article/details/120615253