HDFS(七)—— HDFS 的高階功能
HDFS 的高階功能主要包括:
- 回收站:便於找到誤刪的資料。
- 快照:對資料的備份。
- 配額:限制目錄中檔案的數量和大小。
一、回收站(trash)
-
預設回收站是關閉的,可以通過在 core-site.xml 中新增 fs.trash.interval 來開啟配置時間閥值,例如:
<property> <!-- 單位:分鐘 --> <name>fs.trash.interval</name> <value>1440</value> </property>
-
刪除的檔案其實是被 ctrl + x 移動到了一個隱藏目錄 .Trash,本質上就是一個 mv 命令。
-
上面的配置表示,刪除之後放到回收站裡的檔案存放時間超過 1440 分鐘將被徹底刪除,釋放佔用的資料塊。
-
查看回收站的資料:
hdfs dfs -lsr /user/root/.Trash/Current
。 -
從回收站中恢復資料:
hdfs dfs -cp /user/root/.Trash/Current/trashData.txt /data.txt
。 -
清空回收站:
hdfs dfs -expunge
。 -
對比沒開啟回收站和開啟了回收站時刪除檔案的日誌:
沒開啟回收站:
18/04/09 21:35:40 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes. Deleted /tools ---> 成功刪除(對比:回收站)
開啟回收站:
Moved: 'hdfs://bigdata111:9000/tools/a.zip' to trash at: hdfs://bigdata111:9000/user/root/.Trash/Current
可以看出回收站其實就是個隱藏目錄,刪掉的檔案其實就是剪下到了那個隱藏目錄裡。
二、快照(snapshot)
快照其實就是一種備份策略,本質上就是一個 cp 命令。
應用場景:
- 防止使用者的錯誤操作
- 備份
- 實驗 / 測試
- 災難恢復
HDFS 的快照操作:
-
開啟快照:
hdfs dfsadmin -allowSnapshot /input
-
建立快照:
hdfs dfs -createSnapshot /input backup_input_1125_01
-
檢視快照:
hdfs lsSnapshottableDir
當然檢視快照還可以通過我們的 WebConsole 來檢視。
-
對比快照:
hdfs snapshortDiff /input backup_1125_01 backup_1125_02
-
恢復快照:
hdfs dfs -cp /input/.snapshot/backup_1125_01/data.txt /input
三、配額(quota)
配額作用:限制目錄下的檔案的數量和大小。最大的配額是 Long.Max_Value。配額為 1 可以強制目錄保持為空。
配額是個管理員命令
-
名稱配額:用於設定該目錄中能夠存放的最多檔案(目錄)個數。
-
空間配額:用於設定該目錄中最大能夠存放的檔案大小。
示例:
-
設定 /input 目錄的名稱配額為 3:
hdfs dfsadmin -setQuota 3 /input
-
消除 /input 目錄的名稱配額:
hdfs dfsadmin -clrQuota /input
-
設定 /input 目錄的空間配額為 1M:
hdfs dfsadmin -setSpaceQuota 1M /input
-
清除 /input 目錄的空間配額:
hdfs dfs -clrSpaceQuota /input
注意:設定的值一定不能小於 Hadoop 的資料塊的大小,1.x 版本的資料塊大小是 64M,2.x 版本的資料塊大小是 128M,HDFS 儲存資料是以資料塊為單位分配資料的,小於資料塊的大小將不能分配資料。