在hdfs上我们会涉及到删除文件的操作,索然有副本,但是删除文件的操作也会导致副本被删除,因此hdfs提供有回收站的功能,这样被删除的文件都会自动存储到回收站里面,后期想要恢复的话,可以直接从回收站里面进行恢复即可。下面直接介绍下回收站的配置情况。
一、开启回收站
修改文件 core-site.xml,文件位置在:${hadoop_home}/etc/hadoop/core-site.xml,增加如下配置:
<!-- 开启hdfs的垃圾桶机制,删除掉的数据可以从垃圾桶中回收,单位分钟 --> <property> <name>fs.trash.interval</name> <value>10080</value> </property>
这里值的单位是分钟,如果设置为0的话,则代表禁用垃圾回收站,如果设置大于0,则代表删除的文件进入回收站之后的存活时间,超过这个时间的话,就会被彻底删除。
还有一个参数,就是检查回收站的间隔时间,这里也是代表每隔一段时间去检查回收站的文件是否过期,过期需要删除掉,配置如下:
<property> <name>fs.trash.checkpoint.interval</name> <value>5</value> </property>
这里配置的是每隔5分钟检查一次回收站的文件。
备注:
1、这里要求是fs.trash.checkpoint.interval<=fs.trash.interval。
二、查看回收站
配置回收站之后,所有被删除的文件都会被移动到/user/root/.Trash/这个目录下,可以直接进行查看。在删除文件的时候,我们就能看到对应的目录了。例如这里我们删除某个文件
./hadoop fs -rmr /home/pubserver/users/bbb.txt
可以看到文件被移动到/user/root/.Trash/目录下了。这里我们也可以通过web端口查看到对应的目录
备注:
1、在使用javaapi对hdfs的文件进行删除的时候是不会进入到回收站的,会被彻底的删除。如果希望文件进入回收站,则需要使用moveToTrash方法。
三、恢复回收站数据
执行的命令是:
./hdfs dfs -mv /user/root/.Trash/Current/home/pubserver/users/bbb.txt /home/pubserver/users/
如下图:
备注:
1、恢复回收站的数据的时候使用mv命令即可,cp命令太慢了。
四、清空回收站
有时候回收站的文件太多了,我们需要手动进行释放空间,此时我们可以直接清空整个回收站的文件,使用的命令是:
./hdfs dfs -expunge
备注:
1、回收站是生产环境必须配置的功能。
还没有评论,来说两句吧...