写点什么

HDFS 的垃圾桶机制

发布于: 2021 年 04 月 14 日
HDFS的垃圾桶机制

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

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

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

<property>     <name>fs.trash.interval</name>     <value>10080</value>     <description>检查点被删除后的分钟数。 如果为零,垃圾桶功能将被禁用。      该选项可以在服务器和客户端上配置。 如果垃圾箱被禁用服务器端,则检查客户端配置。      如果在服务器端启用垃圾箱,则会使用服务器上配置的值,并忽略客户端配置值。</description></property><property>     <name>fs.trash.checkpoint.interval</name>     <value>0</value>     <description>垃圾检查点之间的分钟数。 应该小于或等于fs.trash.interval。      如果为零,则将该值设置为fs.trash.interval的值。 每次检查指针运行时,     它都会从当前创建一个新的检查点,并删除比fs.trash.interval更早创建的检查点。</description></property>
复制代码

2. 垃圾桶机制验证

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


​ 最近删除的文件移动到当前的垃圾目录(/user/<username>/.Trash/Current),并且在一个可配置的时间间隔内,HDFS 创建检查点(在/ user / <username> /.Trash / <date>下)查找当前垃圾目录中的文件,并在旧的检查点过期时删除它们。查看关于垃圾检查点的 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 deleteFound 2 itemsdrwxr-xr-x   - root supergroup          0 2021-04-14 13:45 delete/test1drwxr-xr-x   - root supergroup          0 2021-04-14 13:45 delete/test2
复制代码

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

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

[root@node01 bin]$ hdfs dfs  -rm -r delete/test121/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/test1Moved: '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/test2Deleted delete/test2
复制代码

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

[root@node01 bin]$ hdfs dfs  -ls .Trash/Current/user/root/delete/Found 1 itemsdrwxr-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/ 
复制代码


发布于: 2021 年 04 月 14 日阅读数: 14
用户头像

专注于大数据技术研究 2020.11.10 加入

运营公众号:五分钟学大数据。大数据领域原创技术号,深入大数据技术

评论

发布
暂无评论
HDFS的垃圾桶机制