DolphinScheduler安裝與使用

因業務發展需要,現有數據平臺要承擔的任務越來越多,迫切需要上線一個易用的調度系統,考慮到要將現有的定時任務從crontab快速遷移到新調度系統,且要易於部署管理,方便擴展,支持HA等要求,近期調研了多款調度系統如airflow以及azkaban,最後發現了一款國產開源的調度系統非常適合我們的需求(最重要還有天生支持中文,不用花時間調神馬時區問題,漢化問題,字符編碼問題等等一堆糟心問題,哈哈),DolphinScheduler的前身是EasyScheduler,
安裝包下載地址:https://dolphinscheduler.apache.org/en-us/docs/user_doc/download.html

1.部署後端
  • 1.1後端安裝,支持自動安裝,源碼編譯安裝,這裏使用自動安裝

    • 準備,創建新用戶big-data,修改用戶權限,賦予sudo權限

       $ chmod 640 /etc/sudoers && vim /etc/sudoers 
       #在root    ALL=(ALL)       ALL行下添加:
       big-data  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
      
    • 給big-data配置ssh免密(從node1開始,每個節點執行)

      node1: ssh-keygen -t rsa
      登錄各節點執行ssh-keygen -t rsa 一路回車到結束,在~/.ssh/下面會生成一個公鑰文件id_rsa.pub
      cat  ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 將公鑰追加到authorized_keys
      $ chmod 600  ~/.ssh/authorized_keys 修改權限
      將 ~/.ssh/authorized_keys從當前節點分發到其他各個節點。如:
      scp  ~/.ssh/authorized_keys big-data@hdfs1:~/.ssh/
      
    • 創建元數據庫:

      CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
      GRANT ALL PRIVILEGES ON escheduler.* TO 'escheduler'@'%' IDENTIFIED BY 'escheduler';
      flush privileges;
      
    • 創建安裝目錄:

       $ sudo mkdir /opt/dolphinScheduler  
       #修改部署目錄權限
       $ chown big-data:big-data  /opt/dolphinScheduler
       $ cd /opt/dolphinScheduler
      
    • 上傳安裝包:
      在這裏插入圖片描述 mkdir escheduler #存放後端包解壓文件
      mkdir front #存放前端包解壓文件
      在這裏插入圖片描述
      在這裏插入圖片描述

    • 修改配置文件:vim /opt/dolphinScheduler/escheduler/conf/application-dao.properties,創建表和導入基礎數據
      註釋掉postgre配置,修改mysql配置:spring.datasource.url,username以及password
      在這裏插入圖片描述

    • 執行創建表和導入數據腳本:
      sh backend/script/create-dolphinscheduler.sh
      執行過程如遇到如下報錯:
      Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
      將mysql驅動拷貝到lib目錄下即可:
      在這裏插入圖片描述

    • 修改運行參數
      vi conf/env/.dolphinscheduler_env.sh
      在這裏插入圖片描述

    • 修改 install.sh中的各參數,替換成自身業務所需的值

      # for example postgresql or mysql ...
      dbtype="mysql"
      # db address and port
      dbhost="slave199:3306"
      # db name
      dbname="escheduler"
      # db username
      username="escheduler"
      # db passwprd
      passowrd="escheduler"
      #各節點部署後端服務目錄,和當前解壓安裝包目錄不一樣
      installPath="/opt/dolphinScheduler/backend"
      # 部署使用的user,需要有免密sudo權限以及ssh權限
      deployUser="big-data"
      # zk cluster
      zkQuorum="master197:2181,slave198:2181,slave199:2181"
      # 需要部署dolphinscheduler的節點
      ips="master197,slave198,slave199"
      #master節點,可配置多個
      masters="slave198"
      #worker節點
      workers="master197,slave198,slave199"
      #alert服務節點
      alertServer="slave198"
      #api服務節點
      apiServers="slave198"
      # alert config
      # mail protocol
      mailProtocol="SMTP"
      # mail server host
      mailServerHost="smtp.exmail.qq.com"
      # mail server port
      mailServerPort="465"
      # sender
      mailSender="[email protected]"
      # user
      mailUser="xxx"
      # sender password
      mailPassword="passwd"
      # 資源中心上傳選擇存儲方式:HDFS,S3,NONE
      resUploadStartupType="HDFS"
      # 如果resUploadStartupType爲HDFS,defaultFS寫namenode地址,支持HA,需要將core-site.xml和hdfs-site.xml放到conf目錄下
      # 如果是S3,則寫S3地址,比如說:s3a://escheduler,注意,一定要創建根目錄/escheduler
      defaultFS="hdfs://slave198:8020"
      # resourcemanager HA configuration, if it is a single resourcemanager, here is yarnHaIps=""
      yarnHaIps="master197,slave199"
      #如果是單 resourcemanager,只需要配置一個主機名稱,如果是resourcemanager HA,則默認配置就好
      singleYarnIp="master197"
      #部署scheduler用戶的hdfs根路徑
      hdfsPath="/big-data"
      #hdfs集羣的root用戶
      hdfsRootUser="hdfs"
      # common config
      # Program root path
      programPath="/tmp/dolphinscheduler"
      # download path
      downloadPath="/tmp/dolphinscheduler/download"
      # task execute path
      execPath="/tmp/dolphinscheduler/exec"
      # SHELL environmental variable path
      shellEnvPath="$installPath/conf/env/.dolphinscheduler_env.sh"
      # suffix of the resource file
      resSuffixs="txt,log,sh,conf,cfg,py,java,sql,hql,xml"
      
    • 將hadoop的配置文件hdfs-site.xml,以及core-site.xml拷貝到conf下:

      cp /etc/hadoop/conf/hdfs-site.xml conf/
      cp /etc/hadoop/conf/core-site.xml conf/
      
    • 執行一鍵安裝部署腳本:
      sh install.sh

    • dolphinscheduler後端服務啓停腳本:

       #啓動
        /opt/dolphinScheduler/backend/script/start-all.sh
       #停止
       /opt/dolphinScheduler/backend/script/stop-all.sh
      
    • 服務成功後,會看到如下相關進程

      [big-data@slave198 logs]$ jps
      28817 WorkerServer
      28995 ApiApplicationServer
      28756 MasterServer
      28936 AlertServer
      28875 LoggerServer
      
  • 1.2報錯解決
    /opt/dolphinScheduler/backend/logs/*.out日誌文件中發現有如下錯誤:

    nohup: failed to run command ‘/bin/java’: No such file or directory

    將JAVA_HOME/bin下的java軟連接到/bin下,(所有節點)
    ln -s $JAVA_HOME/bin/java /bin/java

2.部署前端
  • 2.1下載安裝包並解壓
      cd /opt/dolphinScheduler
      mkdir  front
      tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -C front
      ```
    
  • 2.2執行自動化安裝部署腳本
    sudo sh ./install-dolphinscheduler-ui.sh
    在這裏插入圖片描述

使用自動化部署腳本會檢查系統環境是否安裝了Nginx,如果沒有安裝則會通過網絡自動下載Nginx包安裝,通過引導設置後的Nginx配置文件爲 /etc/nginx/conf.d/dolphinscheduler.conf 。

  • 2.3報錯解決
    安裝nginx過程執行firewall-cmd報錯:ModuleNotFoundError: No module named 'gi'
    vim /usr/bin/firewall-cmd 將#!/usr/bin/python -Es 改爲 #!/usr/bin/python2 -Es
    vim /usr/sbin/firewalld, 將#!/usr/bin/python -Es 改爲 #!/usr/bin/python2 -Es 
    #然後重啓nginx服務即可!
    systemctl restart  nginx
    #查看nginx服務狀態
    systemctl status nginx
    #停止nginx服務
    systemctl stop nginx
    #如果遇到nginx服務啓動失敗:
    #nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
    #執行: 
    sudo nginx -c /etc/nginx/nginx.conf 
    nginx -s reload
    #如果報錯: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    #找到佔用80端口的進程,然後kill掉即可!
    netstat -ntlp | grep 80
    kill pid
    
3.開始使用dolphinScheduler
  • 3.1訪問:http://slave198:8888/
    使用dolphinscheduler的默認用戶密碼登錄:admin/dolphinscheduler123
    在這裏插入圖片描述
  • 3.2創建一個隊列:隊列管理>>創建隊列,輸入名稱和隊列值,然後提交保存
    在這裏插入圖片描述
  • 3.3創建租戶:租戶管理>>創建租戶,輸入租戶編碼,名稱,選擇隊列名稱,然後提交(注意這裏的租戶可以是linux系統已經存在的用戶)
    在這裏插入圖片描述
  • 3.4創建普通用戶:用戶管理>>創建用戶,輸入用戶名稱、密碼、租戶名和郵箱,手機號選填 然後提交
    在這裏插入圖片描述
  • 3.5創建告警組:告警組管理>>創建告警組,輸入組名稱,類型
    在這裏插入圖片描述
  • 3.6切換到test用戶登錄,然後創建一個項目:項目管理>>
    在這裏插入圖片描述
  • 3.7給項目創建工作流:點擊新建項目進入項目首頁,點擊工作流定義>>創建工作流>>點擊shell圖標(選擇項有:SHELL、SUB_PROCESS、PROCEDURE、SQL、SPARK、FLINK、MR、PYTHON、DEPENDENT、HTTP),拖拽到畫布,新增一個Shell任務,輸入節點名稱、描述、腳本;選擇運行標誌,任務優先級 (級別高的任務在執行隊列中會優先執行,相同優先級的任務按照先進先出的順序執行),超時告警,選擇超市策略(當任務執行時間超過超時時長可以告警並且超時失敗),填寫超時時長 ,然後點擊確認添加
    在這裏插入圖片描述
  • 3.8保存dag:工作流定義完成後,點擊保存,輸入dag名稱,描述,選擇租戶,最後添加
    在這裏插入圖片描述
  • 3.9執行工作流:剛保存的dag處於下線狀態,可以編輯但不能執行,需要上線,才能執行,點擊操作欄下的上線圖標按鈕上線,然後點擊運行,需要設置運行參數,參數說明如下:
    失敗策略:當某一個任務節點執行失敗時,其他並行的任務節點需要執行的策略。”繼續“表示:其他任務節點正常執行,”結束“表示:終止所有正在執行的任務,並終止整個流程。
    通知策略:當流程結束,根據流程狀態發送流程執行信息通知郵件。
    流程優先級:流程運行的優先級,分五個等級:最高(HIGHEST),高(HIGH),中(MEDIUM),低(LOW),最低(LOWEST)。級別高的流程在執行隊列中會優先執行,相同優先級的流程按照先進先出的順序執行。
    worker分組: 這個流程只能在指定的機器組裏執行。默認是Default,可以在任一worker上執行。
    通知組: 當流程結束,或者發生容錯時,會發送流程信息郵件到通知組裏所有成員。
    收件人:輸入郵箱後按回車鍵保存。當流程結束、發生容錯時,會發送告警郵件到收件人列表。
    抄送人:輸入郵箱後按回車鍵保存。當流程結束、發生容錯時,會抄送告警郵件到抄送人列表。
    
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 3.10查看執行結果:點擊任務實例可以查看每個任務的列表信息,點擊操作欄,查看日誌信息。
    在這裏插入圖片描述
  • 3.11定時執行工作流:點擊工作流定義,找到需要定時執行的任務,點擊操作欄下定時圖標按鈕,選擇起止時間,定時週期,失敗策略,通知策略等,然後點創建,之後可以看到定時狀態位下線,點擊定時管理跳到定時管理頁,點擊上線,上線定時任務,定時任務的執行狀態可以在操作欄下樹形圖中快速瀏覽到
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
4.使用worker分組執行任務
worker分組,提供了一種讓任務在指定的worker上運行的機制。管理員創建worker分組,在任務節點和運行參數中設置中可以指定該任務運行的worker分組,如果指定的分組被刪除或者沒有指定分組,則該任務會在任一worker上運行。
worker分組內多個ip地址(不能寫別名),以英文逗號分隔。
  • 4.1切換到admin用戶登錄,點擊安全中心>>worker分組管理>>創建worker分組,輸入組名稱和ip,多個ip之間用英文,分割。提交後可通過操作欄下編輯按鈕進行修改。
    在這裏插入圖片描述
    在這裏插入圖片描述
5.添加數據源
一般SQL腳本執行時會用到多種數據源,例如MySQL、PostgreSQL、Hive、Impala、Spark、ClickHouse、Oracle、SQL Server,
通過添加數據源在DolphinScheduler頁面編寫Job時直接選擇,不用再指定驅動、連接、用戶名和密碼等信息,
可以快速創建一個SQL腳本的工作流Job,同時這個數據源時用戶隔離的,每個用戶添加的數據源相互獨立(admin用戶除外,管理員用戶可以看到所有用戶添加的數據源)
  • 5.1配置mysql數據源,點擊數據源中心 >> 創建數據源,輸入名稱、主機名、端口、用戶名密碼、以及庫名,然後點擊測試連接,成功後點擊提交即可.
    在這裏插入圖片描述
未完待續
發佈了10 篇原創文章 · 獲贊 4 · 訪問量 2637
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章