OPPO大数据诊断平台Compass Flink版本开源

原创
2023/08/11 20:00
阅读数 654
AI总结

01

   背景   

继OPPO大数据平台开源基于Spark诊断产品Compass(代号“罗盘”)之后,我们又持续迭代开发集成了实时Flink引擎诊断,可用于诊断Flink作业的资源使用情况以及异常问题。在资源诊断方面,Compass给出Flink作业的建议资源参数, 可以缩容或扩容,让作业达到合理的资源使用状态;在异常问题诊断方面,定位Flink作业的运行异常问题,给出改善建议。Compass Flink版本不仅集成DolphinScheduler调度器,即可诊断DolphinScheduler上运行的Flink实时作业,还可以用于可自定义诊断自动上报Flink作业。我们希望通过Compass回馈开源社区,也希望更多人参与进来,共同解决任务诊断的痛点和难题。

02

   核心功能   

Compass Flink版本支持以下功能和特性:

  • 非侵入式,即时诊断,无需修改已有的调度平台,即可体验诊断效果。

  • 支持任意调度平台,例如 DolphinScheduler、自研平台等。

  • 支持异常诊断和资源诊断,能够给出合理的资源配置建议值。

Compass Flink版已支持诊断类型概述:

注意:JM即为Flink JobManager,TM即为Flink TaskManager。

03

   技术架构   

Compass主要由同步调度器任务元数据模块、同步Yarn/Spark/Flink元数据模块、关联调度器/引擎元数据模块、调度器任务异常检测模块,引擎层异常检测模块,Portal 展示模块组成。

3.1 整体架构图

整体架构分 3 层:

  • 第一层为对接外部系统,包括调度器、Yarn、HistoryServer、HDFS 等系统,同步元数据、集群状态、运行环境状态、监控指标、日志等到诊断系统分析;
  • 第二层为架构层,包括数据采集、元数据关联&模型标准化、异常检测、诊断 Portal 模块;
  • 第三层为基础组件层,包括 MySQL、Elasticsearch、Kafka、Redis 等组件。

3.2 Flink作业诊断流程

(1)元数据采集


采用CDC技术从调度器实时同步元数据到Compass系统,实时同步Flink Application元数据,另外用户也可通过系统接口或者Kafka消息队列渠道自主上报元数据到Compass系统;

(2)作业诊断

系统中的元数据通过Workflow, 采用启发式算法,计算各个规则函数,函数计算数据metric指标从Prometheus系统中获取,结合作业的元数据,最终Compass系统给出作业多维度诊断结果;
(3)业务视图

业务视图模块展示作业的诊断结果,包含诊断报告概览,诊断列表,诊断详情等展示维度。
04

   功能介绍   

4.1 作业列表

作业列表显示Flink作业诊断结果列表,记录包含作业的工作流、实例、项目名称、作业名、诊断类型等元数据,同时给出作业的诊断建议,作业可以根据建议进行改善,例如(TaskManager数量在100以内,降低JobManager内存到1024MB, 作业JobManager的内存变化:2048MB->1024MB);作业的诊断类型是多维度的,例如“JM内存优化“、“CPU利用率高”可同时存在,源于作业有多个诊断问题。点击“查看详情”可以跳转到作业的诊断报告。

4.2 诊断报告
任务详情展示作业诊断诊断结果具体情况,首先给出作业的诊断类型,其次基本信息包含:任务流、实例、作业名、ApplicationId、集群名称等;资源使用信息包含:并行度、TaskManager slot,TaskManager Core,TaskManager内存,JobManager内存等;运行参数建议:并行度,slot,core,内存等资源的缩减或者扩容调整。

4.3 报告总览

报告总览展示Flink作业数据的概览、趋势、分布。每日数据呈现:异常作业数、可优化作业数、可优化CPU数、可优化内存数;最近周期内资源趋势:CPU消耗趋势、内存消耗趋势、异常作业数趋势;最近周期内资分布:CPU资源类型分布、内存资源类型分布,异常作业数分布。
4.4 一键诊断
一键诊断功能是针对特定的作业进行诊断,输入作业的Yarn ApplicationID,点击一键诊断发起即时诊断,将返回作业的相关信息以及诊断结果,点击“查看诊断报告”可查看报告详情。

4.5 白名单

白名单功能可以根据作业的工作流,实例,项目,只要作业添加入白名单,作业将不进行诊断。

05
   案例分析   

案例一:JM内存分析


JobManager内存分析:根据TaskManager个数作为计算依据,如果数量在100个以内,则建议JobManager内存设置为1G,如果在100个以上则建议内存设置为2G。

案例二:CPU峰值利用率

CPU峰值利用率高分析:计算作业的TaskManager CPU峰值利用率,如果最近5分钟高于阈值80%,或者诊断周期内累计30分钟高于阈值80%,则按照算法计算建议的资源分配参数。

案例三:CPU利用率低



CPU利用率低分析:计算作业的TaskManager CPU平均利用率,如果低于某个设定阈值,则建议减低CPU,使用参数进行调配,使得CPU利用率趋近合理的值。

案例四:作业无流量


作业无流量分析:计算作业TaskManager的Kafka Source、CPU利用率、堆内存利用率,如果值极其低,可以看为无流量,可缩减作业资源。

案例五:内存利用率低


内存利用率低分析:计算作业TaskManager的内存利用率,如果低于设定阈值,那么则建议减少内存配置,使用内存使用率趋近合理值。
06
   参与贡献   

【Github 地址】:https://github.com/cubefs/compass

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

作者介绍
Yves Yuan  OPPO高级研发工程师

Apache Committer,10年大数据相关方向开发经验,毕业于电子科技大学

Bob Zhuang OPPO高级研发工程师

专注大数据分布式系统研发。

END
About AndesBrain

安第斯智能云
OPPO 安第斯智能云(AndesBrain)是服务个人、家庭与开发者的泛终端智能云,致力于“让终端更智能”。安第斯智能云提供端云协同的数据存储与智能计算服务,是万物互融的“数智大脑”。


本文分享自微信公众号 - 安第斯智能云(OPPO_tech)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
AI总结
返回顶部
顶部