HDFS的快照(Snapshot)是一個全部文件系統、或者某個目錄在某一時刻的鏡像。這裏其實可以把HDFS的快照理解成是HDFS提供的一種備份機制。快照應用在以下場景中:
- 防止用户的錯誤操作
- 備份
- 試驗/測試
- 災難恢復
視頻講解如下:
https://www.bilibili.com/video/BV1eTYCzVE4b/?aid=115043685437...
由於HDFS的快照功能是針對的目錄,因此需要首先使用HDFS的管理員命令開啓目錄的快照功能,再使用HDFS的操作命令創建目錄的快照。
#與快照相關的HDFS管理命令
[-allowSnapshot <snapshotDir>]
[-disallowSnapshot <snapshotDir>]
#與快照相關的HDFS操作命令
[-createSnapshot <snapshotDir> [<snapshotName>]]
[-deleteSnapshot <snapshotDir> <snapshotName>]
[-renameSnapshot <snapshotDir> <oldName> <newName>]
下面通過具體的步驟來演示如何使用HDFS的快照。
(1)開啓/input目錄的快照功能。
hdfs dfsadmin -allowSnapshot /input
(2)為/input目錄創建第一個快照。
hdfs dfs -createSnapshot /input bk_input_20250817_01
# 在創建HDFS快照的時候,最好遵循一個良好的命名規則。
# 例如,這裏創建的快照名稱為bk_input_20250817_01,
# 表示在2025年8月17日為input目錄創建的第一個快照。
(3)上傳一個新的文件到/input目錄,如:data1.txt。
hdfs dfs -put data1.txt /input
(4)為/input目錄創建第二個快照。
hdfs dfs -createSnapshot /input bk_input_20250817_02
(5)對比/input目錄的兩個快照。
hdfs snapshotDiff /input bk_input_20250817_01 bk_input_20250817_02
# 輸出的信息如下:
Difference between snapshot bk_input_20250817_01 and
snapshot bk_input_20250817_02 under directory /input:
M .
+ ./data1.txt
# 通過對比快照可以看出第二個快照比第一個快照多了一個文件data1.txt。
(6)通過HDFS的Web Console也可以查看快照的相關信息,如下圖所示。