大數據平台任務調度與監控系統

背景

大數據平臺技術框架支持的開發語言多種多樣,開發人員的背景差異也很大,這就產生出很多不同類型的程序(任務)運行在大數據平臺之上,如:MapReduce、Hive、Pig、Spark、Java、Shell、Python等。

這些任務需要不同的運行環境,並且除了定時運行,各種類型之間的任務存在依賴關係,一張簡單的任務依賴圖如下:

大數據平臺任務調度與監控系統

目前各業務的數據任務基本都是靠Crontab定時調度,各個任務之間的依賴僅靠簡單的串行來實現。

這樣做的問題:

  • 很容易造成前面的任務未結束或者失敗,後面的任務也運行起來,最終跑出錯誤的分析結果;
  • 任務不能併發執行,增加任務執行的整體時間窗口;
  • 任務管理和維護很不方便,不好統計任務的執行時間及運行日誌;
  • 缺乏及時有效的告警;

SkyNet調度監控系統,正是為了解決以上問題。

系統架構

大數據平臺任務調度與監控系統

名詞解釋

SkyNet任務調度監控系統的名稱。Job/任務一個程序運行單元,比如,一個MapReduce程序、一個Shell腳本等。業務日期每個程序運行所處理的數據日期。JobInstance/任務實例一次任務運行實例,因為一個任務在同一業務日期可能會運行多次。資源任務運行的節點(主機)DataHub數據交換機,用於異構數據源時間的數據交換。

系統模塊

  • JobManager:SkyNet的Master,提供RPC服務,接收並處理JobClient/Web提交的所有操作;與元數據通訊,維護Job元數據;負責任務的統一配置維護、觸發、調度、監控
  • JobMonitor: 監控正在運行的Job狀態、監控任務池、監控等待運行的Job;
  • JobWorker:SkyNet的Slave,從任務池中獲取Job、負責啟動並收集Job的執行狀態,維護至元數據庫;
  • JobClient/Web:SkyNet客戶端類,前端界面提供給用戶,用作任務的配置、管理、監控等;
  • 任務元數據:目前使用Mysql,保存Job的配置、依賴關係、運行歷史、資源配置、告警配置等;

系統特性

  • 分佈式架構:容量和負載能力(JobWorker)可線性擴充,並可以跨外網部署(只需能訪問元數據庫即可);
  • 高可用性:擁有主備Master,一旦主Master異常,備Master會接替主Master提供服務(後期實現);
  • 高容錯性:Master重新啟動後,會將之前未完成的任務重新調度運行;
  • 完善易用的Web用戶界面:用於用戶配置、提交、查詢、監控任務及任務的依賴關係;
  • 支持任意類型的任務:除了Hadoop生態圈的MapReduce、Hive、Pig等,還支持其他任何語言開發的任務,如Java、Shell、Python、Perl、Spark等;
  • 完整的日誌記錄:收集並記錄任務運行過程中產生的標準輸出和標準錯誤,提供Http訪問,用戶可通過訪問任務對應的日誌Url來方便的訪問任務運行日誌;
  • 任務之間的靈活依賴:可將任意一個任務作為自己的父任務進行依賴觸發;
  • 靈活多樣的告警規則:除了失敗告警,也支持任務超時未完成、任務超時未開始等告警規則;

頁面展示

DashBoard:顯示平臺任務總體概況,資源總體概況

大數據平臺任務調度與監控系統

任務查詢和維護:

大數據平臺任務調度與監控系統

添加任務:

大數據平臺任務調度與監控系統

查看任務依賴關係及運行狀態:

大數據平臺任務調度與監控系統

查看任務運行狀態及運行日誌:

大數據平臺任務調度與監控系統

如果覺得這篇文章對您有幫助,希望關注一下哦,您的每一份關注是我最大的努力!


分享到:


相關文章: