Hadoop HDFS的快照(Snapshot)是一个全部文件系统、或者某个目录在某一时刻的镜像。这里其实可以把HDFS的快照理解成是HDFS提供的一种备份机制。快照应用在以下场景中:
- 防止用户的错误操作
- 备份
- 试验/测试
- 灾难恢复
视频讲解如下:
由于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也可以查看快照的相关信息,如下图所示。