问题现象
某hadoop集群,通过du命令统计文件总大小为50T;但是hdfs df和hdfs 原生界面统计大小为190T。需解释原因。
分析过程
1.du和df统计的差异在哪?
du命令是按文件统计,从hdfs元数据中获取文件并累加文件大小统计;
df统计是整个磁盘上block所占用的大小,包含了所有的副本。
2.统计实际的副本数量
使用hdfs fsck / 统计集群的平均副本数量,副本数量为2。既然副本数量为2,整体空间应该为45T*2=90T;和预期相差很远。
3.排除有其他文件占用
统计单个dn,blk*开头的数据文件(包含blk和校验文件meta)。无论是数量还是大小都和原生界面一致。 不存在块未删除和块待上报的现象。
4.检查hdfs快照
发现客户确实做了hdfs快照,快照空间约为37T左右。37*2=74T,基本可以得出结论,这部分空间是快照使用了。
结论:
客户使用了hdfs快照,并且快照不在du范围内。导致du命令统计大小和原生界面存在差异。