前言:
- Linux系統(tǒng)里赃春,個(gè)人覺得最大的不方便之一就是沒有回收站的概念静秆。rm -rf很容易造成極大的損失。而在Hadoop或者說(shuō)HDFS里面严衬,有trash(回收站)的概念澄者,可以使得數(shù)據(jù)被誤刪以后,還可以找回來(lái)请琳。
- Hadoop里的trash選項(xiàng)默認(rèn)是關(guān)閉的粱挡,所以如果要生效,需要提前將trash選項(xiàng)打開单起,修改conf里的core-site.xml即可抱怔,下面我們測(cè)試下開啟前后的區(qū)別:
1.不啟用trash
[hadoop@hadoop000 ~]$ hdfs dfs -put test.log /
[hadoop@hadoop000 ~]$ hdfs dfs -ls /
Found 3 items
-rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:49 /test.log
drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user
# 刪除test.log 注意提示
[hadoop@hadoop000 ~]$ hdfs dfs -rm -r /test.log
Deleted /test.log
# 重新查看 發(fā)現(xiàn)test.log被刪除
[hadoop@hadoop000 ~]$ hdfs dfs -ls /
Found 2 items
drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user
2.啟用trash
[hadoop@hadoop000 hadoop]$ pwd
/opt/software/hadoop-2.8.1/etc/hadoop
# 增加fs.trash參數(shù)配置 開啟trash(進(jìn)程不需重啟)
[hadoop@hadoop000 hadoop]$ vi core-site.xml
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>1440</value>
</property>
# fs.trash.interval是在指在這個(gè)回收周期之內(nèi),文件實(shí)際上是被移動(dòng)到trash的這個(gè)目錄下面嘀倒,而不是馬上把數(shù)據(jù)刪除掉屈留。等到回收周期真正到了以后,hdfs才會(huì)將數(shù)據(jù)真正刪除测蘑。默認(rèn)的單位是分鐘灌危,1440分鐘=60*24,剛好是一天;fs.trash.checkpoint.interval則是指垃圾回收的檢查間隔碳胳,應(yīng)該是小于或者等于fs.trash.interval勇蝙。
# 參考官方文檔:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/core-default.xml
[hadoop@hadoop000 ~]$ hdfs dfs -put test.log /
[hadoop@hadoop000 ~]$ hdfs dfs -ls /
Found 3 items
-rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:54 /test.log
drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user
# 刪除test.log 注意提示的不同
[hadoop@hadoop000 ~]$ hdfs dfs -rm -r /test.log
18/05/23 16:54:55 INFO fs.TrashPolicyDefault: Moved: 'hdfs://192.168.6.217:9000/test.log' to trash at: hdfs://192.168.6.217:9000/user/hadoop/.Trash/Current/test.log
# 發(fā)現(xiàn)刪除的文件在回收站里
[hadoop@hadoop000 ~]$ hdfs dfs -ls /user/hadoop/.Trash/Current
Found 1 items
-rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:54 /user/hadoop/.Trash/Current/test.log
# 恢復(fù)誤刪除的文件
[hadoop@hadoop000 ~]$ hdfs dfs -mv /user/hadoop/.Trash/Current/test.log /test.log
[hadoop@hadoop000 ~]$ hdfs dfs -ls /
Found 3 items
-rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:54 /test.log
drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user