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

ALM-14006 HDFS文件数超过阈值

告警解释

系统每30秒周期性检测HDFS文件数,并把实际文件数和阈值相比较。当检测到HDFS文件数指标超出阈值范围时产生该告警。

平滑次数为1,HDFS文件数指标的值小于或等于阈值时,告警恢复;平滑次数大于1,HDFS文件数指标的值小于或等于阈值时,告警恢复。

告警属性

告警ID

告警级别

告警类型

业务类型

是否可自动清除

14006

重要

业务质量告警

HDFS

告警变更

变更类型

变更版本

变更描述

变更原因

修改

3.3.1

告警级别:从“次要”变成“重要”。

告警级别:准确性优化

告警参数

类别

参数名称

参数含义

定位信息

来源

产生告警的集群名称。

服务名

产生告警的服务名称。

角色名

产生告警的角色名称。

主机名

产生告警的主机名。

NameService名

产生告警的NameService名称。

附加信息

触发条件

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

对系统的影响

HDFS文件数过多可能造成HDFS系统响应慢或磁盘被占满。

可能原因

HDFS文件数超过阈值。

处理步骤

检查系统中的文件数量。

  1. 在FusionInsight Manager首页,查看当前的HDFS文件数。HDFS文件数可以通单击“集群 > 待操作集群的名称 > 服务 > HDFS”,单击图表区域右上角的下拉菜单,选择“定制 > 文件和块”,勾选“HDFS文件”和“HDFS块数”监控项查看。
  2. 在“集群 > 待操作集群的名称 > 服务 > HDFS > 配置 > 全部配置”中查找“NameNode”下的GC_OPTS参数。
  3. 配置文件对象数阈值:修改GC_OPTS参数中Xmx的值(Xmx内存值对应文件数阈值的公式为(y = 0.2007 x - 0.6312),其中x为内存数Xmx(GB),y为文件数(单位KW)。用户根据需要调整内存大小)。
  4. 确认GC_PROFILE的值为custom,使GC_OPTS配置生效。单击“保存”,单击“更多 > 重启服务”重启服务。
  5. 检查本告警是否清除。

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

检查系统中是否有不需要的文件。

  1. root用户登录HDFS客户端。执行cd命令进入客户端安装目录,然后执行source bigdata_env命令设置环境变量。

    如果集群采用安全版本,要进行安全认证。

    执行kinit hdfs命令,按提示输入密码。向MRS集群管理员获取密码。

  2. 执行hdfs dfs -ls 文件或目录路径命令,检查该目录下的文件或目录是否是可以删除的无用文件。

    • 是,执行8
    • 否,执行9

  3. 执行hdfs dfs -rm -r 文件或目录路径命令。确认删除无用的文件后,等待文件在垃圾站中超过保留时间后(NameNode的配置参数“fs.trash.interval”指定了垃圾站中数据的保留时间),检查本告警是否清除。

    删除文件为高危操作,在执行操作前请务必确认对应文件是否不再需要。

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

收集故障信息。

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

告警清除

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

参考信息

NameNode JVM参数配置规则

NameNode JVM参数“GC_OPTS”默认值为:

-Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M -XX:MetaspaceSize=128M -XX:MaxMetaspaceSize=128M -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=65 -XX:+PrintGCDetails -Dsun.rmi.dgc.client.gcInterval=0x7FFFFFFFFFFFFFE -Dsun.rmi.dgc.server.gcInterval=0x7FFFFFFFFFFFFFE -XX:-OmitStackTraceInFastThrow -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=1M -Djdk.tls.ephemeralDHKeySize=3072 -Djdk.tls.rejectClientInitiatedRenegotiation=true -Djava.io.tmpdir=${Bigdata_tmp_dir}

NameNode文件数量和NameNode使用的内存大小成比例关系,文件对象变化时请修改默认值中的“-Xms2G -Xmx4G -XX:NewSize=128M -XX:MaxNewSize=256M”。参考值如下表所示。
表1 NameNode JVM配置

文件对象数量

参考值

10,000,000

-Xms6G -Xmx6G -XX:NewSize=512M -XX:MaxNewSize=512M

20,000,000

-Xms12G -Xmx12G -XX:NewSize=1G -XX:MaxNewSize=1G

50,000,000

-Xms32G -Xmx32G -XX:NewSize=3G -XX:MaxNewSize=3G

100,000,000

-Xms64G -Xmx64G -XX:NewSize=6G -XX:MaxNewSize=6G

200,000,000

-Xms96G -Xmx96G -XX:NewSize=9G -XX:MaxNewSize=9G

300,000,000

-Xms164G -Xmx164G -XX:NewSize=12G -XX:MaxNewSize=12G