HDFS 恢复某时刻删除的文件

半城伤御伤魂 提交于 2020-01-07 11:51:38

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Hadoop有一个“垃圾回收站”的功能,用于恢复在过去一段时间内被删除文件。若某个文件被删除了多次,你还可以恢复具体哪一次删除的文件。该功能默认是关闭状态,若想开启,需要在$HADOOP_HOME/etc/hadoop/core-site.xml文件中,添加以下配置:

<property>
	<name>fs.trash.interval</name>
  	<value>10</value>
</property>

上面的配置意思为:Hadoop会设立一个回收站,回收站每隔10分钟清空一次。

若在一个回收周期内多次删除同一个文件或目录,则Trash内会分版本保存你每次删除的文件。这就意味你可以恢复在某个时刻所删除的文件。

举个例子:

时间点 动作 Trash内容
12:40 回收站清空 empty
12:41 删除fruit.data fruit.data
12:42 重新上传fruit.data且再次删除fruit.data fruit.data,fruit.data1446352935186
12:45 重新上传fruit.data且再次删除fruit.data fruit.data,fruit.data1446352935186,fruit.data1446353100390
12:50 回收站清空 empty

根据上表,在12:41第二次删除friut.data,回收站中出现了fruit.data1446352935186后面的那串数字就是你删除时刻的时间戳。那么我们就可在垃圾回收站清空之前,恢复12:41或12:45删除的文件。


结合hive的使用,一般会有很多定时任务向hive中插入更新数据,那么.Trash中针对某个table就会有很多个版本的存在,若想查看某个时刻的数据,只要在Trash中把该时间的数据恢复即可,针对误删特别有用。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!