天天看點

[開源]大資料任務診斷平台,提升排查問題效率,降低異常任務成本

作者:一飛開源
一飛開源,介紹創意、新奇、有趣、實用的免費開源應用、系統、軟體、硬體及技術,一個探索、發現、分享、使用與互動交流的開源技術社群平台。緻力于打造活力開源社群,共建開源新生态!

一、開源項目簡介

羅盤是一個大資料任務診斷平台,旨在提升使用者排查問題效率,降低使用者異常任務成本。

二、開源協定

使用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/

繼續閱讀