1. 程式人生 > >HDFS(七)—— HDFS 的高階功能

HDFS(七)—— HDFS 的高階功能

HDFS 的高階功能主要包括:

  1. 回收站:便於找到誤刪的資料。
  2. 快照:對資料的備份。
  3. 配額:限制目錄中檔案的數量和大小。

一、回收站(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 可以強制目錄保持為空。

配額是個管理員命令

  1. 名稱配額:用於設定該目錄中能夠存放的最多檔案(目錄)個數。

  2. 空間配額:用於設定該目錄中最大能夠存放的檔案大小。

示例:

  • 設定 /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 儲存資料是以資料塊為單位分配資料的,小於資料塊的大小將不能分配資料。