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