HDFS 恢復某時刻刪除的文件

Hadoop有一個「垃圾回收站」的功能,用於恢復在過去一段時間內被刪除文件。若某個文件被刪除了屢次,你還能夠恢復具體哪一次刪除的文件。該功能默認是關閉狀態,若想開啓,須要在$HADOOP_HOME/etc/hadoop/core-site.xml文件中,添加如下配置:java

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

上面的配置意思爲:Hadoop會設立一個回收站,回收站每隔10分鐘清空一次。
oop

若在一個回收週期內屢次刪除同一個文件或目錄,則Trash內會分版本保存你每次刪除的文件。這就意味你能夠恢復在某個時刻所刪除的文件。ui

舉個例子:
spa

時間點 動做 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刪除的文件。
code


結合hive的使用,通常會有不少定時任務向hive中插入更新數據,那麼.Trash中針對某個table就會有不少個版本的存在,若想查看某個時刻的數據,只要在Trash中把該時間的數據恢復便可,針對誤刪特別有用。xml

相關文章
相關標籤/搜索