安全中心(Security)
隊列管理(Queue manage)
隊列是在執行 spark、mapreduce 等程序,需要用到“隊列”參數時使用的(創建後不可刪除)。
例:
安全中心 -> 隊列管理 -> 創建隊列
------------------------------------------------------
名稱:quene_test
隊列值:quene_test
------------------------------------------------------
提交
租戶管理(Tenant Manage)
租戶對應的是 Linux 的用戶,用於 worker 提交作業所使用的用戶。
如果 Linux 沒有這個用戶,worker 會在執行腳本的時候創建這個用戶。
租戶編碼:租戶編碼是 Linux 上的用戶,唯一,不能重複。
新建的租戶會在 HDFS 上 $hdfsPath("/dolphinscheduler") 目錄下創建租戶目錄,租戶目錄下爲該租戶上傳的文件和 UDF 函數
租戶名稱:租戶編碼的別名
例:
安全中心 -> 租戶管理 -> 創建租戶
------------------------------------------------------
租戶編碼:test
租戶名稱:test
隊列值:default
------------------------------------------------------
提交
使用到HDFS需要爲該用戶在 HDFS 上創建用戶目錄
sudo -u hdfs hadoop fs -mkdir /user/developer
sudo -u hdfs hadoop fs -chown developer:developer /user/developer
用戶管理(User Manage)
用戶分爲管理員用戶和普通用戶。
授予權限包括:項目權限,資源權限,數據源權限,UDF函數權限。
管理員可以對普通用戶進行非其創建的項目、資源、數據源和UDF函數進行授權。
例:
安全中心 -> 用戶管理 -> 創建用戶
------------------------------------------------------
用戶名稱:test
密碼:test123
租戶:test
隊列:default
郵箱:****
手機號:
-----------------------------------------------------+-
提交
實際生產環境中,可將 項目、用戶、租戶 相關聯,即爲某個大的項目創建一個用戶及對應的租戶。若需要刪除用戶,則應首先將項目內的任務刪除,然後刪除項目,再刪除用戶及關聯的租戶,否則會出現任務無法運行,項目不可見等情況(1.2 版本)
如果該 用戶切換租戶,則該 用戶在當前租戶下創建的所有資源 將 複製 到新的租戶下(對於 HDFS 平臺來說,則是將當前租戶目錄下該用戶創建的所有資源複製到新租戶的目錄下,不復制被賦權的文件,且被賦權的文件仍有權限)。需要注意的是,此後進行文件刪除操作時,舊租戶下的對應的文件並不會被刪除。
告警組管理(Warning group manage)
告警組是在啓動時設置的參數,在流程結束以後會將流程的狀態和其他信息以郵件形式發送給告警組。
Worker分組管理(Worker group manage)
worker 分組,提供了一種讓任務在指定的 worker 上運行的機制。
管理員創建 worker 分組,在任務節點和運行參數中設置中可以指定該任務運行的 worker 分組。
如果指定的分組被刪除或者沒有指定分組,則該任務會在任意一個 worker 上運行。worker 分組內多個 ip 地址(不能寫別名),以英文逗號分隔。
例:
安全中心 -> Worker分組管理 -> 創建Worker分組
------------------------------------------------------
組名稱:worker_group1
IP:*****
------------------------------------------------------
提交
令牌管理(Token manage)
由於後端接口有登錄檢查,令牌管理,提供了一種可以通過調用接口的方式對系統進行各種操作。
監控中心(Monitor)
略
數據源中心(Datasource)
數據源中心 -> 創建數據源 -> MYSQL
------------------------------------------------------
數據源名稱:mysql_source
描述:
IP主機名:*****
端口:3306
用戶名:root
密碼:*****
數據庫名:test
jdbc連接參數:{"useSSL":"false","useUnicode":"true","characterEncoding":"UTF-8","allowMultiQueries":"true"}
------------------------------------------------------
測試鏈接 -> 編輯
其他數據源:略,後續用到再補充
資源中心(Resources)
資源中心所有文件對應的 Mysql 表爲:t_ds_resources
UDF 對應的 Mysql 表爲:t_ds_udfs
資源中心的文件上傳、刪除操作使用的用戶均爲 install.sh 中指定的 $hdfsRootUser
由於沒有使用HDFS,略,後續用到再補充
項目管理(Project)
創建項目
項目名稱 不可重複。即使爲不同用戶,創建項目時若 項目名稱 已存在。會提示 “project Test already exists”。
若要刪除項目,需要確認項目中所有 工作流定義 都已下線並刪除,才能進行刪除操作。
實際生產環境中,建議使用 管理員賬戶 創建項目,並對開發人員賦權。
例:
項目管理 -> 創建項目
------------------------------------------------------
項目名稱:測試項目
描述:
------------------------------------------------------
提交
項目首頁
項目名稱 -> 項目首頁
------------------------------------------------------
任務狀態統計:是指在指定時間範圍內,統計 任務實例 中的待運行、失敗、運行中、完成、成功的個數
流程狀態統計:是指在指定時間範圍內,統計 工作流實例 中的待運行、失敗、運行中、完成、成功的個數
流程定義統計:是統計當前用戶有權限的項目的 工作流定義 總數
工作流定義的工作流每運行一次,產生一個工作流實例,一個工作流實例包含一到多個任務實例。同一任務實例僅被統計一次,按最近時間狀態進行統計。
工作流定義
創建工作流定義
項目管理 -> 工作流 -> 工作流定義 -> 創建工作流
Step 1:拖拽“SHELL"節點到畫布,新增一個Shell任務。
------------------------------------------------------
節點名稱:task01
描述:This is a test task.
任務優先級:MEDIUM
Worker分組:Default
失敗重試次數:0
失敗重試間隔:1
腳本:
#!/bin/sh
echo "HELLO WORLD."
資源:
自定義參數:
------------------------------------------------------
確認添加
Step 2:拖拽“SHELL"節點到畫布,新增一個Shell任務。
------------------------------------------------------
節點名稱:task02
描述:This is another test task.
任務優先級:MEDIUM
Worker分組:Default
失敗重試次數:0
失敗重試間隔:1
腳本:
#!/bin/sh
echo "HELLO DOLPHIN SCHEDULER."
資源:
自定義參數:
-> 確認添加
------------------------------------------------------
Step 3:“選擇線條連接”,連接任務1、2,tesk01、task02 會串行執行。
Step 4:保存
------------------------------------------------------
設置DAG圖名稱:Test_shell
選擇租戶:test
------------------------------------------------------
-> 添加
更多任務類型詳見:
工作流定義操作功能
工作流定義列表的操作功能如下:
- 編輯: 只能編輯"下線"的工作流定義。工作流DAG編輯同創建工作流定義。
- 上線: 工作流狀態爲"下線"時,上線工作流,只有"上線"狀態的工作流能運行,但不能編輯。
- 下線: 工作流狀態爲"上線"時,下線工作流,下線狀態的工作流可以編輯,但不能運行。
- 運行: 只有上線的工作流能運行。運行操作步驟見 5.5.3.3 運行工作流
- 定時: 只有上線的工作流能設置定時,系統自動定時調度工作流運行。創建定時後的狀態爲"下線",需在定時管理頁面上線定時才生效。定時操作步驟見 5.5.3.4 工作流定時。
- 定時管理: 定時管理頁面可編輯、上線/下線、刪除定時。
- 刪除: 刪除工作流定義。
- 下載: 下載工作流定義到本地
- 樹形圖: 以樹形結構展示任務節點的類型及任務狀態
運行工作流
工作流運行參數說明:
- 失敗策略:當某一個任務節點執行失敗時,其他並行的任務節點需要執行的策略。”繼續“表示:某一任務失敗後,其他任務節點正常執行;”結束“表示:終止所有正在執行的任務,並終止整個流程。
- 通知策略:當流程結束,根據流程狀態發送流程執行信息通知郵件,包含任何狀態都不發,成功發,失敗發,成功或失敗都發。
- 流程優先級:流程運行的優先級,分五個等級:最高(HIGHEST),高(HIGH),中(MEDIUM),低(LOW),最低(LOWEST)。當master線程數不足時,級別高的流程在執行隊列中會優先執行,相同優先級的流程按照先進先出的順序執行。
- worker分組:該流程只能在指定的worker機器組裏執行。默認是Default,可以在任一worker上執行。
- 通知組:選擇通知策略||超時報警||發生容錯時,會發送流程信息或郵件到通知組裏的所有成員。
- 收件人:選擇通知策略||超時報警||發生容錯時,會發送流程信息或告警郵件到收件人列表。
- 抄送人:選擇通知策略||超時報警||發生容錯時,會抄送流程信息或告警郵件到抄送人列表。
- 補數:包括串行補數、並行補數2種模式。串行補數:指定時間範圍內,從開始日期至結束日期依次執行補數,只生成一條流程實例;並行補數:指定時間範圍內,多天同時進行補數,生成N條流程實例。
例:
項目管理 -> 工作流 -> 工作流定義 -> 選擇工作流名稱“Test_shell” -> 上線 -> 運行(參數均爲默認,不做修改)
工作流定時
選擇指定工作流,點擊“定時”,選擇起止時間、定時等選擇定時執行時間。
點擊"創建"按鈕,創建定時成功,此時定時狀態爲"下線",定時需上線才生效。
定時上線:點擊"定時管理"按鈕,進入定時管理頁面,點擊"上線"按鈕,定時狀態變爲"上線",如下圖所示,工作流定時生效。
下線 工作流定義 後,定時任務業務也會同時下線,工作流定義 上線後,需要重新手動上線定時任務
導入工作流
點擊項目管理->工作流->工作流定義,進入工作流定義頁面,點擊"導入工作流"按鈕,導入本地工作流文件,工作流定義列表顯示導入的工作流,狀態爲下線。
工作流實例
工作流實例操作功能:
- 編輯:可以對已經終止的流程進行編輯,編輯後保存的時候,可以選擇是否 更新到工作流定義
- 重跑:可以對已經終止的流程進行重新執行
- 恢復失敗:針對失敗的流程,可以執行恢復失敗操作,從失敗的節點開始執行
- 停止:對正在運行的流程進行停止操作,後臺會先 kill worker 進程,再執行 kill -9 操作
- 暫停:可以對正在運行的流程進行暫停操作,系統狀態變爲等待執行,會等待正在執行的任務結束,暫停下一個要執行的任務
- 恢復暫停:可以對暫停的流程恢復,直接從暫停的節點開始運行
- 刪除:刪除工作流實例及工作流實例下的任務實例
- 甘特圖:Gantt圖縱軸是某個工作流實例下的任務實例的拓撲排序,橫軸是任務實例的運行時間
查看工作流實例:
項目管理 -> 工作流 -> 工作流實例 -> 點擊工作流名稱 -> 進入DAG查看頁面,查看任務執行狀態
查看任務日誌:
進入DAG查看頁面 -> 雙擊任務節點 -> 查看日誌
查看任務歷史記錄:
進入DAG查看頁面 -> 雙擊任務節點 -> 查看歷史
查看運行參數:
進入工作流DAG頁面 -> 點擊左上角圖標,查看工作流實例的啓動參數、全局參數和局部參數
任務實例
任務實例 -> 點擊工作流實例名稱 -> 可跳轉到工作流實例DAG圖查看任務狀態
任務實例 -> 查看日誌
任務節點類型和參數設置
Shell節點
運行說明:shell 節點,在 worker 執行的時候,會生成一個臨時 shell 腳本,使用租戶同名的linux 用戶執行這個腳本。
參數說明:
- 節點名稱:一個工作流定義中的節點名稱是唯一的
- 運行標誌:標識這個節點是否能正常調度,如果不需要執行,可以打開禁止執行開關
- 描述信息:描述該節點的功能
- 任務優先級:級別高的任務在執行隊列中會優先執行,相同優先級的任務按照先進先出的順序執行
- Worker分組:指定任務運行的機器列表
- 失敗重試次數:任務失敗重新提交的次數,支持下拉和手填
- 失敗重試間隔:任務失敗重新提交任務的時間間隔,支持下拉和手填
- 超時告警:當任務執行時間超過超時時長可以告警並且超時失敗
- 腳本:用戶開發的SHELL程序
- 資源:是指腳本中需要調用的資源文件列表
- 自定義參數:是SHELL局部的用戶自定義參數,會替換腳本中以${變量}的內容
例:
項目管理 -> 工作流 -> 工作流定義 -> 創建工作流
------------------------------------------------------
拖拽“SHELL"節點到畫布,新增一個Shell任務。
節點名稱:Test_shell_01
運行標誌:正常
描述:
任務優先級:MEDIUM
Worker分組:Default
失敗重試次數:0
失敗重試間隔:1
超時告警:off
腳本:
#!/bin/sh
for i in {1..10};do echo $i;done
資源:
自定義參數:
-> 確認添加
------------------------------------------------------
保存 ->
設置DAG圖名稱:Test_shell
選擇租戶:Default
超時告警:off
設置全局:
------------------------------------------------------
添加 -> 上線 -> 運行
子流程節點
運行說明:子流程節點,就是把外部的某個工作流定義當做一個任務節點去執行。
參數說明:
- 節點名稱:一個工作流定義中的節點名稱是唯一的
- 運行標誌:標識這個節點是否能正常調度
- 描述信息:描述該節點的功能
- 超時告警:勾選超時告警、超時失敗,當任務超過"超時時長"後,會發送告警郵件並且任務執行失敗
- 子節點:是選擇子流程的工作流定義,右上角進入該子節點可以跳轉到所選子流程的工作流定義
例:
項目管理 -> 工作流 -> 工作流定義 -> 創建工作流
------------------------------------------------------
Task 1:拖拽 SHELL 節點到畫布,新增一個 Shell 任務
節點名稱:Test_subprocess_01
... ...
腳本:
#!/bin/sh
for i in {1..10};do echo $i;done
-> 確認添加
Task 2:拖拽 SUB_PROCESS 節點到畫布,新增一個 SUB_PROCESS 任務
節點名稱:Test_subprocess_02
... ...
子節點:Test_shell
-> 確認添加
------------------------------------------------------
串聯任務節點 Task1 和 Task2
------------------------------------------------------
保存 ->
設置DAG圖名稱:Test_subprocess
選擇租戶:Default
超時告警:off
設置全局:
------------------------------------------------------
添加 -> 上線 -> 運行
存儲過程節點
運行說明:根據選擇的數據源,執行存儲過程。
參數說明:
- 數據源:存儲過程的數據源類型支持 MySQL、POSTGRESQL、CLICKHOUSE、ORACLE、SQLSERVER 等,選擇對應的數據源
- 方法:是存儲過程的方法名稱
- 自定義參數:存儲過程的自定義參數類型支持 IN、OUT 兩種,數據類型支持 VARCHAR、INTEGER、LONG、FLOAT、DOUBLE、DATE、TIME、TIMESTAMP、BOOLEAN 九種數據類型
SQL節點
參數說明:
- 數據源:選擇對應的數據源
- sql類型:支持查詢和非查詢兩種,查詢是 select 類型的查詢,是有結果集返回的,可以指定郵件通知爲 表格、附件 或 表格與附件 三種模板。非查詢是沒有結果集返回的,是針對 update、delete、insert 三種類型的操作
- 主題、收件人、抄送人:郵件相關配置
- sql參數:輸入參數格式爲 key1=value1;key2=value2…
- sql語句:SQL語句
- UDF函數:對於HIVE類型的數據源,可以引用資源中心中創建的UDF函數,其他類型的數據源暫不支持UDF函數
- 自定義參數:SQL任務類型,而存儲過程是自定義參數順序的給方法設置值自定義參數類型和數據類型同存儲過程任務類型一樣。區別在於SQL任務類型自定義參數會替換sql語句中 ${變量}
- 前置sql:執行 “sql語句” 前的操作
- 後置sql:執行 “sql語句” 後的操作
例,以mysql爲例:
項目管理 -> 工作流 -> 工作流定義 -> 創建工作流
------------------------------------------------------
Task 1:拖拽 SQL 節點到畫布,新增一個 SQL 任務
節點名稱:Test_sql_mysql_01
... ...
數據源:MYSQL mysql_source
sql類型:查詢 表格:√ 附件:√
主題:Test MySQL
收件人:******
sql語句:
select * from test_table where score=${i};
自定義參數:
i -> IN -> INTEGER -> 123
前置sql:
INSERT INTO test_table values(1, 'test',123)
後置sql:
-> 確認添加
Task 2:拖拽 SQL 節點到畫布,新增一個 SQL 任務
節點名稱:Test_sql_mysql_02
... ...
數據源:MYSQL mysql_source
sql類型:非查詢
sql語句:
create table test_table2 as select * from test_table;
自定義參數:
前置sql:
後置sql:
-> 確認添加
------------------------------------------------------
串聯任務節點 Test_sql_mysql_01、Test_sql_mysql_02
------------------------------------------------------
保存 ->
設置DAG圖名稱:Test_sql_mysql
選擇租戶:Default
超時告警:off
設置全局:
------------------------------------------------------
添加 -> 上線 -> 運行
依賴(DEPENDENT)節點
運行說明:依賴節點,就是依賴檢查節點。比如A流程依賴昨天的B流程執行成功,依賴節點會去檢查B流程在昨天是否有執行成功的實例。
其他節點,略,後續使用到了其他節點會補充
參數
系統參數
變量 | 含義 |
---|---|
${system.biz.date} | 日常調度實例定時的定時時間前一天,格式爲 yyyyMMdd,補數據時,該日期 +1 |
${system.biz.curdate} | 日常調度實例定時的定時時間,格式爲 yyyyMMdd,補數據時,該日期 +1 |
${system.datetime} | 日常調度實例定時的定時時間,格式爲 yyyyMMddHHmmss,補數據時,該日期 +1 |
自定義參數
- 支持代碼中自定義變量名,聲明方式:${變量名}。可以是引用 "系統參數" 或指定 "常量"。
- 我們定義這種基準變量爲 [...] 格式的,[yyyyMMddHHmmss] 是可以任意分解組合的,比如:[HHmmss], $[yyyy-MM-dd] 等
- 也可以使用以下格式:
* 後 N 年:$[add_months(yyyyMMdd,12*N)]
* 前 N 年:$[add_months(yyyyMMdd,-12*N)]
* 後 N 月:$[add_months(yyyyMMdd,N)]
* 前 N 月:$[add_months(yyyyMMdd,-N)]
* 後 N 周:$[yyyyMMdd+7*N]
* 前 N 周:$[yyyyMMdd-7*N]
* 後 N 天:$[yyyyMMdd+N]
* 前 N 天:$[yyyyMMdd-N]
* 後 N 小時:$[HHmmss+N/24]
* 前 N 小時:$[HHmmss-N/24]
* 後 N 分鐘:$[HHmmss+N/24/60]
* 前 N 分鐘:$[HHmmss-N/24/60]
官方使用文檔
https://dolphinscheduler.apache.org/zh-cn/docs/1.2.0/user_doc/quick-start.html
出現的問題
創建租戶
- 租戶對應的是Linux的用戶,用於worker提交作業所使用的用戶。如果linux沒有這個用戶,worker會在執行腳本的時候創建這個用戶。
- 租戶編碼:租戶編碼是Linux上的用戶,唯一,不能重複
- 出現創建不了租戶原因
- ds的啓動用戶沒有創建用戶的權限
- linux系統禁用了sudo,進入/etc/sudoers 將 Default requiretty註釋掉
創建用戶
- 權限劃分,目的是爲了更好的管理項目,資源,UDF,數據源等信息。
- 創建用戶需要指定租戶(要想admin用戶有執行權限,需要給admin用戶賦予租戶)
調度未執行
定時任務上線成功,調度未執行,查看master沒有打印錯誤日誌
- 原因可能是quartz在啓動時就報錯了,導致quartz初始化沒有成功。
- 修改master_logback.xml
<root level="INFO">
<appender-ref ref="MASTERLOGFILE"/>
<!-- 增加日誌到控制檯-->
<appender-ref ref="STDOUT"/>
</root>
- 查看master.out文件