1. HDFS 回收站
回收站是HDFS2.X的新特性。与windows回收站一样,存在的意义是防止用户误删一些数据。假设误删了一些数据,还可以从回收站将数据恢复
HDFS默认是将回收站功能关闭的,因为实际生产环境中,是很少执行删除操作的,可能是半年删一次、一年删一次。
1.1. 开启回收站
编辑 etc/hadoop/core-site.xml,并分发给集群
1 | <property> |
1.2. 删除文件测试
不必重启HDFS。直接删除一个文件。因为当前client的用户是root,所以HDFS会将文件放到用户家目录下的一个.Trash目录下
1 | $ hdfs dfs -rm -r -f /input/1.txt |
查看用户目录
1 | # hdfs dfs -ls -R /user/root |
通过WebUI查看,禁止访问用户目录。因为使用时WebUI,用户默认是dr.who。一般文件和目录对于other用户都有读权限,但是用户目录禁止other用户访问

一种方法是修改user目录的mode属性,但不是很妥当。可以修改 etc/hadoop/core-site.xml
1 | <property> |
重启HDFS
1 | stop-dfs.sh |
可以通过WebUI查看了

一分钟后,回收站中Current中的数据就消失了

但是数据并不是完全消失,而是会在.Trash目录下生成另一个名为yyyyMMddHHmmss的目录,将数据移动到该目录下。

经过一段时间后,yyyyMMddHHmmss目录也会消失。
1.3. 清空回收站
执行以后命令,会立即清空.Trash/Current目录,将文件移动到yyyyMMddHHmmss目录下,经过一段时间,yyyyMMddHHmmss目录被HDFS消除。
1 | hdfs dfs -expunge |