更新时间:2024-11-12 GMT+08:00

ALM-18022 Yarn队列资源不足

告警解释

  • MRS 3.3.1之前版本:告警模块按60秒周期检测Yarn队列资源,当队列可用资源或队列AM(ApplicationMaster)可用资源不足时,产生该告警。

    当可用资源充足时,该告警自动消除。

  • MRS 3.3.1及之后版本:告警模块按周期(“alarm.resource.lack.check.times.threshold”参数控制,单位:分钟)检测Yarn队列资源,当队列可用资源或队列AM(ApplicationMaster)可用资源不足时:
    • 如果“alarm.resource.lack.enable”参数配置为“true”,且“alarm.resource.lack.enable.queues”为空,则允许所有队列触发当前告警。
    • 如果“alarm.resource.lack.enable”参数配置为“true”,且“alarm.resource.lack.enable.queues”配置了队列名称,则仅允许指定的队列上报当前告警。
    • 如果“alarm.resource.lack.enable”参数配置为“false”,则不允许所有队列上报当前告警。

    以上参数可以在Manager页面选择“集群 > 服务 > Yarn > 配置 > 全部配置”,搜索对应参数进行配置。

    当可用资源充足时,该告警自动消除。

告警属性

告警ID

告警级别

是否自动清除

18022

次要

告警参数

参数名称

参数含义

来源

产生告警的集群名称。

队列名

产生告警的队列名。

队列指标名

产生告警的队列指标名。

Trigger Condition

系统当前指标取值满足自定义的告警设置条件。

对系统的影响

  • 应用任务结束时间变长。
  • 新应用提交后长时间无法运行。

可能原因

  • 告警上报机制需要调整。(仅适用于MRS 3.3.1及之后版本 )
  • NodeManager节点资源过小。
  • 队列最大资源容量设置过小。
  • AM最大资源百分比设置过小。

处理步骤

调整告警上报机制(仅适用于MRS 3.3.1及之后版本 )

  1. 请根据实际业务情况,确认是否所有队列都需要上报当前告警:

    • 所有队列都不需要上报告警:登录FusionInsight Manager界面,选择“集群 > 服务 > Yarn > 配置 > 全部配置”,搜索并修改“alarm.resource.lack.enable”参数值为“false”,保存配置。
    • 仅部分队列需要上报告警:登录FusionInsight Manager界面,选择“集群 > 服务 > Yarn > 配置 > 全部配置”,搜索并修改“alarm.resource.lack.enable.queues”参数值为需要上报当前告警的队列名称,保存配置。
    • 所有队列都需要上报告警:执行3

  2. 等待5分钟,查看该告警是否消除。

    • 是,处理完毕。
    • 否,执行3

检查NodeManager节点资源。

  1. 在FusionInsight Manager界面,选择“运维 > 告警 > 告警”,弹出告警页面。
  2. 查看“Yarn队列资源不足”告警详情中的“定位信息”,查看“定位信息”是否为“队列名=root;队列指标名=Memory”或“队列名=root;队列指标名=vCores”。

    • 是,执行5
    • 否,执行6

  3. 出现该定位信息表示Yarn集群内存或CPU不足,登录NodeManager节点,分别使用命令free -gcat /proc/cpuinfo,查询节点可用内存和可用CPU,据此在FusionInsight Manager界面增大Yarn NodeManager的资源参数“yarn.nodemanager.resource.memory-mb”“yarn.nodemanager.resource.cpu-vcores”的值,然后重启NodeManager实例。查看该告警是否消除。

    NodeManager重启过程中,提交到该节点的Container可能会重试到其他节点。

    • 是,处理完毕。
    • 否,执行6

检查队列最大资源容量设置

  1. 查看告警详情中“定位信息”为“队列名=<租户队列名>;队列指标名=Memory”或“队列名=<租户队列名>;队列指标名=vCores”,然后查看告警详情中“附加信息”是否包含“available Memory =”或“available vCores =”。

    • 是,执行7
    • 否,执行9

  2. 出现该附加信息表示该租户队列内存或者CPU不足,选择“租户资源 > 动态资源计划 > 资源分布策略”,调大“最大资源容量”的值,查看该告警是否消除。

    • 是,处理完毕。
    • 否,执行8

  3. 选择“集群 > 待操作集群的名称 > 服务 > Yarn > 配置 > 全部配置”,输入搜索关键字“threshold”,单击“ResourceManager”,调整如下参数阈值:

    如果“附加信息”中包含“available Memory =”,调整“yarn.queue.memory.alarm.threshold”的阈值使其小于“附加信息”中的“available Memory =”的值。

    如果“附加信息”中包含“available vCores =”,调整“yarn.queue.vcore.alarm.threshold”的阈值使其小于“附加信息”中的“available vCores =”的值。

    等待5分钟,查看该告警是否消除。
    • 是,处理完毕。
    • 否,执行11

检查AM最大资源百分比

  1. 查看“附加信息”包含“available AmMemory =”或“available AmvCores =”,表示该租户队列的ApplicationMaster内存和CPU不足,选择“租户资源 > 动态资源计划 > 队列配置”,增大“AM最大资源百分比”,查看该告警是否消除。

    • 是,处理完毕。
    • 否,执行10

  2. 选择“集群 > 待操作集群的名称 >服务 > Yarn > 配置 > 全部配置”,输入搜索关键字“threshold”,单击“ResourceManager”:调整如下参数阈值:

    如果“附加信息”包含“available AmMemory =”,调整“yarn.am.memory.alarm.threshold”的阈值使其小于“附加信息”中的“available AmMemory =”的值。

    如果“附加信息”包含“available AmvCores =”,调整“yarn.am.vcore.alarm.threshold”的阈值使其小于“附加信息”中的“available AmvCores =”的值。

    等待5分钟,查看该告警是否消除。
    • 是,处理完毕。
    • 否,执行11

收集故障信息。

  1. 在主集群的FusionInsight Manager界面,选择“运维 > 日志 > 下载”。
  2. 在“服务”中勾选待操作集群的“Yarn”。
  3. 单击右上角的设置日志收集的“开始时间”和“结束时间”分别为告警产生时间的前后10分钟,单击“下载”。
  4. 请联系运维人员,并发送已收集的故障日志信息。

告警清除

此告警修复后,系统会自动清除此告警,无需手工清除。

参考信息

无。