引言:當從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