Hadoop2.6.0的回收站Trash机制跟Hadoop1变化不大,建议提前打开该功能(默认关闭),防止误删时欲哭无泪。
1、修改/etc/hadoop/core-site.xml,增加如下配置:
<!-- 开启hdfs文件删除自动转移到垃圾箱,值为垃圾箱文件清除时间,单位是分钟。一般开启该配置比较好,防止删除重要文件。 -->
<property>
<name>fs.trash.interval</name>
<value>1440</value><!-- 默认为0,单位为分钟,这里设置了一天 -->
</property>
2、然后测试该功能,随便找个目录执行删除操作:hdfs dfs -rm -r /tmp/input。删除后会发现有如下类似提示:
Moved: 'viewfs://hCluster/tmp/input' to trash at: hdfs://hadoop-cluster1/user/hadoop2/.Trash/Current
hdfs://hadoop-cluster1/为core-site.xml中引入的mountTable.xml里的设置
查看hdfs://hadoop-cluster1/,使用命令:
hdfs dfs -ls hdfs://hadoop-cluster1/
会发现其中多了hdfs://hadoop-cluster1/user目录,刚删除的目录在hdfs://hadoop-cluster1/user/hadoop2/.Trash/Current/tmp/input
3、从Trash恢复删除文件,执行:
hdfs dfs -mv hdfs://hadoop-cluster1/user/hadoop2/.Trash/Current/tmp/input hdfs://hadoop-cluster1/tmp/input
如果直接执行hdfs dfs -mv hdfs://hadoop-cluster1/user/hadoop2/.Trash/Current/tmp/input /tmp/input会提示mv: `hdfs://hadoop-cluster1/user/hadoop2/.Trash/Current/tmp/input': Does not match target filesystem,具体原因应该是文件系统不匹配。
4、直接删除文件
开启垃圾箱后,如果希望文件直接被删除,可以在使用删除命令时添加“–skipTrash”参数,如下:
hadoop fs -rm [-r] -skipTrash /xxxx