DolphinScheduler搭建與采坑日記


用於搭建ds1.3.2版本

一:需要提前安裝的框架及版本

·PostgreSQL (8.2.15+) or MySQL (5.7系列) : 兩者任選其一即可
·JDK (1.8+) : 必裝,請安裝好后在/etc/profile下配置 JAVA_HOME 及 PATH 變量
·ZooKeeper (3.4.6+) :必裝
·Hadoop (2.6+) or MinIO :選裝,如果需要用到資源上傳功能,可以選擇上傳到Hadoop or MinIO上

二:下載tar包

https://mirror.bit.edu.cn/apache/incubator/dolphinscheduler/1.3.2/apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin.tar.gz

創建部署目錄,部署目錄請不要創建在/root、/home等高權限目錄

部署目錄個人覺得最佳直接放在根目錄

mkdir -p /opt/dolphinscheduler;
cd /opt/dolphinscheduler;

解壓縮

tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz -C /opt/dolphinscheduler;
mv apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin dolphinscheduler-backend

三:創建部署用戶和hosts映射

在所有部署調度的機器上創建部署用戶,並且一定要配置sudo免密。假如我們計划在ds1,ds2,ds3,ds4這4台機器上部署調度,首先需要在每台機器上都創建部署用戶

創建用戶需使用root登錄,設置部署用戶名,請自行修改,后面以dolphinscheduler為例

useradd dolphinscheduler;

設置用戶密碼,請自行修改,后面以dolphinscheduler123為例

echo "dolphinscheduler123" | passwd --stdin dolphinscheduler

配置sudo免密

echo 'dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL' >> /etc/sudoers
sed -i 's/Defaults requirett/#Defaults requirett/g' /etc/sudoers

踩坑

配置完要去看看sudoers的權限,如果后期在初始化的時候一直要輸入密碼,那肯定是這個sudoer文件權限的問題

四:配置hosts映射和ssh打通及修改目錄權限

以第一台機器(hostname為ds1)作為部署機,在ds1上配置所有待部署機器的hosts, 在ds1以root登錄

vi /etc/hosts
192.168.xxx.xxx ds1
192.168.xxx.xxx ds2
192.168.xxx.xxx ds3
192.168.xxx.xxx ds4
注意:請刪掉或者注釋掉127.0.0.1這行

同步ds1上的/etc/hosts到所有部署機器

for ip in ds2 ds3; #請將此處ds2 ds3替換為自己要部署的機器的hostname
do
sudo scp -r /etc/hosts $ip:/etc/ #在運行中需要輸入root密碼
done
備注:當然 通過sshpass -p xxx sudo scp -r /etc/hosts $ip:/etc/就可以省去輸入密碼了

centos下sshpass的安裝:

先安裝epel

yum install -y epel-release

yum repolist

安裝完成epel之后,就可以按照sshpass了

yum install -y sshpass

在ds1上,切換到部署用戶並配置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 是不需要再輸入密碼的

在ds1上,配置部署用戶dolphinscheduler ssh打通到其他待部署的機器

su dolphinscheduler;
for ip in ds2 ds3; #請將此處ds2 ds3替換為自己要部署的機器的hostname
do
ssh-copy-id $ip #該操作執行過程中需要手動輸入dolphinscheduler用戶的密碼
done
當然 通過 sshpass -p xxx ssh-copy-id $ip 就可以省去輸入密碼了

踩坑

ssh要配置的是每個機器之間互相免密

在ds1上,修改目錄權限,使得部署用戶對dolphinscheduler-backend目錄有操作權限

sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-backend

數據庫初始化

進入數據庫,默認數據庫是PostgreSQL,如選擇MySQL的話,后續需要添加mysql-connector-java驅動包到DolphinScheduler的lib目錄下,這里以MySQL為例

mysql -uroot -p

進入數據庫命令行窗口后,執行數據庫初始化命令,設置訪問賬號和密碼。注: {user} 和 {password} 需要替換為具體的數據庫用戶名和密碼

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;

創建表和導入基礎數據

修改 conf 目錄下 application-dao.properties 中的下列配置
vi conf/application-dao.properties
如果選擇 MySQL,請注釋掉 PostgreSQL 相關配置(反之同理), 還需要手動添加 [ mysql-connector-java 驅動 jar ] 包到 lib 目錄下,這里下載的是mysql-connector-java-5.1.47.jar,然后正確配置數據庫連接相關信息

#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     需要修改ip
spring.datasource.username=xxx						需要修改為上面的{user}值
spring.datasource.password=xxx						需要修改為上面的{password}值

修改並保存完后,執行 script 目錄下的創建表及導入基礎數據腳本

sh script/create-dolphinscheduler.sh
​注意: 如果執行上述腳本報 ”/bin/java: No such file or directory“ 錯誤,請在/etc/profile下配置 JAVA_HOME 及 PATH 變量

踩坑

每台節點都要配置JDK以及相關環境變量

五:修改運行參數

修改 conf/env 目錄下的 .dolphinscheduler_env.sh 環境變量(以相關用到的軟件都安裝在/opt/soft下為例)

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 PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH

注: 這一步非常重要,例如 JAVA_HOME 和 PATH 是必須要配置的,沒有用到的可以忽略或者注釋掉;如果找不到.dolphinscheduler_env.sh, 請運行 ls -a

將jdk軟鏈到/usr/bin/java下(仍以 JAVA_HOME=/opt/soft/java 為例)

sudo ln -s /opt/soft/java/bin/java /usr/bin/java

修改一鍵部署腳本 install.sh中的各參數,特別注意以下參數的配置

# 這里填 mysql or postgresql
dbtype="mysql"

# 數據庫連接地址
dbhost="192.168.xx.xx:3306"

# 數據庫名
dbname="dolphinscheduler"

# 數據庫用戶名,此處需要修改為上面設置的{user}具體值
username="xxx"    

# 數據庫密碼, 如果有特殊字符,請使用\轉義,需要修改為上面設置的{passowrd}具體值
passowrd="xxx"

#將DS安裝到哪個目錄,如: /opt/soft/dolphinscheduler,不同於現在的目錄
installPath="/opt/soft/dolphinscheduler"

#使用哪個用戶部署,使用1.3小節創建的用戶
deployUser="dolphinscheduler"

#Zookeeper地址
zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"

#在哪些機器上部署DS服務
ips="ds1,ds2,ds3,ds4"

#master服務部署在哪台機器上
masters="ds1,ds2"

#worker服務部署在哪台機器上
workers="ds3,ds4"

#報警服務部署在哪台機器上
alertServer="ds2"

#后端api服務部署在在哪台機器上
apiServers="ds1"


# 郵件配置,以qq郵箱為例
# 郵件協議
mailProtocol="SMTP"

# 郵件服務地址
mailServerHost="smtp.exmail.qq.com"

# 郵件服務端口
mailServerPort="25"

# mailSender和mailUser配置成一樣即可
# 發送者
mailSender="xxx@qq.com"

# 發送用戶
mailUser="xxx@qq.com"

# 郵箱密碼
mailPassword="xxx"

# TLS協議的郵箱設置為true,否則設置為false
starttlsEnable="true"

# 郵件服務地址值,參考上面 mailServerHost
sslTrust="smtp.exmail.qq.com"

# 開啟SSL協議的郵箱配置為true,否則為false。注意: starttlsEnable和sslEnable不能同時為true
sslEnable="false"

# excel下載路徑
xlsFilePath="/tmp/xls"

# 業務用到的比如sql等資源文件上傳到哪里,可以設置:HDFS,S3,NONE。如果想上傳到HDFS,請配置為HDFS;如果不需要資源上傳功能請選擇NONE。
resUploadStartupType="HDFS"

# 如果上傳資源保存想保存在hadoop上,hadoop集群的NameNode啟用了HA的話,需要將hadoop的配置文件core-site.xml和hdfs-site.xml放到安裝路徑(上面的installPath)的conf目錄下,本例即是放到/opt/soft/dolphinscheduler/conf下面,並配置namenode cluster名稱;如果NameNode不是HA,則只需要將mycluster修改為具體的ip或者主機名即可
defaultFS="hdfs://mycluster:8020"


# 如果ResourceManager是HA,則配置為ResourceManager節點的主備ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx",否則如果是單ResourceManager或者根本沒用到yarn,請配置yarnHaIps=""即可,我這里沒用到yarn,配置為""
yarnHaIps=""

# 如果是單ResourceManager,則配置為ResourceManager節點ip或主機名,否則保持默認值即可。我這里沒用到yarn,保持默認
singleYarnIp="ark1"

特別注意:
如果需要用資源上傳到Hadoop集群功能, 並且Hadoop集群的NameNode 配置了 HA的話 ,需要開啟 HDFS類型的資源上傳,同時需要將Hadoop集群下的core-site.xml和hdfs-site.xml復制到/opt/dolphinscheduler/conf,非NameNode HA跳過次步驟

六:安裝python的Zookeeper工具kazoo

安裝python的 Zookeeper 工具 ,此步驟僅在一鍵部署時候用到

#安裝pip
sudo yum -y install python-pip;  #ubuntu請使用 sudo apt-get install python-pip
sudo pip install kazoo;

注意:如果yum沒找到python-pip,也可以通過下面方式安裝

sudo curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py  # 如果是python3,使用sudo python3 get-pip.py 
#然后
sudo pip install kazoo;

切換到部署用戶dolphinscheduler,然后執行一鍵部署腳本

sh install.sh

踩坑

注意是原始dolphinscheduler下的腳本

注意:
第一次部署的話,在運行中第3步3,stop server出現5次以下信息,此信息可以忽略
sh: bin/dolphinscheduler-daemon.sh: No such file or directory

腳本完成后,會啟動以下5個服務,使用jps命令查看服務是否啟動(jps為java JDK自帶)

    MasterServer         ----- master服務
    WorkerServer         ----- worker服務
    LoggerServer         ----- logger服務
    ApiApplicationServer ----- api服務
    AlertServer          ----- alert服務

如果以上服務都正常啟動,說明自動部署成功

七:登錄系統

http://192.168.xx.xx:12345/dolphinscheduler
ip自行修改

初始賬號密碼:

admin
dolphinscheduler123

八:啟停服務

一鍵停止集群所有服務

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

九:其他坑

如果發現無法上傳文件

查看/etc/dolphinscheduler目錄的權限和所有者
sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler
chmod 777 dolphinscheduler

master或者worker有的機器沒起來

檢查ssh和相應機器JDK環境

持續更新中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM