文章作者:尚志忠 編輯整理:曾輝 行業背景 隨著大數據、雲計算、5G、人工智慧等技術的快速發展,以及醫療信息化建設的不斷深入,數據中台作為打通醫療數據融合壁壘、實現數據互通與共用、構建高效數據應用的關鍵信息平臺,正逐漸成為推動醫療行業數字化轉型和創新發展的重要力量。 星海·濟世醫療數據中台介紹 中國 ...
文章作者:尚志忠
編輯整理:曾輝
行業背景
隨著大數據、雲計算、5G、人工智慧等技術的快速發展,以及醫療信息化建設的不斷深入,數據中台作為打通醫療數據融合壁壘、實現數據互通與共用、構建高效數據應用的關鍵信息平臺,正逐漸成為推動醫療行業數字化轉型和創新發展的重要力量。
星海·濟世醫療數據中台介紹
中國電信依托多年行業積累,定製打造醫療行業數據中台,以夯實衛生健康信息化新基建能力為目標,賦能行業客戶,深化數據集成治理與開發應用能力,推進健康醫療大數據應用發展,充分釋放數據價值。
星海·濟世醫療數據中台以“湖倉一體、流批一體”技術為核心,圍繞健康醫療數據在集成、存儲、治理、建模、分析、挖掘、服務、應用、流通等各個環節的需求,構建數據全生命周期管理的能力平臺。
關於數據處理中任務調度的思考
在醫療行業的數據處理過程中,存在著以下常見的問題:
-
複雜的數據處理邏輯與流程未能實現統一的管理和調度,數據處理流程長,依賴關係錯綜複雜,不易於維護和使用,同時影響工作效率,間接提高了使用數據的成本。
-
傳統的調度工具支持的組件有限,不能滿足在醫療行業中多場景多種異構數據源的數據處理和使用,且各種數據處理邏輯和關係不能夠可視化管理,只依賴腳本和定時任務不足以支撐目前的業務發展,不能可視化的反應任務之間的依賴關係,增加了業務處理的複雜性。
-
多系統之間的定時任務缺乏統一的調度機制,這些任務可能由不同系統的不同團隊開發和維護,導致資源浪費和運維成本上升。缺乏統一的調度平臺,使得運維人員需要手動監控和管理這些任務。
基於任務調度和管理相關的以上問題,我們認為一個平臺級的產品必要要有一款優秀的調度工具,不僅要具備基於時序的主動觸發能力和基於事件的被動觸發能力,同時要能夠支持豐富的組件方便數據處理任務的開發,還需要具備運行時監控能力和分散式的架構下資源調度及均衡能力。
經過不斷的學習和探索使用發現Apache DolphinScheduler 調度器在處理以上問題的過程中,有明顯的優勢。
技術特點及優勢
技術特點
Apache DolphinScheduler 是一個分散式易擴展的帶有強大可視化 DAG 界面的新一代工作流調度平臺 ,立項之初即確立了使命 —— “解決大數據任務之間錯綜複雜的依賴關係,使整個數據處理過程直觀可見”,至此配置工作流程無需代碼即可完成!
作為強大的DAG可視化界面的分散式大數據工作流調度平臺,Apache Dolphin Scheduler 解決了複雜的任務依賴關係和簡化了數據任務編排的工作。
它以開箱即用的、易於擴展的方式將眾多大數據生態組件連接到可處理 100,000 級別的數據任務調度系統中來。
其整體特征如下:
(1)雲原生設計:支持多雲、多數據中心的跨端調度,同時也支持K8s Docker部署與擴展,性能上可以線性增長,在用戶測試情況下最高已經支持10萬的並行任務控制;
(2)高可用、高穩定性:去中心化的多Master/Worker的架構,可以自動任務平衡,自動高可用,確保任務在任何節點死機的情況下可以具有完整性完成整體調度;
(3)用戶界面友好:可視化的DAG圖,包括子任務,條件調度、腳本管理、多租戶等方便功能,並具有讓運行任務實例與任務模板分開,讓你的平臺維護人員和數據科學家都有一個方便易用的開發和管理平臺;
(4)支持多種數據場景:支持流數據處理,批數據處理,暫停、回覆、多租戶等,對於spark,hive,MR,flink,clickhouse等等平臺都可以方便直接調用;
(5)支持多種調度機制:任務調度機制,支持時間觸發,包括定時觸發、迴圈觸發、間隔觸發;事件觸發機制,支持前置觸發和後置觸發;
(6)支持數據分析、可視化的監控功能、完善的告警模塊。
技術優勢
首先,Apache Dolphinscheduler調度系統的本質是滿足用戶使用其進行做調度的需求,其最大的優勢在於方便、簡易、美觀,這使得即使是不懂代碼的人也能使用它進行調度操作。
這一點使得Dolphinscheduler調度系統在眾多調度系統中脫穎而出,成為用戶優選的原因之一。
其次,海豚調度作為開源項目,其成功得益於全球頂尖人才的參與和貢獻。開源模式打破了公司和組織的邊界,甚至國家和國家的邊界,使得全球最頂尖的架構師、開發者等能夠組織到一起,共同為項目貢獻力量。這種模式凝聚了全球最頂尖的人才的想法,使得項目能夠持續多年,並且幫助更多的人,而不僅僅是為了某一家公司的盈利或發展。
再次,我們將Apache DolphinScheduler和原本採用的系統調度器Azkaban進行了對比,發現Azkaban中的缺點不可忽視,如無可視化界面、任務調度多時易卡死、部署複雜、無法暫停任務、集群擴展差等。
對比如下:
用海豚做什麼:
-
用海豚實現對指標計算程式的定時調度:編寫java程式實現指標計算功能,採用海豚可以靈活的傳遞主程式參數,滿足計算程式多維度數據處理,操作可視化。
-
對複雜關聯查詢的關聯腳本進行定時調度:海豚支持流式方式組裝任務,滿足了多表多條件複雜查詢串聯執行,可以及時監控任務的執行狀態,支持重試、指定節點恢復失敗、暫停、恢復、終止任務等操作。
綜上所述,選擇Apache Dolphinscheduler調度的原因不僅在於其用戶友好、易於使用的特點,還在於其作為一個開源項目所具有的全球頂尖人才的參與和貢獻,這些因素共同使得Dolphinscheduler調度成為一個值得選擇的調度系統。
生產實踐
二次開發
我們在使用Apache DolphinScheduler時,經過各種場景的試用和測試,升級了用戶體系,重構了項目級參數功能,優化了用戶體驗,修改了調度Java任務的異常問題。
1、項目級別變數
動態擴展項目中項目級別參數的使用,併在列表中對對應的參數的實際值進行展示等,同時可以根據項目參數的名稱對引用了該參數的工作流進行查詢跳轉。
2、Java類任務
該類任務,支持使用單文件和JAR包作為程式入口。
點擊項目管理 -> 項目名稱 -> 工作流定義,點擊“創建工作流”,進入DAG編輯頁面;
拖動工具欄的JAVA任務節點到畫板中。
主程式參數:作為普通JAVA程式main方法入口參數;
虛擬機參數:配置啟動虛擬機參數;
腳本:若使用JAVA運行類型則需要編寫JAVA代碼,代碼中必須存在Public類,不用寫Package語句;
資源:可以是外部JAR包,也可以是其他資源文件,他們會被加入到類路徑或模塊路徑中。
3、個性化界面
按照用戶操作習慣,我們重新定製了操作相關的按鈕,以及按鈕較多時收起、展開;
在項目管理界面,可以動態選擇需要的項目包,在無需返回到項目管理首頁重新選擇項目。
項目實踐
使用Apache DolphinScheduler 之後,我們根據實際業務需要進行二次開發之後,很好的解決了一些需求,下列簡述其中幾個場景:
1、將原有Azkaban中的調度任務平行遷移到DolphinScheduler中
Azkaban中流程示例:
平行遷移到Apache DolphinScheduler中示例:
2、對於數據源模塊,動態擴展了從第三方倒入數據源,增加了數據源的可用性
解決了指標計算程式定時調度問題,使用海豚調度可以靈活傳遞計算程式需要的參數併在調度過程列印相應日誌方便跟蹤排查問題。
解決了多個複雜的關聯查詢串聯執行時中途被阻斷導致的整個全流程失敗問題,海豚調度可以在失敗的節點重新跑流程,不需要再將成功的節點再重跑一次導致伺服器資源過度占用的問題,解決了Flink批流作業被動觸發的問題。
在公司項目的生產過程中目前已實現日均1000+的任務被調度處理,包含了4條產品線的20多個業務系統,離線開發的任務多半已遷移在Apache DolphinScheduler進行配置,極大的提升了數據開發人員的研發效率,方便數據開發人員維護工作。
後期發展計劃
在日常的運維工作還存在一些問題,主要包括任務失敗的及時告警、多項目任務的巡檢及對任務完成情況的準確把握等問題。
針對上述問題,計劃實施一系列的自動化運維措施,需實現自動化推送功能,每天定時的將生產調度的報告發送到企業微信群中,包括所有任務的執行情況,成功、失敗的具體情況;
對失敗的任務,增強告警機制,確保任務出現問題是能夠及時通知運維團隊,並作出迅速的響應和處理。
未來願景
我們團隊對於 Apache DolphinScheduler 的未來願景主要體現在以下幾個方面:
- 雲原生支持增強
期望Apache DolphinScheduler 進一步增強對雲原生環境的支持,在生產環境可使用worker 自動擴縮容特性。
- 異構數據源的Join 組件擴展
異構數據源之間的Join組件能極大的提升數據開發的能力和效率,能解決複雜數據任務之前同步數據的一致性問題。
Apache DolphinScheduler 的未來必然能構建一個更加強大、靈活、易用和可靠的開源調度系統,以滿足用戶對數據處理和調度的複雜需求,推動數據處理技術的發展和進步,希望社區越來越好!
本文由 白鯨開源 提供發佈支持!