首页 > 其他分享 >Hadoop细粒度近实时慢节点告警实践

Hadoop细粒度近实时慢节点告警实践

时间:2023-11-08 23:32:48浏览次数:37  
标签:tasks attempt 细粒度 Hadoop elapsed task 告警 异常 节点

1. 背景

https://blog.51cto.com/u_15327484/8260931文章中,介绍了通过抓取Yarn web页面的方式获取task级别的进度,并且将task进度通过纵向的历史进度进行预测对比检查作业进度是否符合预期。

对于task级别的进度,不仅可以用作纵向对比,还可以进行横向对比。当多次发生某个节点上执行的task比其他节点节点上执行的task时间高时,就认为该节点是慢节点,应该经过一系列硬件检查以及环境信息检查,甚至下线。

2. 异常节点比较算法

由于map下所有task都属于同一类型,它们执行相同的逻辑,正常情况下map下的所有tasks应到同时执行完,如果有task执行时间明显高于其它tasks,那么表明该task未在正常时间内执行完毕,该task的状态是异常的,因此可以统计异常的task数量;同理可以检测reduce下的异常task数量。最终统计map类型tasks和reduce类型tasks的异常总数,最终获得Job的tasks的异常tasks占比。

异常task检测方法:箱形图。其在实践上要优于标注差算法。根据输入的数组计算分位点,计算出异常边界值:mild outlier和extreme outlier。在mild outlier外的点就是异常值,箱形图如下所示: Untitled.png

正态分布样本对应到箱形图的区间如下:

Untitled 1.png

由于tasks的progress的取值空间是[0.0, 100.0],它不是标准正态分布,因此需要对箱形图算法进行调整,调整如下:

  1. IQR系数从1.5调节至0.5,减小正常样本点的取值范围。
  2. 当IRQ为0时,表示大部分样本值一致,需要增加一个缓冲项,此时设置IQR=0.5*median。

3. 异常节点计算

基于定时模块采样后,每次采样得到的tasks信息都需要进行比较,最后查看是否有慢节点出现,其逻辑如下:

  1. 将tasks的elapsed time作为箱形图输入,和正常的task的elapsed time进行比较,计算异常tasks。每个task可能有多次attempt,task的elapsed time是所有attempt的elapsed time之和。因此需要获取tasks中是否有多个attempt信息,获取其中elapsed time最大的attempt。
  2. 获取这些异常tasks的attempt信息,这些attempt elapsed time输入到箱型图中,和正常attempt elapsed time进行比较。如果间隔超过15min,说明task异常。
  3. 如果task异常,将当前omega JobId写入redis中,如果异常的作业数超过10个,即10个作业跑在该节点上都发生了异常,该机器为慢节点。

Untitled 2.png

在设计慢节点报警时,使用Redis的Set作为存储结构,将异常节点的主机名作为Key,将JobId作为field,将时间戳作为value。

Untitled 3.png

Redis更新策略:每次job发生超时异常,将最新的timestamp更新对应的value中。保证一个作业在一个DN上即使发生了多次延迟,也只算做一次异常。这样避免因为数据倾斜导致错误判断为慢节点。

Redis过期策略:

  1. 应用比较每个jobId的延时时间,只当异常发生在最近一小时内,才真正统计在节点异常总数中。
  2. 由于会一直向上述hash存储结构写jobId,因此每个HostName包含的数据会无限膨胀。为了避免这种情况,在hostName后面加上Date时间,例如xxx-dn01-cluster1_2021_8_25,只统计当天异常节点和作业情况,不考虑历史数据,因此过往数据可以通过expireAt()设置过期时间。

4. 报警展示

Untitled 4.png

标签:tasks,attempt,细粒度,Hadoop,elapsed,task,告警,异常,节点
From: https://blog.51cto.com/u_15327484/8261644

相关文章

  • Hadoop作业实时智能监控项目实践
    1.背景对于Hadoop集群监控,有基于Linux的硬件告警,比如磁盘,内存,网络带宽告警;有基于组件的告警,例如OOM报警、RPC告警。这些告警能反应个体机器的运行状况,不能反映整个集群的运行状况;同时,这些告警都是在已知的故障指标,但是对于未知的指标,可能已经发生并且对系统产生较大影响,由于没有......
  • 对于告警事件频繁触发和恢复的情况,这种情况通常被称为"告警闪烁"或"告警风暴",是监控系
    对于告警事件频繁触发和恢复的情况,这种情况通常被称为"告警闪烁"或"告警风暴",是监控系统中常见的问题。这种情况可能会导致运维人员疲惫不堪,因此需要采取一些策略来减轻这种情况的影响。以下是一些解决告警闪烁问题的方法:告警去重和抑制:设置告警去重规则,以便在一定时间内连续多......
  • 20231107学习总结-大型数据库-实验1.熟悉常用的Linux操作和Hadoop操作
    实验1熟悉常用的Linux操作和Hadoop操作1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3。3.......
  • 自用告警模板
    自用的报警模板{{$var:=.externalURL}}{{range$k,$v:=.alerts}}{{ifeq$v.status"resolved"}}**[Prometheus恢复信息]({{$v.generatorURL}})***[{{$v.labels.alertname}}]({{$var}})*告警级别:{{$v.labels.severity}}告警状态:{{$v.status}}开始时间:{{GetCSTtime$v.s......
  • Hadoop:Yarn资源调度
    1、Yarn是什么?ApacheHadoopYARN(YetAnotherResourceNegotiator另一种资源协调者)是一种新的Hadoop资源管理器,提供一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。可以把HadoopYARN理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则......
  • Hadoop基于CallerContext增强血缘信息实践
    1.背景一般情况下,用户会以项目为维度提交作业。因为项目用户的拥有项目下的所有权限。如下所示,个人用户bob将在project_sa项目空间下提交作业,HDFS会通过project_sa进行鉴权并访问:上述方案有一个问题,如果HDFS中的auditlog中记录的操作用户是project_us,无法分辨具体由哪个用户提......
  • SRE-基于阿里云的告警体系建设
    基于数据源来做分类sls日志告警配置以及查看方式sls日志左侧点击铃铛进入告警中心配置告警规则触发就是sls日志的查询语句,配置的规则时间内,查询语句查询的数量达到配置值,就会触发告警现状5XX告警应用error日志告警云产品监控告警配置以及查看方式阿里云直接搜索云监控......
  • Hadoop整合AWS S3和Google gcs对象存储实践
    1.背景https://blog.51cto.com/u_15327484/8193991介绍了海外Hadoop集群一般将冷数据放入到AWSS3或者存放到Googlegcs对象存储中。这些对象存储都提供了各自的客户端进行访问,例如awss3的客户端命令就是awss3;gcs的客户端命令是gsutil。这些命令一般需要直接登陆到授权机器中执......
  • prometheus添加自定义监控与告警(etcd为例)
    一、步骤及注意事项(前提,部署参考部署篇)一般etcd集群会开启HTTPS认证,因此访问etcd需要对应的证书使用证书创建etcd的secret将etcd的secret挂在到prometheus创建etcd的servicemonitor对象(匹配kube-system空间下具有k8s-app=etcd标签的service)创建service关联被监控对象二、......
  • Kerberos在Hadoop中的应用
    1.背景在https://blog.51cto.com/u_15327484/8153877文章中,介绍了在Java中,客户端通过JAAS框架向AS认证获取TGT,再通过GSSAPIonSASL获取serviceticket并向服务端进行认证。Hadoop中整合Kerberos安全认证机制,当HDFS客户端访问NameNode服务端时,HDFS客户端先获取TGT,再获取service......