HDFS删除了文件,但是磁盘空间没有释放,这是怎么回事?

今天公司内网QA环境的HDFS的datanode节点的磁盘空间使用近100%了,这时候我进行如下操作进行空间释放: [code][root@qa-datanode2 bin]# ./hadoop fs -rmr /hbase/data/default/stackTable rmr: DEPRECATED: Please use 'rm -r' instead. 17/08/17 08:44:55 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 17/08/17 08:44:56 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes. Moved: 'hdfs://qa-hmaster1:9000/hbase/data/default/stackTable' to trash at: hdfs://qa-hmaster1:9000/user/root/.Trash/Current[/code]删除之前磁盘空间使用情况: [code][root@qa-datanode2 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 40G 3.2G 35G 9% / tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdb 148G 140G 627M 100% /data[/code]删除之后还是这样,没有效果,磁盘空间依然没有被释放,这是为什么呢?即使它在慢慢删除,也能看出一点效果啊,那这个是怎么回事呢? 希望有经验的同学回答一下。
已邀请:

空心菜 - 心向阳光,茁壮成长

赞同来自: being chris

空间不能及时释放是因为Hadoop回收站trash机制,默认是关闭的,你这里没有及时删除释放空间可能是你在conf/core-site.xml设置了删除系统垃圾间隔,你可以查看一下core-site.xml文件中fs.trash.interval的参数的值,一般都是设置为1440,即1天,也就是说删除的文件需要一天才能被删掉。 
 
那现在你想及时释放空间的话,如你的表现来看的话,可以执行如下命令做到:
# ./hadoop fs -rmr /user/root/.Trash
然后你再观察一下空间是否释放了,不出问题是ok的。
 
针对此种情况主要是hdfs的回收站功能,为了防止文件误删除,删除的文件会先放到回收站里。
删除的时候也可以直接彻底删除,只需 hdfs dfs -rm -r -skipTrash 即可。  0代表不启用回收站功能,如果是其他正整数的话代表该分钟之后会自动删除
 

要回复问题请先登录注册