Bootstrap

HDFS的垃圾桶机制

每一个文件系统都会有垃圾桶机制,便于我们将删除的数据回收到垃圾桶里面去,避免垃圾桶,避免我们某些误操作错误的删除一些重要文件,回收到垃圾桶里里面的资料数据,都可以进行恢复

1. 垃圾桶机制配置的详解

服务器修改core-site.xml添加以下这两个配置


     fs.trash.interval
     10080
     检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。 
     该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。 
     如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。


     fs.trash.checkpoint.interval
     0
     垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。 
     如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,
     它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。

2. 垃圾桶机制验证

​ 如果启用垃圾箱配置,dfs命令删除的文件不会立即从HDFS中删除。相反,HDFS将其移动到垃圾目录(每个用户在/user//.Trash下都有自己的垃圾目录)。只要文件保留在垃圾箱中,文件可以快速恢复。

​ 最近删除的文件移动到当前的垃圾目录(/user//.Trash/Current),并且在一个可配置的时间间隔内,HDFS创建检查点(在/ user / /.Trash / 下)查找当前垃圾目录中的文件,并在旧的检查点过期时删除它们。查看关于垃圾检查点的FS shell的删除命令。

​ 在垃圾桶里过期后,NameNode将从HDFS命名空间中删除该文件。删除文件会导致与文件关联的块被释放。请注意,用户删除文件的时间与HDFS中相应增加可用空间的时间之间可能存在明显的时间延迟。

​ 以下是一个将显示FS Shell如何从HDFS中删除文件的示例。我们在目录delete下创建了2个文件(test1&test2)

  • 创建两个文件夹

[root@node01 bin]$ hdfs dfs  -mkdir -p delete/test1
[root@node01 bin]$ hdfs dfs  -mkdir -p delete/test2
[root@node01 bin]$ hdfs dfs  -ls delete
Found 2 items
drwxr-xr-x   - root supergroup          0 2021-04-14 13:45 delete/test1
drwxr-xr-x   - root supergroup          0 2021-04-14 13:45 delete/test2

2) 删除其中的一个文件夹

我们将删除文件test1。下面的注释显示该文件已被移至垃圾箱目录

[root@node01 bin]$ hdfs dfs  -rm -r delete/test1
21/04/14 13:46:03 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 10 minutes, Emptier interval = 0 minutes.
21/04/14 13:46:03 INFO fs.TrashPolicyDefault: Moved: 'hdfs://localhost:9000/user/root/delete/test1' to trash at: hdfs://localhost:9000/user/root/.Trash/Current/user/root/delete/test1
Moved: 'hdfs://localhost:9000/user/root/delete/test1' to trash at: hdfs://localhost:9000/user/root/.Trash/Current

3) 跳过垃圾桶选项 :慎用

现在我们将使用skipTrash选项删除文件,该选项不会将文件发送到垃圾箱。它将从HDFS中完全删除。

[root@node01 bin]$ hdfs dfs  -rm -r -skipTrash delete/test2
Deleted delete/test2

我们现在可以看到垃圾目录仅包含文件test1。

[root@node01 bin]$ hdfs dfs  -ls .Trash/Current/user/root/delete/
Found 1 items
drwxr-xr-x   - root supergroup          0 2021-04-14 13:45 .Trash/Current/user/root/delete/test1

所以文件test1进入垃圾箱,文件test2被永久删除。

  • 恢复垃圾桶数据

  • 执行以下命令,重新恢复垃圾桶数据

hdfs dfs -mv /user/root/.Trash/Current/user/root/delete/test1 /user/root/delete/