文档首页/ MapReduce服务 MRS/ 故障排除/ 使用HDFS/ MRS集群上报HDFS磁盘空间不足告警但是实际磁盘空间未被占满
更新时间:2025-08-13 GMT+08:00

MRS集群上报HDFS磁盘空间不足告警但是实际磁盘空间未被占满

问题描述

  1. MRS集群上报了“ALM-14001 HDFS磁盘空间使用率超过阈值”告警。
  2. 通过客户端命令或者HDFS WebUI页面,查看磁盘空间使用率非常高,但是并未完全被占满。

原因分析

HDFS中用户可以自行配置DataNode预留磁盘空间百分比,配置参数为“dfs.datanode.du.reserved.percentage”,该参数用于指定DataNode所在磁盘的预留空间百分比,默认为10%。

当DataNode存储数据时,会根据此参数计算并保留一部分磁盘空间,不用于存储HDFS的数据块,以确保磁盘有足够的空闲空间供操作系统、其他应用或临时文件使用,或者预留升级时使用。

由于系统默认预留了10%的磁盘空间,因此当磁盘使用率达到90%的时候,集群会上报HDFS磁盘空间不足的告警。

处理步骤

  1. 如果集群已上报告警,请参考对应告警的帮助文档进行处理,调整告警阈值为合理范围。

    如果磁盘实际空间仍充足,告警触发阈值需要进行调整,参考ALM-14001 HDFS磁盘空间使用率超过阈值进行处理。

  2. 登录HDFS客户端,参考以下命令,删除HDFS中无用的文件或目录。

    1. 执行以下命令查看文件夹下的文件或子目录。
      hdfs dfs -ls /文件夹名称
    2. 执行以下命令查询HDFS文件目录大小。
      hdfs dfs -du 待查看的目录路径

      例如查询“/tmp”文件夹下的文件或子目录大小,执行后结果如下,表示“/tmp/hadoop-yarn”占用磁盘大小为622222017字节:

      0          0          /tmp/.testHDFS
      207407339  622222017  /tmp/hadoop-yarn
      0          0          /tmp/hive
      0          0          /tmp/hive-scratch
      0          0          /tmp/logs
      ...
    3. 执行以下命令删除已确认无用的HDFS文件。
      hdfs dfs -rm -r HDFS文件或目录路径

      例如可以删除过期日志、临时文件等,如MapReduce/YARN的历史日志、Spark作业临时输出等,通常可按时间清理30天前的文件。

      开发测试产生的临时目录(如/user/test)、已下线业务的数据表等,与上层业务侧确认无用后也可以进行删除。

      文件删除操作为高危操作,请务必确认删除的文件为无用的文件,避免造成数据丢失。

    4. HDFS默认启用回收站,若空间紧急可手动清空。
      # 查看当前用户回收站路径
      hdfs dfs -ls /user/UserA/.Trash 
      # 清空回收站 
      hdfs dfs -rm -r /user/UserA/.Trash/*

  3. 归档/迁移冷数据。

    对不常访问但需保留的数据,建议迁移到低成本存储(如对象存储OBS)。

  4. 扩容MRS集群。

    在HDFS DataNode节点对应磁盘分区空间已使用到80%以上时,建议及时扩容MRS集群,新增DataNode节点组,请参考扩容MRS集群

    DataNode扩容完成后需进行数据均衡,可参考配置HDFS DataNode数据均衡进行操作。