1. HDFS快照管理
快照相当于对目录做一个备份。并不会立即复制所有文件,而是记录文件变化
1.1. 开启快照功能
开启指定目录的快照功能
1 | $ hdfs dfsadmin -allowSnapshot /input |
1.2. 创建快照
-createSnapshot <snapshotDir> [<snapshotName>] 创建一个快照
1 | $ hdfs dfs -createSnapshot /input |
默认是看不到隐藏文件的
1 | $ hdfs dfs -ls -R /input # 看不到.snapshot目录,实际是存在的 |
删除一个文件
1 | hdfs dfs -rm -r -f /input/1.txt |
再创建一个快照,可指定名称
1 | $ hdfs dfs -createSnapshot /input snapshot2 |
1.3. 列出有快照的目录
列出当前用户有快照的目录
1 | $ hdfs lsSnapshottableDir |
1.4. 重命名快照
-renameSnapshot <snapshotDir> <oldName> <newName>
1 | hdfs dfs -renameSnapshot /input snapshot2 snapshot3 # snapshot2重命名为snapshot3 |
1.5. 比较快照不同以及目录变化
snapshotDiff用法:hdfs snapshotDiff <snapshotDir> <from> <to>
<snapshotDir>:有快照的目录<from/to>:- 可以是
.,表示该目录的当前状态 - 也可以是
.snapshot/snapshot_name,代表该目录的某个快照。其中.snapshot可以省略,简写为snapshot_name
- 可以是
比较两个快照的不同
1 | $ hdfs snapshotDiff /input s20190225-152050.714 snapshot2 |
比较当前状态与快照的不同
1 | $ hdfs dfs -rm -r -f /input/2.txt |
1.6. 恢复快照
这些的恢复快照不能一次性回到原来的状态,只能手动拷贝。将快照目录复制出来即可
1 | $ hdfs dfs -cp /input/.snapshot/snapshot2 / # 复制snapshot2目录 |
1.7. 删除快照
-deleteSnapshot <snapshotDir> <snapshotName>
1 | hdfs dfs -deleteSnapshot /input s20190225-152050.714 |
1.8. 禁用快照
hdfs dfsadmin [-disallowSnapshot <snapshotDir>]
1 | $ hdfs dfs -createSnapshot /input snapshot2 # 先创建一个快照 |