罗盘(Compass)是基于 OPPO 内部大数据诊断平台的开源项目,可用于诊断 DolphinScheduler、Airflow 等调度平台上所运行的大数据任务。
罗盘核心功能
罗盘目前已支持以下功能和特性:
非侵入式,即时诊断,无需修改已有的调度平台,即可体验诊断效果。
支持多种主流调度平台,例如 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推测执行的任务 |
|
全局排序异常 |
全局排序导致运行耗时过长的任务 |
罗盘技术架构
罗盘主要由同步工作流层任务元数据模块、同步 Yarn/Spark App 元数据模块、关联工作流层/引擎层 App 元数据模块、工作流任务异常检测模块,引擎层异常检测模块,Portal 展示模块组成。
整体架构图
整体架构分 3 层:
第一层为对接外部系统,包括调度器、Yarn、HistoryServer、HDFS 等系统,同步元数据、集群状态、运行环境状态、日志等到诊断系统分析;
第二层为架构层,包括数据采集、元数据关联&模型标准化、异常检测、诊断 Portal 模块;
第三层为基础组件层,包括 MySQL、Elasticsearch、Kafka、Redis 等组件。
具体模块流程阶段:
(1)数据采集阶段:从调度系统将用户、DAG、作业、执行记录等工作流元数据同步至诊断系统;定时同步 Yarn ResourceManager、Spark HistoryServer App 元数据至诊断系统,标志作业运行指标存储路径,为后续数据处理阶段作基础;
(2)数据关联&模型标准化阶段:将分步采集的工作流执行记录、Spark App、Yarn App、集群运行环境配置等数据通过 ApplicationID 介质进行关联,此时,工作流层与引擎层元数据已关联完毕,得到数据标准模型 (user, dag, task, application, clusterConfig, time);
(3)工作流层&引擎层异常检测阶段:至此已经获得数据标准模型,针对标准模型进一步 Workflow 异常检测流程,同时平台维护着一套沉淀多年的数据治理知识库,加载知识库到标准模型,通过启发式规则,对标准模型的指标数据、日志同时进行异常挖掘,结合集群状态及运行是环境状态,分析得出工作流层、引擎层异常结果;
(4)业务视图:存储、分析数据,提供给用户任务概览、工作流层任务诊断、引擎层作业 Application 诊断,工作流层展示调度器执行任务引发的异常,如任务失败、回环任务、基线偏离任务等问题,计算引擎层展示 Spark 作业执行引发的耗时、资源使用、运行时问题。
compass电子罗盘 GPS 这个用过GPS的机油肯定不陌生。 还是 介绍一下i8000的电子罗盘。传统罗盘用一根被磁化的磁针来感应地球磁场,地球磁场与磁针之间的磁力时磁针转动,直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也一样,只不过把磁针换成了磁阻传感器,利用霍尔效应(Hall Effect),利用洛伦兹力造成电流中电子偏向,计算电压变化,然后将感受
引子 这几天一直在忙一个可滑动的转盘的demo,网上也有类似的例子,但是根据老板的需求来改他们的代码,还不如重新写个完全符合需求的插件。 想法很美好,但是新手上路... 效果链接文末 需求 image 这个demo给的非常简单,能转动的地方有三处,内盘、外盘和指针,这三个上的集合的交集产生一个链接,通过中间的按钮跳转。 这个需求乍一看老简单老简单的,但是作为一个菜鸡第一次上道,堪比开碰碰车,头破血
新API切换罗盘不再自动正北,为了支持更多的交互吧。 https://blog.csdn.net/niuba123456/article/details/81124739 使用 MapStatus 更新 rotete 旋转,overlook 鸟瞰。 Button button_location_mode; button_location_mode = (Button) findViewById(R
摘要: 获得该设备的当前朝向。 方法:compass.getCurrentHeadingcompass.watchHeadingcompass.clearWatch 参数:compassSuccesscompassErrorcompassOptions compass.getCurrentHeading 获取罗盘的当前朝向。 简单的 ... 获得该设备的当前朝向。方法: compass.getCu
获得该设备的当前朝向。 方法: compass.getCurrentHeading compass.watchHeading compass.clearWatch 参数: compassSuccess compassError compassOptions compass.getCurrentHeading 获取罗盘的当前朝向。 简单的范例: avigator.compass.getCurren
GPS 这个用过GPS的机油肯定不陌生。 还是 介绍一下i8000的电子罗盘。传统罗盘用一根被磁化的磁针来感应地球磁场,地球磁场与磁针之间的磁力时磁针转动,直至磁针的两端分别指向地球的磁南极与磁北极。电子罗盘也一样,只不过把磁针换成了磁阻传感器,利用霍尔效应(Hall Effect),利用洛伦兹力造成电流中电子偏向,计算电压变化,然后将感受到的地磁信息转换为数字信
解锁时出现compass inconsistent xx°,一般是内部罗盘(飞控内)与外部罗盘(外置GPS内)获取参数不一致所造成的,解决方案如下: 设法将MAG0罗盘关闭,即disable。一般可通过调节参数树来实现。 由于不同PX4版本参数不同,故本次研究方法仅针对Stable Release v1.12.3: 1. 进入参数配置页面 2. 搜索参数"MAG0",可以发现与MAG0相关的诸多参
获得该设备的当前朝向。 方法: compass.getCurrentHeading compass.watchHeading compass.clearWatch 参数: compassSuccess compassError compassOptions compass.getCurrentHeading 获取罗盘的当前朝向。 简单的范例: navigator.compass.getCurren
我正在尝试使用AWS的ECS服务在AWS上启动/运行Dockerfile。我可以在本地运行docker映像,但Fargate启动类型的映像失败。我已经将我的Docker映像上传到ECR,并从中创建了一个集群/服务/任务。 然而,我的群集的任务状态只是简单地读取“DEPROVISIONING(任务启动失败)”,但它没有提供运行映像输出的日志或细节,所以我不知道出了什么问题。如何查找更多信息并诊断EC
在大约14个工作小时后,我有一个云数据流管道失败,下面是一条神秘的日志消息: 谢了!
如果 Flarum 无法安装或者是没有按照预期运行,第一件需要做的事情就是再次检查你的环境是否达到了系统要求。如果你缺失部分 Flarum 的依赖项(例如 PHP 的 fileinfo 扩展),你将需要先处理这些问题。 接下来,你应该花上几分钟在支持论坛和问题追踪器内检索。有可能有人已经汇报了这个问题,或者解决方案正在讨论,或者已经有解决方案。在检索过后,如果你仍然没有发现关于这个问题的信息的话,
Composer默认使用Winston日志记录模块,并使用Config模块查找任何配置信息。如果没有找到,那么将使用一组默认值。 如果没有设置配置文件,配置模块会写出警告。例如。WARNING: No configurations found in configuration directory。如果您对默认值感到满意,并且不希望在应用程序中使用配置,则可以使用环境变量来抑制这种情况。在这里查看更
什么是抓取诊断 抓取诊断工具,可以让站长从百度蜘蛛的视角查看抓取内容,自助诊断百度蜘蛛看到的内容,和预期是否一致。每个站点每周可使用70次,抓取结果只展现百度蜘蛛可见的前200KB内容。 抓取诊断工具能做什么 目前抓取诊断工具有如下作用: 1、诊断抓取内容是否符合预期,譬如很多商品详情页面,价格信息是通过JavaScript输出的,对百度蜘蛛不友好,价格信息较难在搜索中应用。问题修正后,可用诊断工