一飛開源,介紹創意、新奇、有趣、實用的免費開源應用、系統、軟體、硬體及技術,一個探索、發現、分享、使用與互動交流的開源技術社群平台。緻力于打造活力開源社群,共建開源新生态!
一、開源項目簡介
羅盤是一個大資料任務診斷平台,旨在提升使用者排查問題效率,降低使用者異常任務成本。
二、開源協定
使用Apache-2.0開源協定
三、界面展示
四、功能概述
羅盤是一個大資料任務診斷平台,旨在提升使用者排查問題效率,降低使用者異常任務成本。
其主要功能特性如下:
- 非侵入式,即時診斷,無需修改已有的排程平台,即可體驗診斷效果。
- 支援多種主流排程平台,例如DolphinScheduler、Airflow或自研等。
- 支援多版本Spark、Hadoop 2.x和3.x 任務日志診斷和解析。
- 支援工作流層異常診斷,識别各種失敗和基線耗時異常問題。
- 支援引擎層異常診斷,包含資料傾斜、大表掃描、記憶體浪費等14種異常類型。
- 支援各種日志比對規則編寫和異常門檻值調整,可自行根據實際場景優化。
羅盤已支援診斷類型概覽:
診斷次元 | 診斷類型 | 類型說明 |
失敗分析 | 運作失敗 | 最終運作失敗的任務 |
首次失敗 | 重試次數大于1的成功任務 | |
長期失敗 | 最近10天運作失敗的任務 | |
耗時分析 | 基線時間異常 | 相對于曆史正常結束時間,提前結束或晚點結束的任務 |
基線耗時異常 | 相對于曆史正常運作時長,運作時間過長或過短的任務 | |
運作耗時長 | 運作時間超過2小時的任務 | |
報錯分析 | sql失敗 | 因sql執行問題而導緻失敗的任務 |
shuffle失敗 | 因shuffle執行問題而導緻失敗的任務 | |
記憶體溢出 | 因記憶體溢出問題而導緻失敗的任務 | |
成本分析 | 記憶體浪費 | 記憶體使用峰值與總記憶體占比過低的任務 |
CPU浪費 | driver/executor計算時間與總CPU計算時間占比過低的任務 | |
效率分析 | 大表掃描 | 沒有限制分區導緻掃描行數過多的任務 |
OOM預警 | 廣播表的累計記憶體與driver或executor任意一個記憶體占比過高的任務 | |
資料傾斜 | stage中存在task處理的最大資料量遠大于中位數的任務 | |
Job耗時異常 | job空閑時間與job運作時間占比過高的任務 | |
Stage耗時異常 | stage空閑時間與stage運作時間占比過高的任務 | |
Task長尾 | stage中存在task最大運作耗時遠大于中位數的任務 | |
HDFS卡頓 | stage中存在task處理速率過慢的任務 | |
推測執行Task過多 | stage中頻繁出現task推測執行的任務 | |
全局排序異常 | 全局排序導緻運作耗時過長的任務 |
五、技術選型
Compass(羅盤) 部署指南
Compass 依賴了排程平台、Hadoop、Spark、Canal、MySQL、Kafka、Redis、Zookeeper、Elasticsearch,需要提前準備好相關環境。
Compass 支援單機和叢集部署,可按子產品彈性擴縮容。
工程目錄
compass
├── bin
│ ├── compass_env.sh 環境變量,基礎元件配置
│ ├── start_all.sh 啟動腳本
│ └── stop_all.sh 停止腳本
├── conf
│ └── application-hadoop.yml hadoop相關配置
├── task-application 關聯任務執行個體、applicationId、hdfs_log_path
├── task-canal 訂閱排程平台MySQL表中繼資料到Kafka
├── task-canal-adapter 同步排程平台MySQL表中繼資料Compass平台
├── task-detect 工作流層異常類型檢測
├── task-metadata 同步Yarn、Spark任務中繼資料到Elasticsearch
├── task-parser 日志解析和Spark任務異常檢測
├── task-portal 異常任務的可視化服務
└── task-syncer 排程平台任務關系表的抽象和映射
如何使用
1. 代碼編譯
通路一飛開源:https://code.exmay.com/ 下載下傳
cd compass
mvn package -DskipTests
2. 配置修改
cd dist/compass
vim bin/compass_env.sh
# Scheduler MySQL
export SCHEDULER_MYSQL_ADDRESS="ip:port"
export SCHEDULER_MYSQL_DB="scheduler"
export SCHEDULER_DATASOURCE_USERNAME="user"
export SCHEDULER_DATASOURCE_PASSWORD="pwd"
# Compass MySQL
export COMPASS_MYSQL_ADDRESS="ip:port"
export COMPASS_MYSQL_DB="compass"
export SPRING_DATASOURCE_USERNAME="user"
export SPRING_DATASOURCE_PASSWORD="pwd"
# Kafka
export SPRING_KAFKA_BOOTSTRAPSERVERS="ip1:port,ip2:port"
# Redis
export SPRING_REDIS_CLUSTER_NODES="ip1:port,ip2:port"
# Zookeeper
export SPRING_ZOOKEEPER_NODES="ip1:port,ip2:port"
# Elasticsearch
export SPRING_ELASTICSEARCH_NODES="ip1:port,ip2:port"
3. 一鍵部署
./bin/start_all.sh
系統架構
系統架構圖
架構說明
整體架構分3層:
- 排程系統對接層:實作對接排程器、Yarn、Spark、HDFS等系統,同步任務及其日志中繼資料到診斷系統;
- 服務層:包括資料采集、中繼資料關聯&模型标準化、異常檢測、Portal子產品;
- 基礎元件層:包括MySQL、 Elasticsearch、Kafka、Redis、Zookeeper等元件。
具體子產品流程階段:
- 資料采集階段:task-canal/adapter子產品訂閱同步排程系統的使用者、DAG、作業、執行記錄等工作流中繼資料同步至診斷平台;task-metadata子產品定時同步Yarn ResourceManager、Spark HistoryServer App中繼資料至診斷系統,關聯日志存儲路徑,為後續資料處理階段作基礎;
- 資料關聯與模型标準化階段:task-syncer子產品将同步的資料标準化為User、Project、Flow、Task、TaskInstance模型;task-application子產品将工作流層與引擎層中繼資料關聯;
- 工作流層&引擎層異常檢測階段:至此已經獲得資料标準模型,針對标準模型進一步Workflow異常檢測流程。task-detect子產品進行工作流層異常任務檢測,例如運作失敗、基線耗時異常等;task-parser子產品進行引擎層異常任務檢測,例如SQL失敗、Shuffle失敗等;
- 業務視圖:task-portal子產品提供使用者報告總覽、一鍵診斷、工作流層任務診斷、引擎層作業Application診斷、診斷建議和詳細報告、白名單等功能。
更多細節請參考部署指南
六、源碼位址
通路一飛開源:https://code.exmay.com/