
# 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磁盘空间使用率超过阈值](https://support.huaweicloud.com/usermanual-mrs/ALM-14001.html)进行处理。
   
   
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）、已下线业务的数据表等，与上层业务侧确认无用后也可以进行删除。
      ![](https://support.huaweicloud.com/trouble-mrs/public_sys-resources/warning_3.0-zh-cn.png)
      文件删除操作为高危操作，请务必确认删除的文件为无用的文件，避免造成数据丢失。
      
   
   4. HDFS默认启用回收站，若空间紧急可手动清空。
      ```
      # 查看当前用户回收站路径
      hdfs dfs -ls /user/UserA/.Trash 
      # 清空回收站 
      hdfs dfs -rm -r /user/UserA/.Trash/*
      ```
      
   
   
   
   
3. 归档/迁移冷数据。 
   对不常访问但需保留的数据，建议迁移到低成本存储（如对象存储OBS），例如使用Distcp工具。
   
   
4. 扩容MRS集群。 
   在HDFS DataNode节点对应磁盘分区空间已使用到80%以上时，建议及时扩容MRS集群，新增DataNode节点组，请参考[扩容MRS集群](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0063.html)。
   DataNode扩容完成后需进行数据均衡，可参考[配置HDFS DataNode数据均衡](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1667.html)进行操作。
   数据均衡操作完成后，可执行**hdfs dfsadmin -report**命令，确认各DataNode节点的磁盘使用率均衡。
   
   
 
