如何从 HDFS 中删除文件?

How to delete files from the HDFS?

我刚刚下载了Hortonworks sandbox VM,里面有2.7.1版本的Hadoop。我使用

添加了一些文件
hadoop fs -put /hw1/* /hw1

...命令。之后我将删除添加的文件,由

hadoop fs -rm /hw1/*

...命令,清理回收站后,通过

hadoop fs -expunge

...命令。但是回收站清理后 DFS Remaining space 没有改变。甚至我都可以看到数据确实从 /hw1/ 和回收站中删除了。我有 fs.trash.interval parameter = 1.

实际上我可以在 /hadoop/hdfs/data/current/BP-2048114545-10.0.2.15-1445949559569/current/finalized/subdir0/subdir2 文件夹中找到我所有的数据,这让我很惊讶,因为我希望它们被删除。

所以我的问题是如何以真正删除数据的方式删除数据?几次增删改查,累死了space.

Durga Viswanath Gadiraju 是对的,这是时间问题,也许我的 PC 速度很慢,并且还使用 VM,10 分钟后文件将被物理删除,如果您使用的是我在问题中使用的算法。 注意设置 fs.trash.interval 参数 = 1。或者默认情况下文件不会被删除的速度超过 6 小时。

尝试hadoop fs -rm -R URI

-R选项递归删除目录及其下的任何内容。

你的问题出在HDFS的基础上。在 HDFS(以及许多其他文件系统)中,物理删除文件并不是最快的操作。由于 HDFS 是分布式文件系统,通常在已删除文件的不同服务器上复制至少 3 个副本,因此每个副本(可能由不同硬盘驱动器上的许多块组成)必须在您请求删除文件后在后台删除。

Hadoop 的

Official documentation 告诉我们以下内容:

The deletion of a file causes the blocks associated with the file to be freed. Note that there could be an appreciable time delay between the time a file is deleted by a user and the time of the corresponding increase in free space in HDFS.

什么对我有用:

hadoop fs -rmr -R <your Directory>

您可以使用

hdfs dfs -rm -R /path/to/HDFS/file

因为 hadoop dfs 已被弃用。

如果您还需要跳过垃圾箱,请遵循对我有用的命令

hdfs dfs -rm -R -skipTrash /path/to/HDFS/file