快照管理
快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。
快照影响
- 快照创建瞬间完成,所耗时间成本为O(1)
- 快照修改时才会使用额外的额外的内存空间,内存成本O(M),M表示修改过的文件或目录数
- 快照记录块和文件大小,不对DataNode中的块进行复制
- 说明:* 快照可以在HDFS任何目录下设置,一个目录最多容纳65536个并发快照
基本语法
1 | (1)hdfs dfsadmin -allowSnapshot 路径 (功能描述:开启指定目录的快照功能) |
案例实操
开启/禁用指定目录的快照功能
指定创建目录的位置为 /tmp/snapshot(即快照的存储目录),在指定目录之前必须创建目录,不然会报错
1
2hdfs dfsadmin -allowSnapshot /tmp/snapshot
hdfs dfsadmin -disallowSnapshot /tmp/snapshot //禁用时,对应的目录不允许存在快照对目录创建快照
只有被开启快照功能的目录才能创建快照
1
2
3hdfs dfs -createSnapshot /tmp/snapshot // 对目录创建快照
hdfs dfs -createSnapshot /tmp/snapshot snapshot //重命名快照(注:快照是只读的,无法修改名)
通过web访问hdfs://Master:9000/tmp/snapshot/.snapshot/s…..// 快照和源文件使用相同数据块查看快照
1
2hdfs dfs -lsr /tmp/snapshot/.snapshot/ //查看快照目录的详细信息
hdfs lsSnapshottableDir //查看所有允许快照的目录更改快照名字
1
2
3
4
5hdfs dfs -renameSnapshot /tmp/snapshot/ snapshot snapshot1
注:路径只是你创建得名字/tmp/snapshot,不要带后边得/tmp/snapshot/.snapshot/,不然会出现
hdfs dfs -renameSnapshot /tmp/snapshot/.snapshot/ snapshot1 snapshot
renameSnapshot: Modification on a read-only snapshot is disallowed比较两个快照目录的不同之处
1
2
3
4[root@vmaster opt]# hdfs snapshotDiff /tmp/snapshot s1 s2
Difference between snapshot s1 and snapshot s2 under directory /tmp/snapshot:
M .
+ ./p符号的意义:
符号 含义 + 文件或者目录被创建 - 文件或目录被删除 M 文件或目录被修改 R 文件或目录被重命名 恢复快照
1
2
3
4
51.自定义创建一个快照名:hdfs dfs -createSnapshot /HAHA1 snapshot1
2.展示原文件包含内容:Hadoop fs -ls /HAHA1
3.里面有五个文件、删除其中1~2个
/HAHA1/.snapshot/snapshot1
4.回复快照:hdfs dfs -cp /HAHA1/.snapshot/snapshot1 /snapshot删除快照
1
2dfs dfs -deleteSnapshot 快照目录 快照名称
dfs dfs -deleteSnapshot /tmp/snapshot snapshot1