日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

DolphinScheduler大数据调度系统

發布時間:2023/12/14 windows 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DolphinScheduler大数据调度系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、背景

在2017年,易觀在運營自己6.8Pb大小、6.02億月活、每天近萬個調度任務的大數據平臺時,受到ETL復雜的依賴關系、平臺易用性、可維護性及二次開發等方面掣肘,易觀的技術團隊渴望找到一個具有以下功能的數據調度工具:

  • 易于使用,開發人員可以通過非常簡單的拖拽操作構建ETL過程。不僅對于ETL開發人員,無法編寫代碼的人也可以使用此工具進行ETL操作,例如系統管理員和分析師;
  • 解決“復雜任務依賴”問題,并且可以實時監視ETL運行狀態;
  • 支持多租戶;
  • 支持許多任務類型:Shell,MR,Spark,SQL(mysql,postgresql,hive,sparksql),Python,Sub_Process,Procedure等;
  • 支持HA和線性可擴展性。

易觀技術團隊意識到現有開源項目沒有能夠達到他們要求的,因此決定自行開發這個工具。他們在2017年底設計了DolphinScheduler(原名:EasyScheduler)的主要架構;2018年5月完成第一個內部使用版本,后來又迭代了幾個內部版本后,系統逐漸穩定下來。

2019年8月29日易觀捐贈給 Apache 并啟動孵化,由孵化器管理委員會成員進行輔導和孵化。北京時間 2021年4月9日Apache 軟件基金會于在官方渠道宣布Apache DolphinScheduler 畢業成為Apache頂級項目。這是首個由國人主導并貢獻到 Apache 的大數據工作流調度領域的頂級項目。

目前,DolphinScheduler? 已經是聯通、IDG、IBM、京東物流、聯想、新東方、諾基亞、360、順豐和騰訊等 400+ 公司在使用的分布式可視化大數據工作流調度系統。

原技術團隊官方文檔:https://analysys.github.io/easyscheduler_docs_cn/

Github地址:https://github.com/apache/dolphinscheduler

Apache地址:https://dolphinscheduler.apache.org/zh-cn/docs/1.3.4/user_doc/architecture-design.html

二、特點

海豚調度的 Slogan:調度選的好,下班回家早。調度用的對,半夜安心睡。

DolphinScheduler提供了許多易于使用的功能,可加快數據ETL工作開發流程的效率。其主要特點如下:

  • 通過拖拽以DAG 圖的方式將 Task 按照任務的依賴關系關聯起來,可實時可視化監控任務的運行狀態;
  • 支持豐富的任務類型;
  • 支持工作流定時調度、依賴調度、手動調度、手動暫停/停止/恢復,同時支持失敗重試/告警、從指定節點恢復失敗、Kill 任務等操作;
  • 支持工作流全局參數及節點自定義參數設置;
  • 支持集群HA,通過 Zookeeper實現 Master 集群和 Worker 集群去中心化;
  • 支持工作流運行歷史樹形/甘特圖展示、支持任務狀態統計、流程狀態統計;
  • 支持補數,并行或串行回填數據。

與同類調度系統的對比

三、技術架構

系統架構設計

在對調度系統架構說明之前,我們先來認識一下調度系統常用的名詞

1.名詞解釋

DAG:?全稱Directed Acyclic Graph,簡稱DAG。工作流中的Task任務以有向無環圖的形式組裝起來,從入度為零的節點進行拓撲遍歷,直到無后繼節點為止。舉例如下圖:

dag示例

流程定義:通過拖拽任務節點并建立任務節點的關聯所形成的可視化DAG

流程實例:流程實例是流程定義的實例化,可以通過手動啟動或定時調度生成,流程定義每運行一次,產生一個流程實例

任務實例:任務實例是流程定義中任務節點的實例化,標識著具體的任務執行狀態

任務類型: 目前支持有SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依賴)、,同時計劃支持動態插件擴展,注意:其中子?SUB_PROCESS?也是一個單獨的流程定義,是可以單獨啟動執行的

調度方式:?系統支持基于cron表達式的定時調度和手動調度。命令類型支持:啟動工作流、從當前節點開始執行、恢復被容錯的工作流、恢復暫停流程、從失敗節點開始執行、補數、定時、重跑、暫停、停止、恢復等待線程。其中?恢復被容錯的工作流?和?恢復等待線程?兩種命令類型是由調度內部控制使用,外部無法調用

定時調度:系統采用?quartz?分布式調度器,并同時支持cron表達式可視化的生成

依賴:系統不單單支持?DAG?簡單的前驅和后繼節點之間的依賴,同時還提供任務依賴節點,支持流程間的自定義任務依賴

優先級?:支持流程實例和任務實例的優先級,如果流程實例和任務實例的優先級不設置,則默認是先進先出

郵件告警:支持?SQL任務?查詢結果郵件發送,流程實例運行結果郵件告警及容錯告警通知

失敗策略:對于并行運行的任務,如果有任務失敗,提供兩種失敗策略處理方式,繼續是指不管并行運行任務的狀態,直到流程失敗結束。結束是指一旦發現失敗任務,則同時Kill掉正在運行的并行任務,流程失敗結束

補數:補歷史數據,支持區間并行和串行兩種補數方式

2.系統架構

2.1 系統架構圖

系統架構圖

2.2 啟動流程活動圖

啟動流程活動圖

2.3 架構說明

  • MasterServer

    MasterServer采用分布式無中心設計理念,MasterServer主要負責 DAG 任務切分、任務提交監控,并同時監聽其它MasterServer和WorkerServer的健康狀態。 MasterServer服務啟動時向Zookeeper注冊臨時節點,通過監聽Zookeeper臨時節點變化來進行容錯處理。 MasterServer基于netty提供監聽服務。

    該服務內主要包含:

    • Distributed Quartz分布式調度組件,主要負責定時任務的啟停操作,當quartz調起任務后,Master內部會有線程池具體負責處理任務的后續操作

    • MasterSchedulerThread是一個掃描線程,定時掃描數據庫中的?command?表,根據不同的命令類型進行不同的業務操作

    • MasterExecThread主要是負責DAG任務切分、任務提交監控、各種不同命令類型的邏輯處理

    • MasterTaskExecThread主要負責任務的持久化

  • WorkerServer

    WorkerServer也采用分布式無中心設計理念,WorkerServer主要負責任務的執行和提供日志服務。 WorkerServer服務啟動時向Zookeeper注冊臨時節點,并維持心跳。 Server基于netty提供監聽服務。

    該服務包含:

    • FetchTaskThread主要負責不斷從Task Queue中領取任務,并根據不同任務類型調用TaskScheduleThread對應執行器。

    • LoggerServer是一個RPC服務,提供日志分片查看、刷新和下載等功能

  • ZooKeeper

    ZooKeeper服務,系統中的MasterServer和WorkerServer節點都通過ZooKeeper來進行集群管理和容錯。另外系統還基于ZooKeeper進行事件監聽和分布式鎖。?

  • Task Queue

    提供任務隊列的操作,目前隊列也是基于Zookeeper來實現。由于隊列中存的信息較少,不必擔心隊列里數據過多的情況,實際上我們壓測過百萬級數據存隊列,對系統穩定性和性能沒影響。

  • Alert

    提供告警相關接口,接口主要包括告警兩種類型的告警數據的存儲、查詢和通知功能。其中通知功能又有郵件通知和**SNMP(暫未實現)**兩種,也可以實現企業微信告警。

  • API

    API接口層,主要負責處理前端UI層的請求。該服務統一提供RESTful api向外部提供請求服務。 接口包括工作流的創建、定義、查詢、修改、發布、下線、手工啟動、停止、暫停、恢復、從該節點開始執行等等。

  • UI

    系統的前端頁面,提供系統的各種可視化操作界面。

2.3 架構設計思想

一、去中心化vs中心化

中心化思想:

中心化的設計理念比較簡單,分布式集群中的節點按照角色分工,大體上分為兩種角色:

  • Master的角色主要負責任務分發并監督Slave的健康狀態,可以動態的將任務均衡到Slave上,以致Slave節點不至于“忙死”或”閑死”的狀態。
  • Worker的角色主要負責任務的執行工作并維護和Master的心跳,以便Master可以分配任務給Slave。

中心化思想設計存在的問題:

  • 一旦Master出現了問題,則群龍無首,整個集群就會崩潰。為了解決這個問題,大多數Master/Slave架構模式都采用了主備Master的設計方案,可以是熱備或者冷備,也可以是自動切換或手動切換,而且越來越多的新系統都開始具備自動選舉切換Master的能力,以提升系統的可用性。
  • 另外一個問題是如果Scheduler在Master上,雖然可以支持一個DAG中不同的任務運行在不同的機器上,但是會產生Master的過負載。如果Scheduler在Slave上,則一個DAG中所有的任務都只能在某一臺機器上進行作業提交,則并行任務比較多的時候,Slave的壓力可能會比較大。

去中心化

  • 在去中心化設計里,通常沒有Master/Slave的概念,所有的角色都是一樣的,地位是平等的,全球互聯網就是一個典型的去中心化的分布式系統,聯網的任意節點設備down機,都只會影響很小范圍的功能。

  • 去中心化設計的核心設計在于整個分布式系統中不存在一個區別于其他節點的”管理者”,因此不存在單點故障問題。但由于不存在” 管理者”節點所以每個節點都需要跟其他節點通信才得到必須要的機器信息,而分布式系統通信的不可靠性,則大大增加了上述功能的實現難度。

  • 實際上,真正去中心化的分布式系統并不多見。反而動態中心化分布式系統正在不斷涌出。在這種架構下,集群中的管理者是被動態選擇出來的,而不是預置的,并且集群在發生故障的時候,集群的節點會自發的舉行"會議"來選舉新的"管理者"去主持工作。最典型的案例就是ZooKeeper及Go語言實現的Etcd。

  • DolphinScheduler的去中心化是Master/Worker注冊到Zookeeper中,實現Master集群和Worker集群無中心,并使用Zookeeper分布式鎖來選舉其中的一臺Master或Worker為“管理者”來執行任務。

二、分布式鎖實踐

DolphinScheduler使用ZooKeeper分布式鎖來實現同一時刻只有一臺Master執行Scheduler,或者只有一臺Worker執行任務的提交。

  • 獲取分布式鎖的核心流程算法如下
  • DolphinScheduler中Scheduler線程分布式鎖實現流程圖:
  • 三、線程不足循環等待問題

    • 如果一個DAG中沒有子流程,則如果Command中的數據條數大于線程池設置的閾值,則直接流程等待或失敗。
    • 如果一個大的DAG中嵌套了很多子流程,如下圖則會產生“死等”狀態:

    上圖中MainFlowThread等待SubFlowThread1結束,SubFlowThread1等待SubFlowThread2結束, SubFlowThread2等待SubFlowThread3結束,而SubFlowThread3等待線程池有新線程,則整個DAG流程不能結束,從而其中的線程也不能釋放。這樣就形成的子父流程循環等待的狀態。此時除非啟動新的Master來增加線程來打破這樣的”僵局”,否則調度集群將不能再使用。

    對于啟動新Master來打破僵局,似乎有點差強人意,于是我們提出了以下三種方案來降低這種風險:

  • 計算所有Master的線程總和,然后對每一個DAG需要計算其需要的線程數,也就是在DAG流程執行之前做預計算。因為是多Master線程池,所以總線程數不太可能實時獲取。
  • 對單Master線程池進行判斷,如果線程池已經滿了,則讓線程直接失敗。
  • 增加一種資源不足的Command類型,如果線程池不足,則將主流程掛起。這樣線程池就有了新的線程,可以讓資源不足掛起的流程重新喚醒執行。
  • 注意:Master Scheduler線程在獲取Command的時候是FIFO的方式執行的。

    于是我們選擇了第三種方式來解決線程不足的問題。

    配置文件

    目錄結構

    目前dolphinscheduler 所有的配置文件都在 [conf ] 目錄中. 為了更直觀的了解[conf]目錄所在的位置以及包含的配置文件,請查看下面dolphinscheduler安裝目錄的簡化說明. 本文主要講述dolphinscheduler的配置文件.其他部分先不做贅述.

    [注:以下 dolphinscheduler 簡稱為DS.]

    ├─bin DS命令存放目錄 │ ├─dolphinscheduler-daemon.sh 啟動/關閉DS服務腳本 │ ├─start-all.sh 根據配置文件啟動所有DS服務 │ ├─stop-all.sh 根據配置文件關閉所有DS服務 ├─conf 配置文件目錄 │ ├─application-api.properties api服務配置文件 │ ├─datasource.properties 數據庫配置文件 │ ├─zookeeper.properties zookeeper配置文件 │ ├─master.properties master服務配置文件 │ ├─worker.properties worker服務配置文件 │ ├─quartz.properties quartz服務配置文件 │ ├─common.properties 公共服務[存儲]配置文件 │ ├─alert.properties alert服務配置文件 │ ├─config 環境變量配置文件夾 │ ├─install_config.conf DS環境變量配置腳本[用于DS安裝/啟動] │ ├─env 運行腳本環境變量配置目錄 │ ├─dolphinscheduler_env.sh 運行腳本加載環境變量配置文件[如: JAVA_HOME,HADOOP_HOME, HIVE_HOME ...] │ ├─org mybatis mapper文件目錄 │ ├─i18n i18n配置文件目錄 │ ├─logback-api.xml api服務日志配置文件 │ ├─logback-master.xml master服務日志配置文件 │ ├─logback-worker.xml worker服務日志配置文件 │ ├─logback-alert.xml alert服務日志配置文件 ├─sql DS的元數據創建升級sql文件 │ ├─create 創建SQL腳本目錄 │ ├─upgrade 升級SQL腳本目錄 │ ├─dolphinscheduler_postgre.sql postgre數據庫初始化腳本 │ ├─dolphinscheduler_mysql.sql mysql數據庫初始化腳本 │ ├─soft_version 當前DS版本標識文件 ├─script DS服務部署,數據庫創建/升級腳本目錄 │ ├─create-dolphinscheduler.sh DS數據庫初始化腳本 │ ├─upgrade-dolphinscheduler.sh DS數據庫升級腳本 │ ├─monitor-server.sh DS服務監控啟動腳本 │ ├─scp-hosts.sh 安裝文件傳輸腳本 │ ├─remove-zk-node.sh 清理zookeeper緩存文件腳本 ├─ui 前端WEB資源目錄 ├─lib DS依賴的jar存放目錄 ├─install.sh 自動安裝DS服務腳本

    配置文件詳解

    序號服務分類配置文件
    1啟動/關閉DS服務腳本dolphinscheduler-daemon.sh
    2數據庫連接配置datasource.properties
    3zookeeper連接配置zookeeper.properties
    4公共[存儲]配置common.properties
    5API服務配置application-api.properties
    6Master服務配置master.properties
    7Worker服務配置worker.properties
    8Alert 服務配置alert.properties
    9Quartz配置quartz.properties
    10DS環境變量配置腳本[用于DS安裝/啟動]install_config.conf
    11運行腳本加載環境變量配置文件
    [如: JAVA_HOME,HADOOP_HOME, HIVE_HOME ...]
    dolphinscheduler_env.sh
    12各服務日志配置文件api服務日志配置文件 : logback-api.xml
    master服務日志配置文件 : logback-master.xml
    worker服務日志配置文件 : logback-worker.xml
    alert服務日志配置文件 : logback-alert.xml

    1.dolphinscheduler-daemon.sh?[啟動/關閉DS服務腳本]

    dolphinscheduler-daemon.sh腳本負責DS的啟動&關閉.?start-all.sh/stop-all.sh最終也是通過dolphinscheduler-daemon.sh對集群進行啟動/關閉操作. 目前DS只是做了一個基本的設置,JVM參數請根據各自資源的實際情況自行設置.

    默認簡化參數如下:

    export DOLPHINSCHEDULER_OPTS=" -server -Xmx16g -Xms1g -Xss512k -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "

    不建議設置"-XX:DisableExplicitGC" , DS使用Netty進行通訊,設置該參數,可能會導致內存泄漏.

    2.datasource.properties [數據庫連接]

    在DS中使用Druid對數據庫連接進行管理,默認簡化配置如下.

    參數默認值描述
    spring.datasource.driver-class-name數據庫驅動
    spring.datasource.url數據庫連接地址
    spring.datasource.username數據庫用戶名
    spring.datasource.password數據庫密碼
    spring.datasource.initialSize5初始連接池數量
    spring.datasource.minIdle5最小連接池數量
    spring.datasource.maxActive5最大連接池數量
    spring.datasource.maxWait60000最大等待時長
    spring.datasource.timeBetweenEvictionRunsMillis60000連接檢測周期
    spring.datasource.timeBetweenConnectErrorMillis60000重試間隔
    spring.datasource.minEvictableIdleTimeMillis300000連接保持空閑而不被驅逐的最小時間
    spring.datasource.validationQuerySELECT 1檢測連接是否有效的sql
    spring.datasource.validationQueryTimeout3檢測連接是否有效的超時時間[seconds]
    spring.datasource.testWhileIdletrue申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。
    spring.datasource.testOnBorrowtrue申請連接時執行validationQuery檢測連接是否有效
    spring.datasource.testOnReturnfalse歸還連接時執行validationQuery檢測連接是否有效
    spring.datasource.defaultAutoCommittrue是否開啟自動提交
    spring.datasource.keepAlivetrue連接池中的minIdle數量以內的連接,空閑時間超過minEvictableIdleTimeMillis,則會執行keepAlive操作。
    spring.datasource.poolPreparedStatementstrue開啟PSCache
    spring.datasource.maxPoolPreparedStatementPerConnectionSize20要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。

    3.zookeeper.properties [zookeeper連接配置]

    參數默認值描述
    zookeeper.quorumlocalhost:2181zk集群連接信息
    zookeeper.dolphinscheduler.root/dolphinschedulerDS在zookeeper存儲根目錄
    zookeeper.session.timeout60000session 超時
    zookeeper.connection.timeout30000連接超時
    zookeeper.retry.base.sleep100基本重試時間差
    zookeeper.retry.max.sleep30000最大重試時間
    zookeeper.retry.maxtime10最大重試次數

    4.common.properties [hadoop、s3、yarn配置]

    common.properties配置文件目前主要是配置hadoop/s3a相關的配置.

    參數默認值描述
    data.basedir.path/tmp/dolphinscheduler本地工作目錄,用于存放臨時文件
    resource.storage.typeNONE資源文件存儲類型: HDFS,S3,NONE
    resource.upload.path/dolphinscheduler資源文件存儲路徑
    hadoop.security.authentication.startup.statefalsehadoop是否開啟kerberos權限
    java.security.krb5.conf.path/opt/krb5.confkerberos配置目錄
    login.user.keytab.usernamehdfs-mycluster@ESZ.COMkerberos登錄用戶
    login.user.keytab.path/opt/hdfs.headless.keytabkerberos登錄用戶keytab
    kerberos.expire.time2kerberos過期時間,整數,單位為小時
    resource.view.suffixstxt,log,sh,conf,cfg,py,java,sql,hql,xml,properties資源中心支持的文件格式
    hdfs.root.userhdfs如果存儲類型為HDFS,需要配置擁有對應操作權限的用戶
    fs.defaultFShdfs://mycluster:8020請求地址如果resource.storage.type=S3,該值類似為: s3a://dolphinscheduler. 如果resource.storage.type=HDFS, 如果 hadoop 配置了 HA,需要復制core-site.xml 和 hdfs-site.xml 文件到conf目錄
    fs.s3a.endpoints3 endpoint地址
    fs.s3a.access.keys3 access key
    fs.s3a.secret.keys3 secret key
    yarn.resourcemanager.ha.rm.idsyarn resourcemanager 地址, 如果resourcemanager開啟了HA, 輸入HA的IP地址(以逗號分隔),如果resourcemanager為單節點, 該值為空即可
    yarn.application.status.addresshttp://ds1:8088/ws/v1/cluster/apps/%s如果resourcemanager開啟了HA或者沒有使用resourcemanager,保持默認值即可. 如果resourcemanager為單節點,你需要將ds1 配置為resourcemanager對應的hostname
    dolphinscheduler.env.pathenv/dolphinscheduler_env.sh運行腳本加載環境變量配置文件[如: JAVA_HOME,HADOOP_HOME, HIVE_HOME ...]
    development.statefalse是否處于開發模式

    5.application-api.properties [API服務配置]

    參數默認值描述
    server.port12345api服務通訊端口
    server.servlet.session.timeout7200session超時時間
    server.servlet.context-path/dolphinscheduler請求路徑
    spring.servlet.multipart.max-file-size1024MB最大上傳文件大小
    spring.servlet.multipart.max-request-size1024MB最大請求大小
    server.jetty.max-http-post-size5000000jetty服務最大發送請求大小
    spring.messages.encodingUTF-8請求編碼
    spring.jackson.time-zoneGMT+8設置時區
    spring.messages.basenamei18n/messagesi18n配置
    security.authentication.typePASSWORD權限校驗類型

    6.master.properties [Master服務配置]

    參數默認值描述
    master.listen.port5678master監聽端口
    master.exec.threads100master工作線程數量,用于限制并行的流程實例數量
    master.exec.task.num20master每個流程實例的并行任務數量
    master.dispatch.task.num3master每個批次的派發任務數量
    master.host.selectorLowerWeightmaster host選擇器,用于選擇合適的worker執行任務,可選值: Random, RoundRobin, LowerWeight
    master.heartbeat.interval10master心跳間隔,單位為秒
    master.task.commit.retryTimes5任務重試次數
    master.task.commit.interval1000任務提交間隔,單位為毫秒
    master.max.cpuload.avg-1master最大cpuload均值,只有高于系統cpuload均值時,master服務才能調度任務. 默認值為-1: cpu cores * 2
    master.reserved.memory0.3master預留內存,只有低于系統可用內存時,master服務才能調度任務,單位為G

    7.worker.properties [Worker服務配置]

    參數默認值描述
    worker.listen.port1234worker監聽端口
    worker.exec.threads100worker工作線程數量,用于限制并行的任務實例數量
    worker.heartbeat.interval10worker心跳間隔,單位為秒
    worker.max.cpuload.avg-1worker最大cpuload均值,只有高于系統cpuload均值時,worker服務才能被派發任務. 默認值為-1: cpu cores * 2
    worker.reserved.memory0.3worker預留內存,只有低于系統可用內存時,worker服務才能被派發任務,單位為G
    worker.groupsdefaultworker分組配置,逗號分隔,例如'worker.groups=default,test'
    worker啟動時會根據該配置自動加入對應的分組

    8.alert.properties [Alert 告警服務配置]

    參數默認值描述
    alert.typeEMAIL告警類型
    mail.protocolSMTP郵件服務器協議
    mail.server.hostxxx.xxx.com郵件服務器地址
    mail.server.port25郵件服務器端口
    mail.senderxxx@xxx.com發送人郵箱
    mail.userxxx@xxx.com發送人郵箱名稱
    mail.passwd111111發送人郵箱密碼
    mail.smtp.starttls.enabletrue郵箱是否開啟tls
    mail.smtp.ssl.enablefalse郵箱是否開啟ssl
    mail.smtp.ssl.trustxxx.xxx.com郵箱ssl白名單
    xls.file.path/tmp/xls郵箱附件臨時工作目錄
    以下為企業微信配置[選填]
    enterprise.wechat.enablefalse企業微信是否啟用
    enterprise.wechat.corp.idxxxxxxx
    enterprise.wechat.secretxxxxxxx
    enterprise.wechat.agent.idxxxxxxx
    enterprise.wechat.usersxxxxxxx
    enterprise.wechat.token.urlhttps://qyapi.weixin.qq.com/cgi-bin/gettoken?
    corpid=corpId&corpsecret=secret
    enterprise.wechat.push.urlhttps://qyapi.weixin.qq.com/cgi-bin/message/send?
    access_token=$token
    enterprise.wechat.user.send.msg發送消息格式
    enterprise.wechat.team.send.msg群發消息格式
    plugin.dir/Users/xx/your/path/to/plugin/dir插件目錄

    9.quartz.properties [Quartz配置]

    這里面主要是quartz配置,請結合實際業務場景&資源進行配置,本文暫時不做展開.

    參數默認值描述
    org.quartz.jobStore.driverDelegateClassorg.quartz.impl.jdbcjobstore.StdJDBCDelegate
    org.quartz.jobStore.driverDelegateClassorg.quartz.impl.jdbcjobstore.PostgreSQLDelegate
    org.quartz.scheduler.instanceNameDolphinScheduler
    org.quartz.scheduler.instanceIdAUTO
    org.quartz.scheduler.makeSchedulerThreadDaemontrue
    org.quartz.jobStore.usePropertiesfalse
    org.quartz.threadPool.classorg.quartz.simpl.SimpleThreadPool
    org.quartz.threadPool.makeThreadsDaemonstrue
    org.quartz.threadPool.threadCount25
    org.quartz.threadPool.threadPriority5
    org.quartz.jobStore.classorg.quartz.impl.jdbcjobstore.JobStoreTX
    org.quartz.jobStore.tablePrefixQRTZ_
    org.quartz.jobStore.isClusteredtrue
    org.quartz.jobStore.misfireThreshold60000
    org.quartz.jobStore.clusterCheckinInterval5000
    org.quartz.jobStore.acquireTriggersWithinLocktrue
    org.quartz.jobStore.dataSourcemyDs
    org.quartz.dataSource.myDs.connectionProvider.classorg.apache.dolphinscheduler.service.quartz.DruidConnectionProvider

    10.install_config.conf [DS環境變量配置腳本[用于DS安裝/啟動]]

    install_config.conf這個配置文件比較繁瑣,這個文件主要有兩個地方會用到.

    • 1.DS集群的自動安裝.

    調用install.sh腳本會自動加載該文件中的配置.并根據該文件中的內容自動配置上述的配置文件中的內容. 比如:dolphinscheduler-daemon.sh、datasource.properties、zookeeper.properties、common.properties、application-api.properties、master.properties、worker.properties、alert.properties、quartz.properties 等文件.

    • 2.DS集群的啟動&關閉.

    DS集群在啟動&關閉的時候,會加載該配置文件中的masters,workers,alertServer,apiServers等參數,啟動/關閉DS集群.

    文件內容如下:

    # 注意: 該配置文件中如果包含特殊字符,如: `.*[]^${}\+?|()@#&`, 請轉義, # 示例: `[` 轉義為 `\[`# 數據庫類型, 目前僅支持 postgresql 或者 mysql dbtype="mysql"# 數據庫 地址 & 端口 dbhost="192.168.xx.xx:3306"# 數據庫 名稱 dbname="dolphinscheduler"# 數據庫 用戶名 username="xx"# 數據庫 密碼 password="xx"# Zookeeper地址 zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"# 將DS安裝到哪個目錄,如: /data1_1T/dolphinscheduler, installPath="/data1_1T/dolphinscheduler"# 使用哪個用戶部署 # 注意: 部署用戶需要sudo 權限, 并且可以操作 hdfs . # 如果使用hdfs的話,根目錄必須使用該用戶進行創建.否則會有權限相關的問題. deployUser="dolphinscheduler"# 以下為告警服務配置 # 郵件服務器地址 mailServerHost="smtp.exmail.qq.com"# 郵件服務器 端口 mailServerPort="25"# 發送者 mailSender="xxxxxxxxxx"# 發送用戶 mailUser="xxxxxxxxxx"# 郵箱密碼 mailPassword="xxxxxxxxxx"# TLS協議的郵箱設置為true,否則設置為false starttlsEnable="true"# 開啟SSL協議的郵箱配置為true,否則為false。注意: starttlsEnable和sslEnable不能同時為true sslEnable="false"# 郵件服務地址值,同 mailServerHost sslTrust="smtp.exmail.qq.com"#業務用到的比如sql等資源文件上傳到哪里,可以設置:HDFS,S3,NONE。如果想上傳到HDFS,請配置為HDFS;如果不需要資源上傳功能請選擇NONE。 resourceStorageType="NONE"# if S3,write S3 address,HA,for example :s3a://dolphinscheduler, # Note,s3 be sure to create the root directory /dolphinscheduler defaultFS="hdfs://mycluster:8020"# 如果resourceStorageType 為S3 需要配置的參數如下: s3Endpoint="http://192.168.xx.xx:9010" s3AccessKey="xxxxxxxxxx" s3SecretKey="xxxxxxxxxx"# 如果ResourceManager是HA,則配置為ResourceManager節點的主備ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx",否則如果是單ResourceManager或者根本沒用到yarn,請配置yarnHaIps=""即可,如果沒用到yarn,配置為"" yarnHaIps="192.168.xx.xx,192.168.xx.xx"# 如果是單ResourceManager,則配置為ResourceManager節點ip或主機名,否則保持默認值即可。 singleYarnIp="yarnIp1"# 資源文件在 HDFS/S3 存儲路徑 resourceUploadPath="/dolphinscheduler"# HDFS/S3 操作用戶 hdfsRootUser="hdfs"# 以下為 kerberos 配置# kerberos是否開啟 kerberosStartUp="false" # kdc krb5 config file path krb5ConfPath="$installPath/conf/krb5.conf" # keytab username keytabUserName="hdfs-mycluster@ESZ.COM" # username keytab path keytabPath="$installPath/conf/hdfs.headless.keytab"# api 服務端口 apiServerPort="12345"# 部署DS的所有主機hostname ips="ds1,ds2,ds3,ds4,ds5"# ssh 端口 , 默認 22 sshPort="22"# 部署master服務主機 masters="ds1,ds2"# 部署 worker服務的主機 # 注意: 每一個worker都需要設置一個worker 分組的名稱,默認值為 "default" workers="ds1:default,ds2:default,ds3:default,ds4:default,ds5:default"# 部署alert服務主機 alertServer="ds3"# 部署api服務主機 apiServers="ds1"

    11.dolphinscheduler_env.sh [環境變量配置]

    通過類似shell方式提交任務的的時候,會加載該配置文件中的環境變量到主機中. 涉及到的任務類型有: Shell任務、Python任務、Spark任務、Flink任務、Datax任務等等

    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 DATAX_HOME=/opt/soft/datax/bin/datax.pyexport PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH

    12.各服務日志配置文件

    對應服務服務名稱日志文件名
    api服務日志配置文件logback-api.xml
    master服務日志配置文件logback-master.xml
    worker服務日志配置文件logback-worker.xml
    alert服務日志配置文件logback-alert.xml

    四、安裝部署

    Linux 操作系統版本要求

    操作系統版本
    Red Hat Enterprise Linux7.0 及以上
    CentOS7.0 及以上
    Oracle Enterprise Linux7.0 及以上
    Ubuntu LTS16.04 及以上

    注意:?以上 Linux 操作系統可運行在物理服務器以及 VMware、KVM、XEN 主流虛擬化環境上。

    網絡要求

    DolphinScheduler正常運行提供如下的網絡端口配置:

    組件默認端口說明
    MasterServer5678非通信端口,只需本機端口不沖突即可
    WorkerServer1234非通信端口,只需本機端口不沖突即可
    ApiApplicationServer12345提供后端通信端口

    注意:

    • MasterServer 和 WorkerServer 不需要開啟網絡間通信,只需本機端口不沖突即可
    • 管理員可根據實際環境中 DolphinScheduler 組件部署方案,在網絡側和主機側開放相關端口

    生產環境

    CPU內存硬盤類型網絡實例數量
    4核+8 GB+SAS千兆網卡1+

    注意:

    • 以上建議配置為部署 DolphinScheduler 的最低配置,生產環境強烈推薦使用更高的配置。
    • 硬盤大小配置建議 50GB+ ,系統盤和數據盤分開。

    4.1 單機部署(Standalone)

    4.1.1 基礎軟件安裝(必裝項)

    • PostgreSQL (8.2.15+) or MySQL (5.7系列) : 兩者任選其一即可, 如MySQL則需要JDBC Driver 5.1.47+
    • JDK?(1.8+) : 必裝,請安裝好后在/etc/profile下配置 JAVA_HOME 及 PATH 變量
    • ZooKeeper (3.4.6+) :必裝
    • Hadoop (2.6+) or MinIO :選裝, 如果需要用到資源上傳功能,針對單機可以選擇本地文件目錄作為上傳文件夾(此操作不需要部署Hadoop);當然也可以選擇上傳到Hadoop or MinIO集群上

    注意:DolphinScheduler本身不依賴Hadoop、Hive、Spark,僅是會調用他們的Client,用于對應任務的運行。

    4.1.2?下載二進制tar.gz包

    請下載最新版本的后端安裝包至服務器部署目錄,比如創建 /opt/dolphinscheduler 做為安裝部署目錄,下載地址:?下載,下載后上傳tar包到該目錄中,并進行解壓

    # 創建部署目錄,部署目錄請不要創建在/root、/home等高權限目錄 mkdir -p /opt/dolphinscheduler; cd /opt/dolphinscheduler; # 解壓縮 tar -zxvf apache-dolphinscheduler-1.3.6-bin.tar.gz -C /opt/dolphinscheduler;mv apache-dolphinscheduler-1.3.6-bin dolphinscheduler-bin

    4.1.3 創建部署用戶并賦予目錄操作權限

    創建部署用戶,并且一定要配置sudo免密。以創建dolphinscheduler用戶為例

    # 創建用戶需使用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# 修改目錄權限,使得部署用戶對dolphinscheduler-bin目錄有操作權限 chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin 注意:- 因為任務執行服務是以 sudo -u {linux-user} 切換不同linux用戶的方式來實現多租戶運行作業,所以部署用戶需要有 sudo 權限,而且是免密的。初學習者不理解的話,完全可以暫時忽略這一點- 如果發現/etc/sudoers文件中有"Default requiretty"這行,也請注釋掉- 如果用到資源上傳的話,還需要給該部署用戶分配操作`本地文件系統或者HDFS或者MinIO`的權限

    4.1.4 ssh免密配置

    切換到部署用戶并配置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?是不需要再輸入密碼的

    4.1.5 數據庫初始化

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

    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 目錄下 datasource.properties 中的下列配置
    vi conf/datasource.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# mysqlspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 需要修改ip,本機localhost即可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 變量

    4.1.6 修改運行參數

    • 修改 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 DATAX_HOME=/opt/soft/datax/bin/datax.py export PATH=$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, 請運行 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中的各參數,特別注意以下參數的配置
    # 這里填 mysql or postgresql dbtype="mysql"# 數據庫連接地址 dbhost="localhost:3306"# 數據庫名 dbname="dolphinscheduler"# 數據庫用戶名,此處需要修改為上面設置的{user}具體值 username="xxx" # 數據庫密碼, 如果有特殊字符,請使用\轉義,需要修改為上面設置的{password}具體值 password="xxx"#Zookeeper地址,單機本機是localhost:2181,記得把2181端口帶上 zkQuorum="localhost:2181"#將DS安裝到哪個目錄,如: /opt/soft/dolphinscheduler,不同于現在的目錄 installPath="/opt/soft/dolphinscheduler"#使用哪個用戶部署,使用第3節創建的用戶 deployUser="dolphinscheduler"# 郵件配置,以qq郵箱為例 # 郵件協議 mailProtocol="SMTP"# 郵件服務地址 mailServerHost="smtp.qq.com"# 郵件服務端口 mailServerPort="25"# mailSender和mailUser配置成一樣即可 # 發送者 mailSender="xxx@qq.com"# 發送用戶 mailUser="xxx@qq.com"# 郵箱密碼 mailPassword="xxx"# TLS協議的郵箱設置為true,否則設置為false starttlsEnable="true"# 開啟SSL協議的郵箱配置為true,否則為false。注意: starttlsEnable和sslEnable不能同時為true sslEnable="false"# 郵件服務地址值,參考上面 mailServerHost sslTrust="smtp.qq.com"# 業務用到的比如sql等資源文件上傳到哪里,可以設置:HDFS,S3,NONE,單機如果想使用本地文件系統,請配置為HDFS,因為HDFS支持本地文件系統;如果不需要資源上傳功能請選擇NONE。強調一點:使用本地文件系統不需要部署hadoop resourceStorageType="HDFS"# 這里以保存到本地文件系統為例 #注:但是如果你想上傳到HDFS的話,NameNode啟用了HA,則需要將hadoop的配置文件core-site.xml和hdfs-site.xml放到conf目錄下,本例即是放到/opt/dolphinscheduler/conf下面,并配置namenode cluster名稱;如果NameNode不是HA,則修改為具體的ip或者主機名即可 defaultFS="file:///data/dolphinscheduler" #hdfs://{具體的ip/主機名}:8020# 如果沒有使用到Yarn,保持以下默認值即可;如果ResourceManager是HA,則配置為ResourceManager節點的主備ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是單ResourceManager請配置yarnHaIps=""即可 # 注:依賴于yarn執行的任務,為了保證執行結果判斷成功,需要確保yarn信息配置正確。 yarnHaIps="192.168.xx.xx,192.168.xx.xx"# 如果ResourceManager是HA或者沒有使用到Yarn保持默認值即可;如果是單ResourceManager,請配置真實的ResourceManager主機名或者ip singleYarnIp="yarnIp1"# 資源上傳根路徑,支持HDFS和S3,由于hdfs支持本地文件系統,需要確保本地文件夾存在且有讀寫權限 resourceUploadPath="/data/dolphinscheduler"# 具備權限創建resourceUploadPath的用戶 hdfsRootUser="hdfs"# 配置 api server port apiServerPort="12345"#在哪些機器上部署DS服務,本機選localhost ips="localhost"#ssh端口,默認22 sshPort="22"#master服務部署在哪臺機器上 masters="localhost"#worker服務部署在哪臺機器上,并指定此worker屬于哪一個worker組,下面示例的default即為組名 workers="localhost:default"#報警服務部署在哪臺機器上 alertServer="localhost"#后端api服務部署在在哪臺機器上 apiServers="localhost"

    注:如果打算用到資源中心功能,請執行以下命令:

    sudo mkdir /data/dolphinscheduler sudo chown -R dolphinscheduler:dolphinscheduler /data/dolphinscheduler

    4.1.7 一鍵部署

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

    sh install.sh

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

    腳本完成后,會啟動以下5個服務,使用jps命令查看服務是否啟動

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

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

    部署成功后,可以進行日志查看,日志統一存放于logs文件夾內

    logs/├── dolphinscheduler-alert-server.log├── dolphinscheduler-master-server.log|—— dolphinscheduler-worker-server.log|—— dolphinscheduler-api-server.log|—— dolphinscheduler-logger-server.log

    4.1.8 登錄系統

    訪問前端頁面地址,接口ip(自行修改)?http://192.168.xx.xx:12345/dolphinscheduler

    用戶名:admin

    密碼:dolphinscheduler123

    4.1.9 啟停服務

    • 一鍵停止集群所有服務

      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

    4.2 集群部署

    4.2.1 基礎軟件安裝(必裝項請自行安裝)

    • PostgreSQL (8.2.15+) or MySQL (5.7系列) : 兩者任選其一即可, 如MySQL則需要JDBC Driver 5.1.47+
    • JDK?(1.8+) : 必裝,請安裝好后在/etc/profile下配置 JAVA_HOME 及 PATH 變量
    • ZooKeeper (3.4.6+) :必裝
    • Hadoop (2.6+) or MinIO :選裝,如果需要用到資源上傳功能,可以選擇上傳到Hadoop or MinIO上
    注意:DolphinScheduler本身不依賴Hadoop、Hive、Spark,僅是會調用他們的Client,用于對應任務的提交。

    4.2.2 下載二進制tar.gz包

    • 請下載最新版本的后端安裝包至服務器部署目錄,比如創建 /opt/dolphinscheduler 做為安裝部署目錄,下載地址:?下載,下載后上傳tar包到該目錄中,并進行解壓
    # 創建部署目錄,部署目錄請不要創建在/root、/home等高權限目錄 mkdir -p /opt/dolphinscheduler; cd /opt/dolphinscheduler; # 解壓縮 tar -zxvf apache-dolphinscheduler-1.3.6-bin.tar.gz -C /opt/dolphinscheduler;mv apache-dolphinscheduler-1.3.6-bin dolphinscheduler-bin

    4.2.3 創建部署用戶和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 注意:- 因為是以 sudo -u {linux-user} 切換不同linux用戶的方式來實現多租戶運行作業,所以部署用戶需要有 sudo 權限,而且是免密的。- 如果發現/etc/sudoers文件中有"Default requiretty"這行,也請注釋掉- 如果用到資源上傳的話,還需要在`HDFS或者MinIO`上給該部署用戶分配讀寫的權限

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

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

      vi /etc/hosts#add ip hostname 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 dosudo 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 dossh-copy-id $ip #該操作執行過程中需要手動輸入dolphinscheduler用戶的密碼 done # 當然 通過 sshpass -p xxx ssh-copy-id $ip 就可以省去輸入密碼了
    • 在ds1上,修改目錄權限,使得部署用戶對dolphinscheduler-bin目錄有操作權限

      sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin

    4.2.5 數據庫初始化

    • 進入數據庫,默認數據庫是PostgreSQL,如選擇MySQL的話,后續需要添加mysql-connector-java驅動包到DolphinScheduler的lib目錄下,這里以MySQL為例
    mysql -h192.168.xx.xx -P3306 -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 目錄下 datasource.properties 中的下列配置
      vi conf/datasource.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# mysqlspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true 需要修改ipspring.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 變量

    4.2.6 修改運行參數

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

      export HADOOP_HOME=/opt/soft/hadoopexport HADOOP_CONF_DIR=/opt/soft/hadoop/etc/hadoop#export SPARK_HOME1=/opt/soft/spark1export SPARK_HOME2=/opt/soft/spark2export PYTHON_HOME=/opt/soft/pythonexport JAVA_HOME=/opt/soft/javaexport HIVE_HOME=/opt/soft/hiveexport FLINK_HOME=/opt/soft/flinkexport DATAX_HOME=/opt/soft/datax/bin/datax.pyexport PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_HOME:$PATH````注: 這一步非常重要,例如 JAVA_HOME 和 PATH 是必須要配置的,沒有用到的可以忽略或者注釋掉`
    • 將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中的各參數,特別注意以下參數的配置

      # 這里填 mysql or postgresql dbtype="mysql"# 數據庫連接地址 dbhost="192.168.xx.xx:3306"# 數據庫名 dbname="dolphinscheduler"# 數據庫用戶名,此處需要修改為上面設置的{user}具體值 username="xxx"# 數據庫密碼, 如果有特殊字符,請使用\轉義,需要修改為上面設置的{password}具體值 password="xxx"#Zookeeper地址 zkQuorum="192.168.xx.xx:2181,192.168.xx.xx:2181,192.168.xx.xx:2181"#將DS安裝到哪個目錄,如: /opt/soft/dolphinscheduler,不同于現在的目錄 installPath="/opt/soft/dolphinscheduler"#使用哪個用戶部署,使用第3節創建的用戶 deployUser="dolphinscheduler"# 郵件配置,以qq郵箱為例 # 郵件協議 mailProtocol="SMTP"# 郵件服務地址 mailServerHost="smtp.qq.com"# 郵件服務端口 mailServerPort="25"# mailSender和mailUser配置成一樣即可 # 發送者 mailSender="xxx@qq.com"# 發送用戶 mailUser="xxx@qq.com"# 郵箱密碼 mailPassword="xxx"# TLS協議的郵箱設置為true,否則設置為false starttlsEnable="true"# 開啟SSL協議的郵箱配置為true,否則為false。注意: starttlsEnable和sslEnable不能同時為true sslEnable="false"# 郵件服務地址值,參考上面 mailServerHost sslTrust="smtp.qq.com"# 業務用到的比如sql等資源文件上傳到哪里,可以設置:HDFS,S3,NONE,單機如果想使用本地文件系統,請配置為HDFS,因為HDFS支持本地文件系統;如果不需要資源上傳功能請選擇NONE。強調一點:使用本地文件系統不需要部署hadoop resourceStorageType="HDFS"#如果上傳資源保存想保存在hadoop上,hadoop集群的NameNode啟用了HA的話,需要將hadoop的配置文件core-site.xml和hdfs-site.xml放到安裝路徑的conf目錄下,本例即是放到/opt/soft/dolphinscheduler/conf下面,并配置namenode cluster名稱;如果NameNode不是HA,則只需要將mycluster修改為具體的ip或者主機名即可 defaultFS="hdfs://mycluster:8020"# 如果沒有使用到Yarn,保持以下默認值即可;如果ResourceManager是HA,則配置為ResourceManager節點的主備ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是單ResourceManager請配置yarnHaIps=""即可 yarnHaIps="192.168.xx.xx,192.168.xx.xx"# 如果ResourceManager是HA或者沒有使用到Yarn保持默認值即可;如果是單ResourceManager,請配置真實的ResourceManager主機名或者ip singleYarnIp="yarnIp1"# 資源上傳根路徑,主持HDFS和S3,由于hdfs支持本地文件系統,需要確保本地文件夾存在且有讀寫權限 resourceUploadPath="/data/dolphinscheduler"# 具備權限創建resourceUploadPath的用戶 hdfsRootUser="hdfs"#在哪些機器上部署DS服務,本機選localhost ips="ds1,ds2,ds3,ds4"#ssh端口,默認22 sshPort="22"#master服務部署在哪臺機器上 masters="ds1,ds2"#worker服務部署在哪臺機器上,并指定此worker屬于哪一個worker組,下面示例的default即為組名 workers="ds3:default,ds4:default"#報警服務部署在哪臺機器上 alertServer="ds2"#后端api服務部署在在哪臺機器上 apiServers="ds1"

      特別注意:

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

    4.2.7 一鍵部署

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

      sh install.sh

      注意: 第一次部署的話,在運行中第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服務

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

    部署成功后,可以進行日志查看,日志統一存放于logs文件夾內

    logs/├── dolphinscheduler-alert-server.log├── dolphinscheduler-master-server.log|—— dolphinscheduler-worker-server.log|—— dolphinscheduler-api-server.log|—— dolphinscheduler-logger-server.log

    4.2.8 登錄系統

    • 訪問前端頁面地址,接口ip(自行修改)?http://192.168.xx.xx:12345/dolphinscheduler

    4.2.9 啟停服務

    • 一鍵停止集群所有服務

      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

    告警信息同樣可以往企業微信中發送,這個需要單獨配置。

    總結

    以上是生活随笔為你收集整理的DolphinScheduler大数据调度系统的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。