HDFS 回收站

实验环境

hadoop版本: apache-hadoop-2.6.5

HDFS回收站

hadoop 的HDFS中也提供了回收站(trash)的概念,使得数据被误删以后,还可以通过回收站找回来。

1.启用回收站
在core-site.xml中添加如下配置,并重新启动集群。

<property>
    <name>fs.trash.interval</name>
    <value>1440</value>
</property>
<property>
    <name>fs.trash.checkpoint.interval</name>
    <value>1440</value>
</property>
  • fs.trash.interval
    指文件在回收站的暂存时间,文件被删除后实际上是被移动到回收站暂存目录下,而不是马上删除。等到回收周期到了,hdfs才会真正的将数据删除。默认的单位是分钟,1440分钟恰好就是一天。

  • fs.trash.checkpoint.interval
    指垃圾回收的检查间隔,一般不会大于fs.trash.interval。

2.验证回收站

root@namenode:/opt/hadoop-2.6.5# ./bin/hdfs dfs -ls  /test
Found 1 items
-rw-r--r--   3 root supergroup        104 2018-05-30 13:32 /test/a.txt

我们以test目录为例,下面有一个名为a.txt文件,我们对它执行删除操作。

root@namenode:/opt/hadoop-2.6.5# ./bin/hdfs dfs -rm  /test/a.txt
18/05/31 10:01:24 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.
Moved: 'hdfs://namenode:9000/test/a.txt' to trash at: hdfs://namenode1:9000/user/root/.Trash/Current

通过命令的输出结果我们可以看到/test/a.txt文件实际被move到/root/.Trash/Current目录下了。

root@namenode:/opt/hadoop-2.6.5# ./bin/hdfs dfs -ls -R  /user/root/.Trash/Current
drwx------   - root supergroup          0 2018-05-31 10:01 /user/root/.Trash/Current/test
-rw-r--r--   3 root supergroup        104 2018-05-30 13:32 /user/root/.Trash/Current/test/a.txt

再次被验证文件被转移到回收站暂存目录下了。

如果刚才的操作是一时不小心,那么通过mv命令可以将文件还原回去。

root@namenode:/opt/hadoop-2.6.5# ./bin/hdfs dfs -mv /user/root/.Trash/Current/test/a.txt  /test

3.清空回收站

root@namenode:/opt/hadoop-2.6.5# ./bin/hdfs dfs  -expunge
18/05/31 10:08:45 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes.
18/05/31 10:08:45 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/root/.Trash/180531100845

4.直接删除(不放入回收站)
在删除文件时,也可以加入-skipTrash 选项略过回收站。

root@namenode1:/opt/hadoop-2.6.5# ./bin/hdfs dfs -rm  -skipTrash  /test/a.txt 
Deleted /test/a.txt

猜你喜欢

转载自blog.csdn.net/cl2010abc/article/details/80505894