Apache DolphinScheduler 是一個分佈式易擴展的可視化DAG工作流任務調度開源系統。適用於企業級場景,提供了一個可視化操作任務、工作流和全生命周期數據處理過程的解決方案。
Apache DolphinScheduler 旨在解決復雜的大數據任務依賴關系,並為應用程序提供數據和各種 OPS 編排中的關系。 解決數據研發ETL依賴錯綜復雜,無法監控任務健康狀態的問題。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式組裝任務,可以及時監控任務的執行狀態,支持重試、指定節點恢復失敗、暫停、恢復、終止任務等操作。
特性
1.簡單易用
可視化 DAG: 用戶友好的,通過拖拽定義工作流的,運行時控制工具
模塊化操作: 模塊化有助於輕松定制和維護。
2.豐富的使用場景
支持多種任務類型: 支持Shell、MR、Spark、SQL等10餘種任務類型,支持跨語言,易於擴展
豐富的工作流操作: 工作流程可以定時、暫停、恢復和停止,便於維護和控制全局和本地參數。
3.High Reliability
高可靠性: 去中心化設計,確保穩定性。 原生 HA 任務隊列支持,提供過載容錯能力。 DolphinScheduler 能提供高度穩健的環境。
4.High Scalability
高擴展性: 支持多租戶和在線資源管理。支持每天10萬個數據任務的穩定運行。
名詞解釋
DAG: 全稱 Directed Acyclic Graph,簡稱 DAG。工作流中的 Task 任務以有向無環圖的形式組裝起來,從入度為零的節點進行拓撲遍歷,直到無後繼節點為止。舉例如下圖:
流程定義:通過拖拽任務節點並建立任務節點的關聯所形成的可視化DAG
流程實例:流程實例是流程定義的實例化,可以通過手動啟動或定時調度生成。每運行一次流程定義,產生一個流程實例
任務實例:任務實例是流程定義中任務節點的實例化,標識著某個具體的任務
任務類型:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依賴),同時計劃支持動態插件擴展,註意:其中 SUB_PROCESS類型的任務需要關聯另外一個流程定義,被關聯的流程定義是可以單獨啟動執行的
調度方式:系統支持基於 cron 表達式的定時調度和手動調度。命令類型支持:啟動工作流、從當前節點開始執行、恢復被容錯的工作流、恢復暫停流程、從失敗節點開始執行、補數、定時、重跑、暫停、停止、恢復等待線程。 其中 恢復被容錯的工作流 和 恢復等待線程 兩種命令類型是由調度內部控制使用,外部無法調用
定時調度:系統采用 quartz 分佈式調度器,並同時支持cron表達式可視化的生成
依賴:系統不單單支持 DAG 簡單的前驅和後繼節點之間的依賴,同時還提供任務依賴節點,支持流程間的自定義任務依賴
優先級 :支持流程實例和任務實例的優先級,如果流程實例和任務實例的優先級不設置,則默認是先進先出
郵件告警:支持 SQL任務 查詢結果郵件發送,流程實例運行結果郵件告警及容錯告警通知
失敗策略:對於並行運行的任務,如果有任務失敗,提供兩種失敗策略處理方式,繼續是指不管並行運行任務的狀態,直到流程失敗結束。結束是指一旦發現失敗任務,則同時Kill掉正在運行的並行任務,流程失敗結束
補數:補歷史數據,支持區間並行和串行兩種補數方式,其日期選擇方式包括日期范圍和日期枚舉兩種
模塊介紹
- dolphinscheduler-master master模塊,提供工作流管理和編排服務。
- dolphinscheduler-worker worker模塊,提供任務執行管理服務。
- dolphinscheduler-alert 告警模塊,提供 AlertServer 服務。
- dolphinscheduler-api web應用模塊,提供 ApiServer 服務。
- dolphinscheduler-common 通用的常量枚舉、工具類、數據結構或者基類
- dolphinscheduler-dao 提供數據庫訪問等操作。
- dolphinscheduler-remote 基於 netty 的客戶端、服務端
- dolphinscheduler-service service模塊,包含Quartz、Zookeeper、日志客戶端訪問服務,便於server模塊和api模塊調用
- dolphinscheduler-ui 前端模塊
租戶/用戶
Tenant是使用DolphinScheduler時繞不開的一個概念,所以先簡單介紹一下tenant的概念。
登錄 DolphinScheduler 名為 admin 的賬戶在 dolphinscheduler 中稱為 user。 為了更好的控制系統資源,DolphinScheduler引入了概念租戶,用於執行任務。
簡述如下:
- 用戶:登錄web UI,在web UI中進行所有操作,包括工作流管理和租戶創建。
- Tenant:任務的實際執行者,A Linux user for DolphinScheduler worker。
可以在 DolphinScheduler Security(安全中心) -> Tenant Manage(租戶管理) 頁面創建租戶:
註意:
1. 環境部署好後會生成一個默認的租戶及用戶,默認租戶為部署環境使用的Linux用戶名,默認用戶名是admin並且租戶是默認租戶名。
2. 還有一個隱藏的租戶,名稱是 default 在租戶管理詳情頁看不到,但是在保存工作流時,如果沒有手動選擇租戶,會使用 default 租戶,使用程序啟動用戶執行任務。
創建用戶並將租戶分配給用戶
在 DolphinScheduler 的“安全 -> 用戶管理”頁面中創建用戶並將租戶分配給特定用戶:
方法1: 在創建用戶時直接指定對應的租戶;
方法2: 通過修改已有用戶的租戶;
創建項目
在 DolphinScheduler 中,所有的工作流都必須屬於一個項目,所以我們需要首先創建一個項目。
在 DolphinScheduler Project(項目) 頁面中創建一個項目 “創建項目” 按鈕。
創建工作流
點擊創建的項目,轉到“工作流定義”頁面,單擊“創建工作流”按鈕,將重定向到工作流詳細信息頁面。
創建任務
使用鼠標從工作流畫佈的工具欄中拖動要創建的任務。 在這種情況下,我們創建一個 Shell 任務。 輸入任務的必要信息,對於這個簡單的工作流程 我們隻需將屬性“節點名稱”填充為“腳本”即可。之後,我們可以單擊“保存”按鈕將任務保存到工作流中。 我們創建另一個任務使用相同的方式。
設置任務依賴
兩個具有不同名稱和命令的不同任務在同一工作流中運行。 這當前工作流中唯一缺少的是任務依賴性。 我們可以使用添加依賴,鼠標將箭頭從上遊任務拖到下遊 然後松開鼠標。您可以看到從上遊創建了兩個任務之間帶有箭頭的鏈接任務交給下遊一個,或者在任務組件詳情頁面最下邊選擇前置任務。 最後,我們可以點擊右上角的“保存”按鈕保存工作流,不要忘記填寫工作流名稱。
運行工作流
可以通過在工作流定義列表單擊“上線”然後單擊“運行”按鈕來運行對應的工作流。 如果您想查看工作流實例,隻需轉到 “工作流實例” 頁面,可以看到工作流實例正在運行,狀態為Executing。
查看日志
從工作流實例中找到對應的任務名稱,然後找到右側查看日志的按鈕,點擊鼠標就可以看到任務的詳細日志。
搜虎頭條, 发布者:天天娛樂,轉載請註明出處:https://sohunews.net/keji/52404.html