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

jopen 9年前發布 | 52K 次閱讀 大數據

背景

大數據平臺技術框架支持的開發語言多種多樣,開發人員的背景差異也很大,這就產生出很多不同類型的程序(任務)運行在大數據平臺之上,如: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:顯示平臺任務總體概況,資源總體概況

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

大數據任務調度

任務查詢和維護:

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

大數據任務調度

添加任務:

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

大數據任務調度

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

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

大數據任務調度

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

大數據平臺任務調度與監控系統
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!