用於搭建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包
創建部署目錄,部署目錄請不要創建在/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環境