HDFS 設置回收站及誤刪數(shù)據(jù)恢復

HDFS會早每一個用戶目錄下創(chuàng)建一個回收站目錄,即:/user/username/.Trash每一個被刪除的文件和目錄,都會有一個回收周期(fs.trash.interval)。在這個回收周期內(nèi),文件實際上會被移動到這個回收站目錄下面,可以被用戶手動進行恢復。當回收周期到達時,HDFS就會將這個文件/目錄徹底刪除。
在每個節(jié)點的core-site.xml上配置為1天:

<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
  <description>minutes between trash checkpoints</description>
</property>

在HDFS內(nèi)部的具體實現(xiàn)就是在NameNode中開啟了一個后臺線程Emptier(默認是org.apache.hadoop.fs.TrashPolicyDefault.Emptier,也可以通過fs.trash.classname指定TrashPolicy類),這個線程專門管理和監(jiān)控系統(tǒng)回收站下面的所有文件/目錄,對于已經(jīng)超過生命周期的文件/目錄,這個線程就會自動的刪除它們,不過這個管理的粒度很大。另外,用戶也可以手動清空回收站(通過hdfs dfs -expunge),也可以使用rm清空回收站,此時,不會再觸發(fā)回收站操作。Emptier每隔fs.trash.interval分鐘就清空一次用戶回收站。即先檢查每個用戶回收站目錄,然后刪除壽命超過fs.trash.interval的目錄,最后將當前存放刪除的文件/目錄的回收站目錄/user/用戶名/.Trash/current重命名為一個/user/用戶名/.Trash/yyMMddHHmm。也就是從理論上說,在回收站里的目錄會保留fs.trash.interval – 2*fs.trash.interval時間區(qū)間。
如果使用rm命令時,啟用trash的fs.trash.interval參數(shù)不用重啟后臺進程。但要求在/user目錄下需要有對應用戶的home目錄,否則會因為創(chuàng)建目錄失敗報錯。
rmr: Failed to move to trash: hdfs://test1:9000/tmp: Permission denied: user=root, access=WRITE, inode=”/user”:hdfs:supergroup:drwxr-xr-x
成功刪除會提示mv到trash目錄下。

hdfs dfs -rmr /tmp
Moved: 'hdfs://test1:9000/tmp' to trash at: hdfs://test1:9000/user/hdfs/.Trash/Current
hdfs dfs -ls -R /user/hdfs
drwx------   - hdfs supergroup          0 2014-12-19 11:24 /user/hdfs/.Trash
drwx------   - hdfs supergroup          0 2014-12-19 11:24 /user/hdfs/.Trash/Current
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /user/hdfs/.Trash/Current/tmp
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /user/hdfs/.Trash/Current/tmp/txt
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /user/hdfs/.Trash/Current/tmp/txt/hello
-rw-r--r--   3 hdfs supergroup        137 2014-12-18 11:05 /user/hdfs/hello.txt
-rw-r--r--   3 hdfs supergroup        137 2014-12-18 11:05 /user/hdfs/hello.txt.bak
?#恢復回收站目錄:
hdfs dfs -mv /user/hdfs/.Trash/Current/tmp /
-bash-4.1$ hdfs dfs -ls -R /tmp
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /tmp/txt
drwxr-xr-x   - hdfs supergroup          0 2014-12-19 11:16 /tmp/txt/hello
#清空回收站,實際上是立即執(zhí)行了一次清理trash的checkpoint。
hdfs dfs -expunge
/12/19 17:31:29 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/hdfs/.Trash/141219173129
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容