You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dataproc单节点集群中hadoop fs -df与-du的容量差异排查

HDFS容量统计差异原因及解决方法

差异原因

hdfs dfsadmin -report、hdfs dfs -df与hdfs dfs -du、hadoop fs -count的统计范围存在本质区别:

  • 前两者统计的是HDFS文件系统的总存储占用,涵盖:
    • 用户可直接访问的文件(即后两者统计的内容)
    • 已删除但暂存于HDFS回收站的文件
    • 已被NameNode标记删除,但DataNode尚未物理清理的块
    • Spark流作业遗留的未清理临时文件(如Checkpoint过期状态文件、Shuffle临时文件)
    • HDFS内部系统文件(如元数据备份块,占比通常极小)
  • 后两者仅统计用户可直接访问的文件大小,默认不包含回收站、待删除块及HDFS系统文件。

结合你的长生命周期Dataproc单节点集群+Spark流作业场景,核心差异大概率来自Spark作业未自动清理的临时文件,以及HDFS回收站留存的已删除文件。

解决方法

1. 清理HDFS回收站

  • 查看回收站内容:
    hdfs dfs -ls /user/$(whoami)/.Trash
    
  • 手动清理回收站所有文件:
    hdfs dfs -rm -r /user/$(whoami)/.Trash/*
    
  • 若无需回收站功能,可修改hdfs-site.xml中的fs.trash.interval参数为0,禁用回收站(需重启NameNode生效)。

2. 清理Spark Checkpoint过期文件

  • 定位Spark流作业的Checkpoint目录,查看文件列表:
    hdfs dfs -ls /path/to/your/spark/checkpoint
    
  • 对于DStream作业,可设置spark.streaming.checkpoint.cleanupDelay参数(单位:秒)让作业自动清理过期Checkpoint文件;若未配置,可手动删除旧批次状态文件(确保对应批次已完全处理):
    # 示例:删除7天前的Checkpoint文件
    hdfs dfs -find /path/to/your/spark/checkpoint -type f -mtime +7 -delete
    
  • 对于Structured Streaming作业,确保spark.sql.streaming.minBatchesToRetain参数设置合理(默认保留100个批次),避免旧状态文件堆积。

3. 清理HDFS临时文件

  • 检查HDFS临时目录(如/tmp)的占用情况:
    hdfs dfs -du -h /tmp
    
  • 清理过期临时文件(避免删除正在使用的文件,可先筛选创建时间较早的文件):
    hdfs dfs -find /tmp -type f -mtime +1 -delete
    

4. 强制HDFS清理待删除块

  • 同步NameNode与DataNode的块状态:
    hdfs dfsadmin -refreshNodes
    
  • 检查并删除损坏或待删除的块(谨慎操作,先备份重要数据):
    hdfs fsck / -delete
    

完成以上操作后,重新运行相关统计命令,两者结果会趋于一致。

内容的提问来源于stack exchange,提问作者AlexisBRENON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:26:02