HDFS DataNode不会回收本地磁盘空间,如果在倒下一段时间后重新启动



我正在使用 hadoop 2.9.0 作为分布式文件存储系统进行POC,因此已设置了一个带有1个Namenode和4个DataNodes的多节点群集设置(包括主),复制因子为2。

现在,在一系列复制操作之后,我决定停止其中一个DataNode(Slave2)。然后,我使用hdfs dfs -rm -skipTrash命令清理了几个GB数据,而从Slave2仍在下面。

后来,我重新启动了我已经停止的从Slave2 DataNode,看来它没有清理在停机期间从HDF中删除的数据块。

我继续添加/删除更多数据,以查看它是否可能与Master Namenode同步并执行本地清理以收回磁盘空间,但没有。

以下是每个节点上的数据消耗:

从:

hduser@slave2:~$ hdfs dfs -du -s -h /
4.5 G  / 
hduser@slave2:~$ du -sh /hadoop-tmp/
7.7G    /hadoop-tmp/ [<-- notice extra 2.2 GB of data present on local disk] 

主:

hduser@master:~$ du -sh /hadoop-tmp/
4.6G    /hadoop-tmp/ 
hduser@master:~$ hdfs dfs -du -s -h /
4.5 G  / 

从:

hduser@slave1:~$ hdfs dfs -du -s -h /
4.5 G  /
hduser@slave1:~$ du -sh /hadoop-tmp/
4.5G    /hadoop-tmp/

从:

hduser@slave3:/$ du -sh /hadoop-tmp/
2.8G    /hadoop-tmp/
hduser@slave3:/$ hdfs dfs -du -s -h /
4.5 G  /

我猜我这里的问题是"从Slave2 Datenode与Master Namenode同步需要多少时间,以确认它具有从HDFS群集中删除的本地存储的数据块,因此需要清理它。那确实发生了加班,然后我们可以控制同步的时间'?

,如果这不会发生,那么从datanodes中回收磁盘空间的过程是什么

您可以考虑运行FSCK以识别群集上不一致的块,然后采取必要的操作以删除如果不再保留数据的数据,则删除留下的块。

相关内容

最新更新