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執行任務的提交。
三、線程不足循環等待問題
- 如果一個DAG中沒有子流程,則如果Command中的數據條數大于線程池設置的閾值,則直接流程等待或失敗。
- 如果一個大的DAG中嵌套了很多子流程,如下圖則會產生“死等”狀態:
上圖中MainFlowThread等待SubFlowThread1結束,SubFlowThread1等待SubFlowThread2結束, SubFlowThread2等待SubFlowThread3結束,而SubFlowThread3等待線程池有新線程,則整個DAG流程不能結束,從而其中的線程也不能釋放。這樣就形成的子父流程循環等待的狀態。此時除非啟動新的Master來增加線程來打破這樣的”僵局”,否則調度集群將不能再使用。
對于啟動新Master來打破僵局,似乎有點差強人意,于是我們提出了以下三種方案來降低這種風險:
注意: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 |
| 3 | zookeeper連接配置 | zookeeper.properties |
| 4 | 公共[存儲]配置 | common.properties |
| 5 | API服務配置 | application-api.properties |
| 6 | Master服務配置 | master.properties |
| 7 | Worker服務配置 | worker.properties |
| 8 | Alert 服務配置 | alert.properties |
| 9 | Quartz配置 | quartz.properties |
| 10 | DS環境變量配置腳本[用于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.initialSize | 5 | 初始連接池數量 |
| spring.datasource.minIdle | 5 | 最小連接池數量 |
| spring.datasource.maxActive | 5 | 最大連接池數量 |
| spring.datasource.maxWait | 60000 | 最大等待時長 |
| spring.datasource.timeBetweenEvictionRunsMillis | 60000 | 連接檢測周期 |
| spring.datasource.timeBetweenConnectErrorMillis | 60000 | 重試間隔 |
| spring.datasource.minEvictableIdleTimeMillis | 300000 | 連接保持空閑而不被驅逐的最小時間 |
| spring.datasource.validationQuery | SELECT 1 | 檢測連接是否有效的sql |
| spring.datasource.validationQueryTimeout | 3 | 檢測連接是否有效的超時時間[seconds] |
| spring.datasource.testWhileIdle | true | 申請連接的時候檢測,如果空閑時間大于timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。 |
| spring.datasource.testOnBorrow | true | 申請連接時執行validationQuery檢測連接是否有效 |
| spring.datasource.testOnReturn | false | 歸還連接時執行validationQuery檢測連接是否有效 |
| spring.datasource.defaultAutoCommit | true | 是否開啟自動提交 |
| spring.datasource.keepAlive | true | 連接池中的minIdle數量以內的連接,空閑時間超過minEvictableIdleTimeMillis,則會執行keepAlive操作。 |
| spring.datasource.poolPreparedStatements | true | 開啟PSCache |
| spring.datasource.maxPoolPreparedStatementPerConnectionSize | 20 | 要啟用PSCache,必須配置大于0,當大于0時,poolPreparedStatements自動觸發修改為true。 |
3.zookeeper.properties [zookeeper連接配置]
| zookeeper.quorum | localhost:2181 | zk集群連接信息 |
| zookeeper.dolphinscheduler.root | /dolphinscheduler | DS在zookeeper存儲根目錄 |
| zookeeper.session.timeout | 60000 | session 超時 |
| zookeeper.connection.timeout | 30000 | 連接超時 |
| zookeeper.retry.base.sleep | 100 | 基本重試時間差 |
| zookeeper.retry.max.sleep | 30000 | 最大重試時間 |
| zookeeper.retry.maxtime | 10 | 最大重試次數 |
4.common.properties [hadoop、s3、yarn配置]
common.properties配置文件目前主要是配置hadoop/s3a相關的配置.
| data.basedir.path | /tmp/dolphinscheduler | 本地工作目錄,用于存放臨時文件 |
| resource.storage.type | NONE | 資源文件存儲類型: HDFS,S3,NONE |
| resource.upload.path | /dolphinscheduler | 資源文件存儲路徑 |
| hadoop.security.authentication.startup.state | false | hadoop是否開啟kerberos權限 |
| java.security.krb5.conf.path | /opt/krb5.conf | kerberos配置目錄 |
| login.user.keytab.username | hdfs-mycluster@ESZ.COM | kerberos登錄用戶 |
| login.user.keytab.path | /opt/hdfs.headless.keytab | kerberos登錄用戶keytab |
| kerberos.expire.time | 2 | kerberos過期時間,整數,單位為小時 |
| resource.view.suffixs | txt,log,sh,conf,cfg,py,java,sql,hql,xml,properties | 資源中心支持的文件格式 |
| hdfs.root.user | hdfs | 如果存儲類型為HDFS,需要配置擁有對應操作權限的用戶 |
| fs.defaultFS | hdfs://mycluster:8020 | 請求地址如果resource.storage.type=S3,該值類似為: s3a://dolphinscheduler. 如果resource.storage.type=HDFS, 如果 hadoop 配置了 HA,需要復制core-site.xml 和 hdfs-site.xml 文件到conf目錄 |
| fs.s3a.endpoint | s3 endpoint地址 | |
| fs.s3a.access.key | s3 access key | |
| fs.s3a.secret.key | s3 secret key | |
| yarn.resourcemanager.ha.rm.ids | yarn resourcemanager 地址, 如果resourcemanager開啟了HA, 輸入HA的IP地址(以逗號分隔),如果resourcemanager為單節點, 該值為空即可 | |
| yarn.application.status.address | http://ds1:8088/ws/v1/cluster/apps/%s | 如果resourcemanager開啟了HA或者沒有使用resourcemanager,保持默認值即可. 如果resourcemanager為單節點,你需要將ds1 配置為resourcemanager對應的hostname |
| dolphinscheduler.env.path | env/dolphinscheduler_env.sh | 運行腳本加載環境變量配置文件[如: JAVA_HOME,HADOOP_HOME, HIVE_HOME ...] |
| development.state | false | 是否處于開發模式 |
5.application-api.properties [API服務配置]
| server.port | 12345 | api服務通訊端口 |
| server.servlet.session.timeout | 7200 | session超時時間 |
| server.servlet.context-path | /dolphinscheduler | 請求路徑 |
| spring.servlet.multipart.max-file-size | 1024MB | 最大上傳文件大小 |
| spring.servlet.multipart.max-request-size | 1024MB | 最大請求大小 |
| server.jetty.max-http-post-size | 5000000 | jetty服務最大發送請求大小 |
| spring.messages.encoding | UTF-8 | 請求編碼 |
| spring.jackson.time-zone | GMT+8 | 設置時區 |
| spring.messages.basename | i18n/messages | i18n配置 |
| security.authentication.type | PASSWORD | 權限校驗類型 |
6.master.properties [Master服務配置]
| master.listen.port | 5678 | master監聽端口 |
| master.exec.threads | 100 | master工作線程數量,用于限制并行的流程實例數量 |
| master.exec.task.num | 20 | master每個流程實例的并行任務數量 |
| master.dispatch.task.num | 3 | master每個批次的派發任務數量 |
| master.host.selector | LowerWeight | master host選擇器,用于選擇合適的worker執行任務,可選值: Random, RoundRobin, LowerWeight |
| master.heartbeat.interval | 10 | master心跳間隔,單位為秒 |
| master.task.commit.retryTimes | 5 | 任務重試次數 |
| master.task.commit.interval | 1000 | 任務提交間隔,單位為毫秒 |
| master.max.cpuload.avg | -1 | master最大cpuload均值,只有高于系統cpuload均值時,master服務才能調度任務. 默認值為-1: cpu cores * 2 |
| master.reserved.memory | 0.3 | master預留內存,只有低于系統可用內存時,master服務才能調度任務,單位為G |
7.worker.properties [Worker服務配置]
| worker.listen.port | 1234 | worker監聽端口 |
| worker.exec.threads | 100 | worker工作線程數量,用于限制并行的任務實例數量 |
| worker.heartbeat.interval | 10 | worker心跳間隔,單位為秒 |
| worker.max.cpuload.avg | -1 | worker最大cpuload均值,只有高于系統cpuload均值時,worker服務才能被派發任務. 默認值為-1: cpu cores * 2 |
| worker.reserved.memory | 0.3 | worker預留內存,只有低于系統可用內存時,worker服務才能被派發任務,單位為G |
| worker.groups | default | worker分組配置,逗號分隔,例如'worker.groups=default,test' worker啟動時會根據該配置自動加入對應的分組 |
8.alert.properties [Alert 告警服務配置]
| alert.type | 告警類型 | |
| mail.protocol | SMTP | 郵件服務器協議 |
| mail.server.host | xxx.xxx.com | 郵件服務器地址 |
| mail.server.port | 25 | 郵件服務器端口 |
| mail.sender | xxx@xxx.com | 發送人郵箱 |
| mail.user | xxx@xxx.com | 發送人郵箱名稱 |
| mail.passwd | 111111 | 發送人郵箱密碼 |
| mail.smtp.starttls.enable | true | 郵箱是否開啟tls |
| mail.smtp.ssl.enable | false | 郵箱是否開啟ssl |
| mail.smtp.ssl.trust | xxx.xxx.com | 郵箱ssl白名單 |
| xls.file.path | /tmp/xls | 郵箱附件臨時工作目錄 |
| 以下為企業微信配置[選填] | ||
| enterprise.wechat.enable | false | 企業微信是否啟用 |
| enterprise.wechat.corp.id | xxxxxxx | |
| enterprise.wechat.secret | xxxxxxx | |
| enterprise.wechat.agent.id | xxxxxxx | |
| enterprise.wechat.users | xxxxxxx | |
| enterprise.wechat.token.url | https://qyapi.weixin.qq.com/cgi-bin/gettoken? corpid=corpId&corpsecret=secret | |
| enterprise.wechat.push.url | https://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.driverDelegateClass | org.quartz.impl.jdbcjobstore.StdJDBCDelegate | |
| org.quartz.jobStore.driverDelegateClass | org.quartz.impl.jdbcjobstore.PostgreSQLDelegate | |
| org.quartz.scheduler.instanceName | DolphinScheduler | |
| org.quartz.scheduler.instanceId | AUTO | |
| org.quartz.scheduler.makeSchedulerThreadDaemon | true | |
| org.quartz.jobStore.useProperties | false | |
| org.quartz.threadPool.class | org.quartz.simpl.SimpleThreadPool | |
| org.quartz.threadPool.makeThreadsDaemons | true | |
| org.quartz.threadPool.threadCount | 25 | |
| org.quartz.threadPool.threadPriority | 5 | |
| org.quartz.jobStore.class | org.quartz.impl.jdbcjobstore.JobStoreTX | |
| org.quartz.jobStore.tablePrefix | QRTZ_ | |
| org.quartz.jobStore.isClustered | true | |
| org.quartz.jobStore.misfireThreshold | 60000 | |
| org.quartz.jobStore.clusterCheckinInterval | 5000 | |
| org.quartz.jobStore.acquireTriggersWithinLock | true | |
| org.quartz.jobStore.dataSource | myDs | |
| org.quartz.dataSource.myDs.connectionProvider.class | org.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:$PATH12.各服務日志配置文件
| api服務日志配置文件 | logback-api.xml |
| master服務日志配置文件 | logback-master.xml |
| worker服務日志配置文件 | logback-worker.xml |
| alert服務日志配置文件 | logback-alert.xml |
四、安裝部署
Linux 操作系統版本要求
| Red Hat Enterprise Linux | 7.0 及以上 |
| CentOS | 7.0 及以上 |
| Oracle Enterprise Linux | 7.0 及以上 |
| Ubuntu LTS | 16.04 及以上 |
注意:?以上 Linux 操作系統可運行在物理服務器以及 VMware、KVM、XEN 主流虛擬化環境上。
網絡要求
DolphinScheduler正常運行提供如下的網絡端口配置:
| MasterServer | 5678 | 非通信端口,只需本機端口不沖突即可 |
| WorkerServer | 1234 | 非通信端口,只需本機端口不沖突即可 |
| ApiApplicationServer | 12345 | 提供后端通信端口 |
注意:
- MasterServer 和 WorkerServer 不需要開啟網絡間通信,只需本機端口不沖突即可
- 管理員可根據實際環境中 DolphinScheduler 組件部署方案,在網絡側和主機側開放相關端口
生產環境
| 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-bin4.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 中的下列配置
-
如果選擇 MySQL,請注釋掉 PostgreSQL 相關配置(反之同理), 還需要手動添加 [?mysql-connector-java 驅動 jar?] 包到 lib 目錄下,這里下載的是mysql-connector-java-5.1.47.jar,然后正確配置數據庫連接相關信息
- 修改并保存完后,執行 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下為例)
注: 這一步非常重要,例如 JAVA_HOME 和 PATH 是必須要配置的,沒有用到的可以忽略或者注釋掉;如果找不到dolphinscheduler_env.sh, 請運行 ls -a
- 將jdk軟鏈到/usr/bin/java下(仍以 JAVA_HOME=/opt/soft/java 為例)
- 修改一鍵部署配置文件?conf/config/install_config.conf中的各參數,特別注意以下參數的配置
注:如果打算用到資源中心功能,請執行以下命令:
sudo mkdir /data/dolphinscheduler sudo chown -R dolphinscheduler:dolphinscheduler /data/dolphinscheduler4.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.log4.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
- 啟停Worker
- 啟停Api
- 啟停Logger
- 啟停Alert
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上
4.2.2 下載二進制tar.gz包
- 請下載最新版本的后端安裝包至服務器部署目錄,比如創建 /opt/dolphinscheduler 做為安裝部署目錄,下載地址:?下載,下載后上傳tar包到該目錄中,并進行解壓
4.2.3 創建部署用戶和hosts映射
- 在所有部署調度的機器上創建部署用戶,并且一定要配置sudo免密。假如我們計劃在ds1,ds2,ds3,ds4這4臺機器上部署調度,首先需要在每臺機器上都創建部署用戶
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為例
- 進入數據庫命令行窗口后,執行數據庫初始化命令,設置訪問賬號和密碼。注: {user} 和 {password} 需要替換為具體的數據庫用戶名和密碼
-
創建表和導入基礎數據
- 修改 conf 目錄下 datasource.properties 中的下列配置
- 如果選擇 MySQL,請注釋掉 PostgreSQL 相關配置(反之同理), 還需要手動添加 [?mysql-connector-java 驅動 jar?] 包到 lib 目錄下,這里下載的是mysql-connector-java-5.1.47.jar,然后正確配置數據庫連接相關信息
- 修改并保存完后,執行 script 目錄下的創建表及導入基礎數據腳本
??注意: 如果執行上述腳本報 ”/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自帶)
如果以上服務都正常啟動,說明自動部署成功
部署成功后,可以進行日志查看,日志統一存放于logs文件夾內
logs/├── dolphinscheduler-alert-server.log├── dolphinscheduler-master-server.log|—— dolphinscheduler-worker-server.log|—— dolphinscheduler-api-server.log|—— dolphinscheduler-logger-server.log4.2.8 登錄系統
-
訪問前端頁面地址,接口ip(自行修改)?http://192.168.xx.xx:12345/dolphinscheduler
4.2.9 啟停服務
-
一鍵停止集群所有服務
sh ./bin/stop-all.sh
-
一鍵開啟集群所有服務
sh ./bin/start-all.sh
-
啟停Master
- 啟停Worker
- 啟停Api
- 啟停Logger
- 啟停Alert
告警信息同樣可以往企業微信中發送,這個需要單獨配置。
總結
以上是生活随笔為你收集整理的DolphinScheduler大数据调度系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 免疫的特异性和非特异性
- 下一篇: 计算机组成原理(哈工大)学习笔记