HDFS快照管理

快照管理

快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。

快照影响

  • 快照创建瞬间完成,所耗时间成本为O(1)
  • 快照修改时才会使用额外的额外的内存空间,内存成本O(M),M表示修改过的文件或目录数
  • 快照记录块和文件大小,不对DataNode中的块进行复制
  • 说明:* 快照可以在HDFS任何目录下设置,一个目录最多容纳65536个并发快照

基本语法

1
2
3
4
5
6
7
8
(1)hdfs dfsadmin -allowSnapshot 路径   (功能描述:开启指定目录的快照功能)
(2)hdfs dfsadmin -disallowSnapshot 路径 (功能描述:禁用指定目录的快照功能,默认是禁用)
(3)hdfs dfs -createSnapshot 路径 (功能描述:对目录创建快照)
(4)hdfs dfs -createSnapshot 路径 名称 (功能描述:指定名称创建快照)
(5)hdfs dfs -renameSnapshot 路径 旧名称 新名称 (功能描述:重命名快照)
(6)hdfs lsSnapshottableDir (功能描述:列出当前用户所有已快照目录)
(7)hdfs snapshotDiff 路径1 路径2 (功能描述:比较两个快照目录的不同之处)
(8)hdfs dfs -deleteSnapshot <path> <snapshotName>  (功能描述:删除快照)

案例实操

  1. 开启/禁用指定目录的快照功能

    指定创建目录的位置为 /tmp/snapshot(即快照的存储目录),在指定目录之前必须创建目录,不然会报错

    1
    2
    hdfs dfsadmin -allowSnapshot /tmp/snapshot	
    hdfs dfsadmin -disallowSnapshot /tmp/snapshot //禁用时,对应的目录不允许存在快照
  2. 对目录创建快照

    只有被开启快照功能的目录才能创建快照

    1
    2
    3
    hdfs dfs -createSnapshot /tmp/snapshot		// 对目录创建快照
    hdfs dfs -createSnapshot /tmp/snapshot snapshot //重命名快照(注:快照是只读的,无法修改名)
    通过web访问hdfs://Master:9000/tmp/snapshot/.snapshot/s…..// 快照和源文件使用相同数据块
  3. 查看快照

    1
    2
    hdfs dfs -lsr /tmp/snapshot/.snapshot/   //查看快照目录的详细信息
    hdfs lsSnapshottableDir //查看所有允许快照的目录
  4. 更改快照名字

    1
    2
    3
    4
    5
    hdfs 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
  5. 比较两个快照目录的不同之处

    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 文件或目录被重命名
  6. 恢复快照

    1
    2
    3
    4
    5
    1.自定义创建一个快照名:hdfs dfs -createSnapshot /HAHA1 snapshot1
    2.展示原文件包含内容:Hadoop fs -ls /HAHA1
    3.里面有五个文件、删除其中1~2个
    /HAHA1/.snapshot/snapshot1
    4.回复快照:hdfs dfs -cp /HAHA1/.snapshot/snapshot1 /snapshot
  7. 删除快照

    1
    2
    dfs dfs -deleteSnapshot 快照目录 快照名称
    dfs dfs -deleteSnapshot /tmp/snapshot snapshot1

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×