HDFS数据保护之回收站功能
引言:当从HDFS删除文件时,将释放与该文件相关联的块。而配置HDFS的回收站功能后,其会将删除的文件和目录存储在特定回收站目录中一定的时间后释放块,然后再将其永久删除,即可防止意外数据删除。如果配置了回收站功能且回收间隔大于0,那么删除的文件或者目录会在用户主目录下的.Trash目录保存。
一、进入主题,配置回收站功能:
配置core-site.xml文件中的 fs.trash.interval参数,其是以分钟为单位:
<property> <name>fs.trash.interval</name> <value>1440</value> </property>
在默认情况下,回收站回收间隔是0,因此文件会被立即永久删除。fs.trash.interval=1440则表示回收站会保留一天。
接下来还需要配置fs.trash.checkpoint.interval参数,这个参数指定NameNode检查回收站目录的频率:
<property> <name>fs.trash.checkpoint.interval</name> <value>60</value> </property>
以上的fs.trash.checkpoint.interval=60表示NameNode每小时检查一次trash目录,并删除保留时间超过1440分钟的文件。
二、注意问题
1、HDFS客户端节点需要配置才能使用回收站功能
所有能访问HDFS的客户端节点需要配置回收站的参数才能启动回收站的功能,否则当客户端删除文件时,可能会看到文件被立即删除!
如果以编程的方式删除HDFS文件,则它会立即被永久删除!可以通过如下方式:
1)创建一个trash实例;
2)使用要删除的文件的路径调用moveToTrash()。如果没有启动回收站,则该方法返回False。
2、绕过回收站
有时需要绕过回收站功能直接删除一些数据,可以在删除文件时指定-skipTrash选项,如下:
# hdfs dfs -rm -r -skipTrash /your/files/
删除存储在trash目录中的每个文件,包括trash目录本身:
# hdfs dfs -rm -r -skipTrash /user/username/.Trash
3、清空回收站
expunge命令回收trash目录中的文件所占用的HDFS空间:
# hdfs dfs -expunge
作者:buildings
声明 :对于转载分享我是没有意见的,出于对博客园社区和作者的尊重请保留原文地址哈。
致读者 :坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。