我刚刚下载了hortonworks沙盒vm,里面有hadoop版本2.7.1。我使用
hadoop fs -put /hw1/* /hw1
…命令。之后,我删除添加的文件,由
hadoop fs -rm /hw1/*
…命令,并在清理回收站后,由
hadoop fs -expunge
…命令。但在清理垃圾箱后,dfs剩余空间没有改变。即使我也能看到数据确实从/hw1/和recyle bin中删除了。我有 fs.trash.interval parameter = 1
.
事实上,我可以发现我所有的数据都在 /hadoop/hdfs/data/current/BP-2048114545-10.0.2.15-1445949559569/current/finalized/subdir0/subdir2
文件夹,这是真的让我惊讶,因为我希望他们被删除。
所以我的问题是如何删除数据的方式,他们真的会被删除?经过几次添加和删除,我得到了耗尽的自由空间。
6条答案
按热度按时间sg24os4d1#
尝试
hadoop fs -rm -R URI
-r选项递归删除目录及其下的任何内容。mitkmikd2#
你的问题在hdfs的基础之内。在hdfs(和许多其他文件系统)中,物理删除文件并不是最快的操作。由于hdfs是分布式文件系统,通常在已删除文件的不同服务器上至少复制3个副本,因此在您请求删除文件后,必须在后台删除每个副本(可能由不同硬盘驱动器上的许多块组成)。
hadoop的官方文档告诉我们:
删除文件会释放与该文件关联的块。注意,在用户删除文件的时间和hdfs中的空闲空间相应增加的时间之间可能存在明显的时间延迟。
nhaq1z213#
durga viswanath gadiraju是对的,这是时间问题,也许我的电脑速度慢,而且还使用虚拟机,10分钟后文件被物理删除,如果你使用的是我在问题中使用的算法。注意:设置fs.trash.interval参数=1。或者默认情况下,删除文件的速度不会超过6小时。
k5hmc34c4#
你可以用
自
hadoop dfs
已被弃用。eufgjt7s5#
如果你还需要跳过垃圾以下命令为我工作
fv2wmkja6#
对我有用的是: