OPPO 大数据诊断平台“罗盘”正式开源

OPPO 大数据诊断平台“罗盘”正式开源 2

一、背景

OPPO 大数据平台目前有 20+个服务组件,数据量超 1EB,离线任务数近百万,实时任务数千,数据开发分析师超千人。这也带来了系统复杂度的问题,一方面是用户经常对自己的任务运行状况“摸不着头脑”,不管是性能问题,还是参数配置问题,甚至是一些常见的权限报错问题,都需要咨询平台给出具体的解决方案;另一方面是平台面对各类繁杂任务,运维人员经常需要对任务故障定位和排除,由于任务链路长,组件日志多,运维压力大。因此急需对任务进行实时监控和诊断,不仅要能够帮助用户快速定位异常问题,还需给出具体的建议和优化方案,同时还能治理各类“僵尸”和不合理任务,从而达到降本增效的目的。据调研,目前业界尚无成熟的开源任务诊断平台。为此我们开发了大数据诊断平台,通过诊断平台周优化任务实例数超 2 万,取得了良好的效果。

“罗盘”(Compass)便是基于 OPPO 内部大数据诊断平台的开源项目(项目地址:github.com/cubefs/comp…),可用于诊断 DolphinScheduler、Airflow 等调度平台上所运行的大数据任务。我们希望通过“罗盘”(Compass)回馈开源社区,也希望更多人参与进来,共同解决任务诊断的痛点和难题。

二、罗盘核心功能

罗盘目前已支持以下功能和特性:

  • 非侵入式,即时诊断,无需修改已有的调度平台,即可体验诊断效果。
  • 支持多种主流调度平台,例如 DolphinScheduler、Airflow 或自研等。
  • 支持多版本 Spark、Hadoop 2.x 和 3.x 任务日志诊断和解析。
  • 支持工作流层异常诊断,识别各种失败和基线耗时异常问题。
  • 支持引擎层异常诊断,包含数据倾斜、大表扫描、内存浪费等 14 种异常类型。
  • 支持各种日志匹配规则编写和异常阈值调整,可自行根据实际场景优化。

罗盘已支持诊断类型概览:

OPPO 大数据诊断平台“罗盘”正式开源 4

(一)非侵入式,即时诊断

这里以 DolphinScheduler 调度平台为例。

OPPO 大数据诊断平台“罗盘”正式开源 6

从架构上看,MasterServer 主要负责 DAG 任务切分、任务提交监控并持久化任务实例数据到 DB 中,WorkerServer 主要负责任务的执行和提供日志服务,同时在 UI 提供了查看远程日志的功能。为了能够获取任务元数据和相关日志进行诊断,一个方式是在 MasterServer 中监听任务状态事件,另一个方式是订阅 MySQL binlog 日志。为了减少对 DolphinScheduler 的修改,我们采取了第二种方式。

因此只需要在 DolphinScheduler 创建一个工作流,并运行,等待运行结束,我们便可在罗盘上看到该任务运行失败等异常。

OPPO 大数据诊断平台“罗盘”正式开源 8

罗盘不但实现了对调度平台的解耦,还能在任务运行结束后即时诊断,同时提供了丰富的 UI 展示服务。如果您不需要我们提供的 UI 服务,那也可以直接查询罗盘诊断的元数据,展示在需要的地方。

(二)工作流层异常诊断

对于工作流层的任务实例,常见问题可分为两类:一类是失败的任务,例如首次失败、最终运行失败和长期失败;另一类是耗时异常的任务,例如基线时间异常、基线耗时异常和运行耗时长。

  1. 诊断失败的任务

用户经常忽略首次失败,甚至加大重试次数,如果不重视,最终可能会演变为最终失败。罗盘记录和诊断分析了每次失败的原因,不仅可以为用户快速定位问题,还可以在故障回溯时找到根因。对于长期失败的任务,需要通知用户整改或清理,避免造成资源浪费。

OPPO 大数据诊断平台“罗盘”正式开源 10 2.     诊断耗时异常的任务

针对需要 SLA 保障的任务,罗盘不仅分析了相对于历史正常结束时间,是否提前结束或者晚点结束的任务,即基线时间异常,也分析了相对于历史正常运行时长,是否运行时间过长或者过短的任务,即基线耗时异常。对于运行耗时长的任务,例如超过几个小时以上的大任务,用户和平台都需要分析是任务本身的问题,还是平台的问题。

OPPO 大数据诊断平台“罗盘”正式开源 12

(三)Spark 引擎层异常诊断

对于 Spark 任务,常见的问题可以归为三类:一类是运行时报错,另一类是运行时效率,最后一类是资源使用率问题。

OPPO 大数据诊断平台“罗盘”正式开源 14

  1. 诊断运行时报错异常

引擎层常见报错有 sql 失败、shuffle 失败和内存溢出等。此类报错具有明显的日志特征,可根据关键字提取分类,使用已有的知识库,提供给用户具体的解决方案,提升用户体验和效率。

罗盘提供了 sql 失败日志分析的规则,通常涉及到操作权限,库表不存在及语法等问题,此类问题可直接指引用户去申请权限。

OPPO 大数据诊断平台“罗盘”正式开源 16

shuffle 问题会严重影响任务运行甚至导致失败,需要重点关注,如果您目前没有更好的解决方案,也可以参考 OPPO 开源的高性能远程 shuffle 服务。 ( github.com/cubefs/shut… )

OPPO 大数据诊断平台“罗盘”正式开源 18

内存溢出也是经常导致任务失败的一大问题,可提取关键日志诊断分析并建议用户优化内存配置参数。

OPPO 大数据诊断平台“罗盘”正式开源 20

除了以上问题,罗盘还提供了 40+的日志识别规则及建议,也可自行根据实际场景扩展识别规则。

  1. 诊断运行时效率异常

如果任务执行耗时较长或者突然变慢,用户直接在调度平台无法判断是任务自身问题,还是调度平台问题,亦或是计算引擎的问题。为了排查 Spark 引擎,一般需要专业分析 SparkUI,比较不直观。罗盘对影响引擎执行效率的问题做了全面的检测,覆盖大表扫描,数据倾斜,Task 长尾,全局排序,OOM 风险,Job/stage 耗时异常,HDFS 卡顿,推测执行 Task 过多等问题。

  • 大表扫描

罗盘对执行的 SQL 扫描表行数,直观呈现在表格中。如果用户没有进行分区条件筛选,可能会发生全表扫描,需要提醒用户优化 SQL,避免导致内存溢出和影响集群,以提升运行效率。

OPPO 大数据诊断平台“罗盘”正式开源 22

  • 数据倾斜

罗盘检测每个 Task 的数据处理量并判断数据是否倾斜。当数据倾斜时,可能会导致任务内存溢出,计算资源利用率低,作业执行时间超出预期。

OPPO 大数据诊断平台“罗盘”正式开源 24

  • Task 长尾

罗盘检测所有 Task 的耗时,并按 Stage 呈现在柱状图中,方便用户判断是哪个 Stage 执行耗时异常。形成的原因一般是读取数据过多或读取数据慢。如果是数据倾斜造成读取数据过多,则按数据倾斜方式处理。如果同时 HDFS 发生卡顿,则会导致读取数据慢,则需要排查集群问题。

OPPO 大数据诊断平台“罗盘”正式开源 26

  • 全局排序异常

用户经常在 SQL 中使用了排序函数却不加分区限制,会导致全局排序。如果只有一个 Task 处理数据,需要建议用户重新分区,避免造成资源浪费和影响运行效率。

OPPO 大数据诊断平台“罗盘”正式开源 28

  • OOM 预警分析

罗盘检测执行 SQL 广播内存占比,当广播数据过大,会导致 driver 或 executor 出现 OOM 风险,需要提醒用户禁用广播或取消强制广播,必要时申请增加内存。

OPPO 大数据诊断平台“罗盘”正式开源 30

  • Job/stage 耗时异常

罗盘计算每个 Job/stage 实际计算时间和空闲时间,一般是资源不足时出现,需要关注集群资源问题。

OPPO 大数据诊断平台“罗盘”正式开源 32

  • HDFS 卡顿

当出现 HDFS 卡顿时,会影响 Task 读取数据速率,从而影响执行效率,需要关注 HDFS 集群运行状态。

OPPO 大数据诊断平台“罗盘”正式开源 34

  • 推测执行 Task 过多

推测执行(speculative)是指作业执行单元 Task 在同一个 Stage 中的执行时间相比其他 Task 执行时间长,在其他 Executor 发起相同 Task 执行,先完成的 Task 将 Kill 另个 Task, 并取得结果。需要关注集群运行状态。

OPPO 大数据诊断平台“罗盘”正式开源 36

  1. 诊断资源使用率异常

对于用户不确定任务 CPU 和内存使用情况,不知道怎么申请多大规格资源的问题,罗盘直观呈现了 CPU 和内存使用占比,方便用户优化资源配置参数,以节约资源成本。

OPPO 大数据诊断平台“罗盘”正式开源 38

OPPO 大数据诊断平台“罗盘”正式开源 40

罗盘还提供了 GC 日志分析功能,可查看执行过程 GC 是否存在性能问题。

OPPO 大数据诊断平台“罗盘”正式开源 42

(四)一键诊断、报告总览等功能

除了以上功能,我们还提供了一键诊断的功能,为用户提供详细的诊断报告。同时还有报告总览数据和白名单功能等。 OPPO 大数据诊断平台“罗盘”正式开源 44

OPPO 大数据诊断平台“罗盘”正式开源 46

 

三、罗盘技术架构

罗盘主要由同步工作流层任务元数据模块、同步 Yarn/Spark App 元数据模块、关联工作流层/引擎层 App 元数据模块、工作流任务异常检测模块,引擎层异常检测模块,Portal 展示模块组成。

整体架构图

OPPO 大数据诊断平台“罗盘”正式开源 48

整体架构分 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 异常检测流程,同时平台维护着一套沉淀多年的数据治理知识库,加载知识库到标准模型,通过启发式规则,对标准模型的指标数据、日志同时进行异常挖掘,结合集群状态及运行是环境状态,分析得出工作流层、引擎层异常结果;

OPPO 大数据诊断平台“罗盘”正式开源 50

(4)业务视图:存储、分析数据,提供给用户任务概览、工作流层任务诊断、引擎层作业 Application 诊断,工作流层展示调度器执行任务引发的异常,如任务失败、回环任务、基线偏离任务等问题,计算引擎层展示 Spark 作业执行引发的耗时、资源使用、运行时问题;

OPPO 大数据诊断平台“罗盘”正式开源 52

四、 DolphinScheduler & Compass

DolphinScheduler 是一个分布式和可扩展的开源工作流协调平台,具有强大的 DAG 可视化界面,有着丰富的使用场景,提供 Spark、Hive 和 Flink 等 30+种类型的任务,可靠性高和拓展性强。DolphinScheduler 经历了多年的实践和积累,已经成为了一个成熟的开源项目,并有着广泛的用户群体。

(一)部署体验

这里我们以 DolphinScheduler(2.0.6 版本)为例,体验如何快速集成罗盘。如果你还没有部署 DolphinScheduler,可参考官网部署指南。如果你已经在使用 DolphinScheduler,那么只需要部署罗盘即可。罗盘支持单机和集群部署,如果你想要快速体验罗盘的功能,可使用单机部署模式,罗盘依赖 Kafka、Redis、zookeeper 和 ElasticSearch,需要提前安装,依赖服务完成后即可通过部署脚本进行罗盘部署:

代码编译

git clone https://github.com/cubefs/compass.git

cd compass

mvn package -DskipTests

修改配置

cd dist/compass

修改数据源和相关配置,如下图

vim bin/compass_env.sh

OPPO 大数据诊断平台“罗盘”正式开源 54

一键部署

./bin/start_all.sh

(二)使用示例

首先在 DolphinScheduler 创建好项目,

OPPO 大数据诊断平台“罗盘”正式开源 56

然后创建一个 SPARK 任务的工作流,

OPPO 大数据诊断平台“罗盘”正式开源 58

最后上线该任务和运行。

OPPO 大数据诊断平台“罗盘”正式开源 60

打开罗盘 Web UI,默认路径为 http://localhost:7075/compass/ ,输入 DolphinScheduler 的账号密码,罗盘自动同步了 DolphinScheduler 用户信息。 OPPO 大数据诊断平台“罗盘”正式开源 62 最后进入任务运行页面,便可以看到所有的异常任务诊断信息。 OPPO 大数据诊断平台“罗盘”正式开源 64

五、罗盘开源规划

  • 罗盘主要围绕离线调度任务、计算引擎两个方面对问题进行定位分析,使用丰富的知识库,提供给用户解决优化方案,同时达到降本增效的目的。
  • 目前已开源部分主要包含对任务工作流和 Spark 引擎层的问题诊断,不久将发布针对 Flink 任务的异常和资源问题诊断。
  • 未来将引入更深层次的算法和诊断模型,实现去规则和阈值,使异常诊断更加智能化。

六、参与贡献

【Github 地址】: github.com/cubefs/comp…

欢迎参与贡献,如果您有需求或建议可以提 issue 到 Github,我们将及时为您解答。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。商机网仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 tenspace2022@163.com 举报,一经查实,本站将立刻删除。 本文链接:https://www.315965.com/n/54995.html 聚才发 母婴好物

(0)
上一篇 2023年6月8日 上午12:31
下一篇 2023年5月30日 下午4:02

相关推荐

  • 魔术教程简单易学初学(简单易学的魔术教程一学就会的那种)

    跟女儿一起玩的一个科学小实验分享给大家:筷子提米 首先,我们要准备的材料是:一个纸杯、一根筷子、若干米和水。 现在我们开始实验: ✈第一步,把米加上水均匀搅拌,水不要太多,只要米感觉有点湿润就行。 ✈第二步,把搅拌好的米装入纸杯,纸杯选普通的一次性杯子即可,不要选杯口太大的那种。 ✈第三步,把筷子插入米中,随意哪头插入均可,用粗的那头插入更容易成功哦。 ✈第…

    2023年6月8日 上午12:32
    22
  • 如何制作精美的ppt(如何制作精美的ppt教程)

    PPT在我们的生活和工作当中经常会被用到,很多人都在羡慕为什么别人的PPT做出来都非常好看,然而自己做的却很平常,今天就来教大家5个与众不同的PPT实用技巧,让你的PPT更高级! 一、墨迹笔刷效果 平时在制作PPT时,一直用的都是形状,时间久了就会感觉到没有欣赏度,赶快试试这个墨迹笔刷效果吧!首先需要准备一些笔刷素材,然后插入到PPT,点击右键「填充」-「图…

    2023年6月8日 上午12:32
    22
  • 自媒体创作常用的十五个视频制作工具有哪些(实用工具制作视频)

      大家好,今天我给大家分享一些关于视频制作的一些干货知识,很多小伙伴们抱怨做短视频实在太麻烦了,选题、脚本、拍摄、配音、剪辑花了两三天,发出去一看100多播放量,今天呢,我就把压箱底的15个视频制作工具分享给大家,从文案脚本、视频素材、后期剪辑,到文案提取、数据分析,听完这条音频呢,相信你也能快速上手,赶紧收藏起来吧,首先来看文案和选题今日热榜,…

    2023年6月8日 上午12:32
    22
  • seo教程搜索引擎优化入门与进阶(seo搜索引擎优化基础)

    怎么做好seo优化?SEO新手基础入门教程分享! 宋九九以为一个好的SEO优化方法,需要团队的技术能力和凝聚力,SEO最根本的目的就是满足搜索引擎的规则,以达到排名前置的目的。常规seo是一个长期过程,所以做SEO的时候要有耐心。 SEO优化是指根据搜索引擎索引规则和算法,使网站的基本元素符合搜索引擎检索原则,使其排名在搜索结果占据领先地位,现在想要做好网站…

    2023年6月8日 上午12:32
    22
  • 初级瑜伽基础入门教程(基础瑜伽入门)

    初学者练瑜伽,总会感觉身体僵硬、身体打不开、很多体式做不到位!其实初接触瑜伽,由于身体肌肉、筋膜都还比较紧张,不适合练习太大幅度的体式,需要循序渐进地练习! 今天分享一套超级适合初学者练习的瑜伽序列,全身都能锻炼到,体式也不难,把这篇文章收藏起来,坚持练习! 1、下蹲式 山式站立,双脚分开略比肩宽 双脚、双膝向外打开约45度 吸气,脊柱延展,呼气,收核心 屈…

    2023年6月8日 上午12:32
    22
  • 钢琴初学者指法基本教程(钢琴入门指法教程简单)

    钢琴有多少种指法?经常有琴友经常会问到这个问题。下面来详细介绍一下五种钢琴基本指法。 1、对指 最最基本的是一个手指头正对着一个键盘。五个手指就对应do、re、mi、fa、so五个音。 2、穿指 穿指也叫“拇指潜移”,也有人叫它“钻山洞”,就是1指从2指或3指或4指下面穿过,去弹奏更高的音的指法。 穿指规则: a、只能用1指去穿,而且只能穿2.3.或4指,不…

    2023年6月8日 上午12:32
    22
  • 抖音权重下降了怎样快速恢复(三个降权的补救提升方法)

    大家好,我是二小姐,今天是2022年的10月18号那么这里讲一下关于抖音账号的几种不同的权种第一种情况。   很多同学问的最多的一个问题就是说,二小姐你看我这个账号,我这个播放量只有100个,现在还能不能够用,这个账号能不能够用?如果你发了一两百个作品出去,播放量都还是只有几十个,100个,连200个都没有超过,那你最好就换一个账号,因为这个怎么说呢,有些手…

    2023年6月8日 上午12:32
    22
  • 南瓜粥的做法和功效(南瓜粥怎么做的)

    第一次喝南瓜粥还是在韩式烤肉店里,自此以后念念不忘,尝试了很多次,很多不同的版本,最终找到了最适合自己的。美味又简单,喜欢喝南瓜粥的朋友们可以试试 By 唐小P的幸福生活 用料 贝贝南瓜 一个 米有秘密米稀 一瓶 玉米 半根 做法步骤 1、准备好所有食材,米稀可以在超市中购买到。比如某森。喜欢口感甜一点的可以选择水果玉米,喜欢浓稠一点的可以选择粘玉米。南瓜蒸…

    2023年6月8日 上午12:32
    22
  • 包粽子教程慢动作(一步一步包粽子的步骤)

    过端午节吃粽子是中华民族的传统习俗,目前在宜昌市夷陵区小溪塔各个农贸市场,到处都在卖粽叶、包粽子,卖粽子。节日气氛越来越浓#宜昌头条# @知名三峡在小溪塔夷陵三巷农贸市场看到,近期卖包粽子叶的市场十分火热。几乎大街小巷都有卖粽子叶的身影。主要是箬叶居多。 粽子叶 粽子叶 包粽子取用的食材及包粽的方式因地域不同,所以有多种多样,在此介绍长江三峡地区比较常见的一…

    2023年6月8日 上午12:32
    22
  • wps表格制作教程入门(WPS制作表格教程基础入门)

    相关文章ChatGPT访问及内容安全技术设计取代C++!微软改用Rust语言重写Win11内核:简洁安全、性能更佳ChatGPT 会“杀死”编程吗?如何下载推特视频在中国,这些小店向阳生长快递业企稳回升印证市场回暖“超级充电宝”蓄势待发 还面临哪些挑战? ChatGPT 或 Google:哪个给出了最佳答案

    2023年6月8日 上午12:32
    22