一飞开源
阅读642

[开源]大数据任务诊断平台,提升排查问题效率,降低异常任务成本

一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

罗盘是一个大数据任务诊断平台,旨在提升用户排查问题效率,降低用户异常任务成本。

二、开源协议

使用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诊断、诊断建议和详细报告、白名单等功能。

更多细节请参考部署指南

六、源码地址

源码下载

关注下面的标签,发现更多相似文章

一飞开源
发布了 篇专栏 · 获取点赞 · 获取阅读

评论

查看更多
相关推荐
关于作者
一飞开源
获得点赞 100
文章被阅读 1000
相关文章