基於雲服務MRS構建DolphinScheduler2排程系統

華為雲開發者社群發表於2022-05-28
摘要:本文介紹如何搭建DolphinScheduler並執行MRS作業。

本文分享自華為雲社群《基於雲服務MRS構建DolphinScheduler2排程系統》,作者: 啊喔YeYe 。

為什麼寫這篇文章?

  1. 網上關於DolphinScheduler的介紹很多但是都缺少了與實際大資料平臺結合的案例指導。
  2. DolphinScheduler1.x版本,2.x重構了核心實現,效能提升20倍!但是因為重構導致2.x與1.x部署過程存在差異,按照1.x部署2.x版本存在不少坑。
  3. 選擇輕量化、免運維、低成本的大資料雲服務是業界趨勢,如果搭建DolphinScheduler再同步自建一套Hadoop生態成本太高!因此我們通過結合華為雲MRS服務構建資料中臺。

環境準備

  • dolphinscheduler2.0.3安裝包
  • MRS 3.1.0普通叢集
  • Mysql安裝包 5.7.35
  • ECS centos7.6

安裝MRS 客戶端

MRS客戶端提供java、python開發環境,也提供開通叢集中各元件的環境變數:Hadoop、hive、hbase、flink等。

參見登入ECS安裝叢集外客戶端

安裝MySQL服務

1. 建立ECS使用者

為了方便資料庫管理,對於安裝的MySQL資料庫,生產上建立了一個mysql使用者和mysql使用者組:

# 新增mysql使用者組 
groupadd mysql 
# 新增mysql使用者 
useradd -g mysql mysql -d /home/mysql 
# 修改mysql使用者的登陸密碼 
passwd ****

2.解壓安裝包

```
cd /usr/local/ 
tar -xzvf  mysql-5.7.13-linux-glibc2.5-x86_64.tar.gz
# 改名為mysql 
mv mysql-5.7.13-linux-glibc2.5-x86_64 mysql
```

賦予使用者讀寫許可權
chown -R mysql:mysql mysql/

3. 配置檔案初始化

1. 建立配置檔案my.cnf

```
vim /etc/my.cnf

[client] 
port = 3306 
socket = /tmp/mysql.sock 

[mysqld] 
character_set_server=utf8 
init_connect='SET NAMES utf8' 
basedir=/usr/local/mysql 
datadir=/usr/local/mysql/data 
socket=/tmp/mysql.sock 
log-error=/var/log/mysqld.log 
pid-file=/var/run/mysqld/mysqld.pid 
#不區分大小寫 
lower_case_table_names = 1 

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 

max_connections=5000 

default-time_zone = '+8:00'
```

2. 初始化log檔案,防止沒有許可權

```
#手動編輯一下日誌檔案,什麼也不用寫,直接儲存退出 
cd /var/log/ 
vim mysqld.log 
:wq 退出儲存
chmod 777 mysqld.log 
chown mysql:mysql mysqld.log
```

3. 初始化pid檔案,防止沒有許可權

```
cd /var/run/ 
mkdir mysqld 
cd mysqld 
vi mysqld.pid 
:wq儲存退出 
# 賦權 
cd .. 
chmod 777 mysqld 
chown -R mysql:mysql /mysqld
```

4. 初始化資料庫

初始化資料庫,並指定啟動mysql的使用者,否則就會在啟動MySQL時出現許可權不足的問題

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --lc_messages_dir=/usr/local/mysql/share --lc_messages=en_US

初始化完成後,在my.cnf中配置的datadir目錄(/var/log/mysqld.log)下生成一個error.log檔案,裡面記錄了root使用者的隨機密碼。

cat /var/log/mysqld.log

執行後記錄最後一行:root@localhost: xxxxx 。 這裡的xxxxx就是初始密碼。後面登入資料庫要用到。

4. 啟動資料庫

#源目錄啟動:
/usr/local/mysql/support-files/mysql.server start

設定開機自啟動服務

# 複製啟動指令碼到資源目錄 
cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 

# 增加mysqld服務控制指令碼執行許可權 
chmod +x /etc/rc.d/init.d/mysqld 

# 將mysqld服務加入到系統服務 
chkconfig --add mysqld 

# 檢查mysqld服務是否已經生效 
chkconfig --list mysqld 

# 切換至mysql使用者,啟動mysql,或者稍後下一步再啟動。 
service mysqld start 
# 從此就可以使用service mysqld命令啟動/停止服務
su mysql 
service mysqld start 
service mysqld stop 
service mysqld restart 

5.登陸,修改密碼,預置dolphinscheduler的使用者

1. 修改密碼

```
# 系統預設會查詢/usr/bin下的命令;建立一個連結檔案。 
ln -s /usr/local/mysql/bin/mysql /usr/bin 
# 登陸mysql的root使用者 
mysql -uroot -p 
# 輸入上面的預設初始密碼(root@localhost: xxxxx) 
# 修改root使用者密碼為XXXXXX 
set password for root@localhost=password("XXXXXX"); 
```

2. 預置dolphinscheduler的使用者

```
mysql -uroot -p 
mysql>CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 
# 修改 {user} 和 {password} 為你希望的使用者名稱和密碼,192.168.56.201是我的主機ID 
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler'; 
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler'; 
mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'192.168.56.201' IDENTIFIED BY 'dolphinscheduler'; 
#重新整理許可權 
mysql> flush privileges; 
#檢查是否建立使用者成功 
mysql> show databases; 
#出現dolphinscheduler,檢視建立的使用者 
mysql> use mysql; 
mysql> select User,authentication_string,Host from user;
```

安裝dolphinscheduler服務

1. 建立本機id免密

在任意資料夾下進行這一步均可,為防止誤會,我在dolphinscheduler203進行這一步,建立使用者dolphinscheduler,後面所有操作都是再這個使用者下做的。設定root免密登入該使用者:

# 建立使用者需使用 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 
# 修改目錄許可權,在這一步前將jdbcDriver(我的mysql版本5.6.1,driver版本8.0.16)放入lib裡,一併修改許可權 
chown -R dolphinscheduler:dolphinscheduler dolphinscheduler203 
#進入新使用者 
su dolphinscheduler 

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa 
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
chmod 600 ~/.ssh/authorized_keys

2. 修改配置引數

  1. 修改install-config.conf檔案
[dolphinscheduler@km1 dolphinscheduler203]$ vi conf/config/install-config.conf 
修改: 
ips="192.168.56.201" 
masters="192.168.56.201" 
workers="192.168.56.201:default" 
alertServer="192.168.56.201" 
apiServers="192.168.56.201" 
pythonGatewayServers="192.168.56.201" 
# DolphinScheduler安裝路徑,如果不存在會建立,這裡不能放你解壓後的ds路徑,放置後在執行程式碼時同名檔案、資料夾會衝突導致消失 
installPath="/opt/dolphinscheduler203" 
# 部署使用者,填寫在 **配置使用者免密及許可權** 中建立的使用者 
deployUser="dolphinscheduler" 
# --------------------------------------------------------- 
# DolphinScheduler ENV 
# --------------------------------------------------------- 
# 安裝的JDK中 JAVA_HOME 所在的位置 
javaHome="/opt/hadoopclient/JDK/jdk1.8.0_272" 
# --------------------------------------------------------- 
# Database 
# --------------------------------------------------------- 
# 資料庫的型別,使用者名稱,密碼,IP,埠,後設資料庫db。其中 DATABASE_TYPE 目前支援 mysql, postgresql, H2 
# 請確保配置的值使用雙引號引用,否則配置可能不生效 
DATABASE_TYPE="mysql" 
SPRING_DATASOURCE_URL="jdbc:mysql://192.168.56.201:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8" 
# 如果你不是以 dolphinscheduler/dolphinscheduler 作為使用者名稱和密碼的,需要進行修改 
SPRING_DATASOURCE_USERNAME="dolphinscheduler" 
SPRING_DATASOURCE_PASSWORD="dolphinscheduler" 
# --------------------------------------------------------- 
# Registry Server 
# --------------------------------------------------------- 
# 註冊中心地址,zookeeper服務的地址 
registryServers="192.168.56.201:2181"

zk地址獲取方式:

登入manager,訪問zookeeper服務,copy管理ip即可(前提ECS與MRS叢集網路已打通):

基於雲服務MRS構建DolphinScheduler2排程系統

2. 修改 conf/env 目錄下的 dolphinscheduler_env.sh
以相關用到的軟體都安裝在/opt/Bigdata/client下為例:

•    export HADOOP_HOME=/opt/Bigdata/client/HDFS/Hadoop
•    export HADOOP_CONF_DIR=/opt/Bigdata/client/HDFS/Hadoop
•    export SPARK_HOME2=/opt/Bigdata/client/Spark2x/spark
•    export PYTHON_HOME=/usr/bin/pytho
•    export JAVA_HOME=/opt/Bigdata/client/JDK/jdk1.8.0_272
•    export HIVE_HOME=/opt/Bigdata/client/Hive/Beeline
•    export FLINK_HOME=/opt/Bigdata/client/Flink/flink
•    export DATAX_HOME=/xxx/datax/bin/datax.py
•    export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH

說明

  • 這一步非常重要,例如 JAVA_HOME 和 PATH 是必須要配置的,沒有用到的可以忽略或者註釋掉
  • 環境變數查詢方式說明:假設MRS客戶端安裝在/opt/Bigdata/client
source /opt/client/bigdata_env
HADOOP_HOME環境地址:通過echo $HADOOP_HOME獲得 /opt/Bigdata/client/HDFS/Hadoop
HADOOP_CONF_DIR:/opt/Bigdata/client/HDFS/Hadoop
SPARK_HOME: 通過echo $SPARK_HOME獲得/opt/Bigdata/client/Spark2x/spark
JAVA_HOME: 通過echo $JAVA_HOME獲得/opt/Bigdata/client/JDK/jdk1.8.0_272
HIVE_HOME:通過echo $HIVE_HOME獲得/opt/Bigdata/client/Hive/Beeline
FLINK_HOME:通過echo $FLINK_HOME 獲得/opt/Bigdata/client/Flink/flink

3. 將mysql 驅動包放入lib下

基於雲服務MRS構建DolphinScheduler2排程系統
tar -zxvf mysql-connector-java-5.1.47.tar.gz
基於雲服務MRS構建DolphinScheduler2排程系統
cp mysql-connector-java-5.1.47.jar /opt/dolphinscheduler203/lib/

4.建立後設資料庫資料表

執行sh script/create-dolphinscheduler.sh

5. 服務安裝、啟停

每次啟停都可以重新部署一次:sh install.sh

啟停命令

# 一鍵停止叢集所有服務 
sh ./bin/stop-all.sh 

# 一鍵開啟叢集所有服務 
sh ./bin/start-all.sh 

# 啟停 Master 
sh ./bin/dolphinscheduler-daemon.sh stop master-server 
sh ./bin/dolphinscheduler-daemon.sh start 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 

# 啟停 Python Gateway 
sh ./bin/dolphinscheduler-daemon.sh start python-gateway-server 
sh ./bin/dolphinscheduler-daemon.sh stop python-gateway-server

6. 登入系統

訪問前端頁面地址:
使用者名稱密碼:admin/dolphinscheduler123

基於雲服務MRS構建DolphinScheduler2排程系統

提交MRS任務

1.登入進入dolphinscheduler webui

基於雲服務MRS構建DolphinScheduler2排程系統

2. 配置MRS-hive連線

登入mrs manager檢視hiveserver ip:

基於雲服務MRS構建DolphinScheduler2排程系統

建立Hive資料連線,普通叢集沒有許可權可以使用預設使用者hive,如有需要可以使用在MRS裡面已經建立的使用者:

基於雲服務MRS構建DolphinScheduler2排程系統

3. 建立任務

1、建立專案

基於雲服務MRS構建DolphinScheduler2排程系統

2、建立工作流

基於雲服務MRS構建DolphinScheduler2排程系統

3、在工作流編輯任務

基於雲服務MRS構建DolphinScheduler2排程系統

4、任務上線

基於雲服務MRS構建DolphinScheduler2排程系統

5、啟動任務流之後可以查詢工作流例項和任務例項

基於雲服務MRS構建DolphinScheduler2排程系統基於雲服務MRS構建DolphinScheduler2排程系統

6、登入Manager頁面,選擇“叢集 > 服務 > Yarn > 概覽”

7、單擊“ResourceManager WebUI”後面對應的連結,進入Yarn的WebUI頁面,檢視Spark任務是否執行

基於雲服務MRS構建DolphinScheduler2排程系統

 

華為夥伴暨開發者大會2022火熱來襲,重磅內容不容錯過!

【精彩活動】

勇往直前·做全能開發者→12場技術直播前瞻,8大技術寶典高能輸出,還有程式碼密室、知識競賽等多輪神祕任務等你來挑戰。即刻闖關,開啟終極大獎!點選踏上全能開發者晉級之路吧!

【技術專題】

未來已來,2022技術探祕→華為各領域的前沿技術、重磅開源專案、創新的應用實踐,站在智慧世界的入口,探索未來如何照進現實,乾貨滿滿點選瞭解

 

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章