Hadoop回收站及fs.trash引數詳解

wang_KJ發表於2018-06-01

前言:

  • Linux系統裡,個人覺得最大的不方便之一就是沒有回收站的概念。rm -rf很容易造成極大的損失。而在Hadoop或者說HDFS裡面,有trash(回收站)的概念,可以使得資料被誤刪以後,還可以找回來。
  • Hadoop裡的trash選項預設是關閉的,所以如果要生效,需要提前將trash選項開啟,修改conf裡的core-site.xml即可,下面我們測試下開啟前後的區別:
1.不啟用trash

點選(此處)摺疊或開啟

  1. [hadoop@hadoop000 ~]$ hdfs dfs -put test.log /
  2. [hadoop@hadoop000 ~]$ hdfs dfs -ls /
  3. Found 3 items
  4. -rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:49 /test.log
  5. drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
  6. drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user
  7. # 刪除test.log 注意提示
  8. [hadoop@hadoop000 ~]$ hdfs dfs -rm -r /test.log
  9. Deleted /test.log
  10. # 重新檢視 發現test.log被刪除
  11. [hadoop@hadoop000 ~]$ hdfs dfs -ls /
  12. Found 2 items
  13. drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
  14. drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user
2.啟用trash

點選(此處)摺疊或開啟

  1. [hadoop@hadoop000 hadoop]$ pwd
  2. /opt/software/hadoop-2.8.1/etc/hadoop
  3. # 增加fs.trash引數配置 開啟trash(程式不需重啟)
  4. [hadoop@hadoop000 hadoop]$ vi core-site.xml
  5.     <property>
  6.         <name>fs.trash.interval</name>
  7.         <value>1440</value>
  8.     </property>
  9.     <property>
  10.         <name>fs.trash.checkpoint.interval</name>
  11.         <value>1440</value>
  12.     </property>
  13. # fs.trash.interval是在指在這個回收週期之內,檔案實際上是被移動到trash的這個目錄下面,而不是馬上把資料刪除掉。等到回收週期真正到了以後,hdfs才會將資料真正刪除。預設的單位是分鐘,1440分鐘=60*24,剛好是一天;fs.trash.checkpoint.interval則是指垃圾回收的檢查間隔,應該是小於或者等於fs.trash.interval。
  14. # 參考官方文件:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/core-default.xml

  15. [hadoop@hadoop000 ~]$ hdfs dfs -put test.log /
  16. [hadoop@hadoop000 ~]$ hdfs dfs -ls /
  17. Found 3 items
  18. -rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:54 /test.log
  19. drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
  20. drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user
  21. # 刪除test.log 注意提示的不同
  22. [hadoop@hadoop000 ~]$ hdfs dfs -rm -r /test.log
  23. 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
  24. # 發現刪除的檔案在回收站裡
  25. [hadoop@hadoop000 ~]$ hdfs dfs -ls /user/hadoop/.Trash/Current
  26. Found 1 items
  27. -rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:54 /user/hadoop/.Trash/Current/test.log
  28. # 恢復誤刪除的檔案
  29. [hadoop@hadoop000 ~]$ hdfs dfs -mv /user/hadoop/.Trash/Current/test.log /test.log
  30. [hadoop@hadoop000 ~]$ hdfs dfs -ls /
  31. Found 3 items
  32. -rw-r--r-- 1 hadoop supergroup 34 2018-05-23 16:54 /test.log
  33. drwx------ - hadoop supergroup 0 2018-05-19 15:48 /tmp
  34. drwxr-xr-x - hadoop supergroup 0 2018-05-19 15:48 /user


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31401187/viewspace-2155457/,如需轉載,請註明出處,否則將追究法律責任。