袋鼠雲技術薈 | 數據開發樞紐:分佈式任務調度引擎DAGScheduleX

因爲大數據生態的複雜性,對於大數據開發人員來說,要深入其原理並形成體系發揮作用需要花費很多時間,而他們更多的是要聚焦在業務層面進行數據處理。而對於企業來說,要構建一個成熟穩定、功能多樣的大數據平臺需要花費很多的時間與人力成本。

今天我們就來說說,數據工程師在使用數棧平臺時,DAGScheduleX 調度引擎是如何承載數棧開發套件,幫助工程師更加快速地實現開發任務的。

 

什麼是DAGScheduleX

調度引擎:對Task(任務)生成Job(實例)並對Job進行統一調度管理,並提供Job實例基於多個集羣不同版本(Hadoop2、Hadoop3、CDH、HDP)多種不同計算引擎的任務調度。

袋鼠雲數棧平臺有七大開發套件:離線開發、實時開發、算法開發、標籤引擎、數據共享服務、數據質量、數據資產,大數據開發人員可以在套件中直接進行業務邏輯的開發,而不用關心底層的大數據平臺的架構與實現,將工作的重心更多地聚焦在業務之中。套件中所開發的Task(任務)會對應生成一個可執行的Job(實例),而所有Job(實例)的執行都依賴於DAGScheduleX(調度引擎的簡稱)。

 

 

 

DAGScheduleX的部署策略

DAGScheduleX在部署策略上有多種選擇方案,以滿足項目實施時的環境要求:

  • 可以區分爲Master/Worker角色,Master代表調度、Worker代表執行引擎。Worker部署在計算節點會更加輕量。

  • 也可以進行單進程整合部署,部署模式更加簡單。

以上兩種部署方式都支持多節點部署。

 

 

DAGScheduleX 之調度(Master)

 

1) 解析DAG有向無環圖

大數據開發人員基於開發套件開發的Task(任務)可以是一個獨立的Task(任務),也可以是一個複雜的工作流Task(任務)。可以對Task(任務)進行調度依賴的配置,將任務與任務之間生成一個DAG有向無環圖。最後根據調度週期,會將任務的DAG有向無環圖進行解析生成對應的Job實例。

 

2) 調度的主要職責

調度(Master)實現了對Job(實例)的統一管理,會根據Job的優先級進行高併發調度,並對Job的運行情況進行監控。調度(Master)支持高可用(HA)部署,對異常宕機後Job(實例)運行情況的數據進行恢復,並保證多節點部署時的數據一致性。最後,調度(Master)提供了豐富的Rest Api接口,滿足數棧體系的七大套件的功能要求:

  • 解析Task的DAG生成Job

  • 調度Job(依賴關係、優先級、運行狀況)

  • 故障容災恢復

  • Worker 健康檢查

  • 提供豐富的Rest Api支持

 

 

 

 

DAGScheduleX 之執行引擎(Worker)

 

 

1) 自定義Classloader 結合 SPI 實現計算組件插件化管理

DAGScheduleX目前支持多種計算組件,如Flink、Spark、tersorflow、python、shell 、Hadoop MR、Kylin、Odps、RDBS(多種關係型數據庫)等等。不同的計算組件之間通過自定義的Classloader進行隔離加載,並根據 Java SPI 確定具體的計算組件類型,以此解決不同計算組件之間的程序衝突問題:

自定義 Classloader 以 Child-First 方式加載插件

在classpath下的 META-INF/services/ 目錄下以 SPI 方式描述插件對應的計算組件

 

2) Console 統一管理多個集羣的不同版本

Job(實例)在執行引擎處理前,會通過 Console 獲取到一段 pluginInfo 信息。在 pluginInfo 中會對某一具體的集羣信息進行描述,如果存在2個集羣環境:Cluster A,Cluster B,Job(實例)需要提交到Cluster A中執行時,pluginInfo 中就對應了 Cluster A 集羣的相關配置信息,並以此配置信息初始化(Cluster A)相關組件對集羣進行操作。

 

3) 提供遠程調用服務

Worker可下發到計算節點進行部署,並提供遠程調用服務支持Master 與 Worker 之間的通信。通信服務包括並不侷限於以下方式:

獲取插件中的默認配置信息

  • Job(實例)的submit(提交)接口

  • Job(實例)的cancel(取消)接口

  • Job(實例)的status(運行狀態)接口

  • Job(實例)的log(運行日誌)接口

DAGScheduleX是基於任務DAG構建實例、實例調度、實例多引擎提交爲一體的分佈式任務調度引擎。數棧的離線計算、流計算、算法開發等所有的套件都依賴於調度引擎來執行任務,是很重要的樞紐。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章