hdfs中snapshot的解释

一、snapshot的定义:
snapshot是hdfs的整个文件系统,或者某个目录在某个时刻的镜像。该镜像并不会随着源目录的改变而进行动态的更新。
二、使用snapshot可以解决的问题
(1)防止用户的误操作
管理员可以通过滚动的方式来对重要的目录进行创建snapshot的操作,这样在系统中就存在针对某个目录的多个快照版本。当用户误删除掉某个文件时,可以通过最新的snapshot来进行相关的恢复操作。
(2)备份集群或者重要目录
管理员可以使用snapshot来进行整个集群,或者某些目录、文件的备份。管理员以某个时刻的snapshot做为备份的起始结点,然后通过比较不同备份之间差异性,来进行增量备份。
(3)在原始数据上进行测试或者实验
经常有业务部门需要在某些重要数据上不断的进行某些测试或者实验,某些程序的bug可能会直接将原始的数据破坏掉,所以为了防止这种情况的发生,管理员可以临时的为用户针对要操作的数据来创建一个snapshot,然后让用户在对应的snapshot上进行相关的实验和测试,从而避免对原始数据的破坏。
(4)灾难的备份
可以将集群某个时刻的snapshot拷贝到远程的备份集群,从而实现远程的灾难备份。

三、与snapshot相关的主要操作:
1、为某个目录打开snapshot的功能
sudo -u hdfs hdfs dfsadmin -allowSnapshot /tmp/important_dir
2、查看已经开启了snapshot的目录列表
sudo -u hdfs hdfs lsSnapshottableDir
3、为开启了snapshot功能的目录创建一个snapshot
sudo -u hdfs hdfs dfs -createSnapshot /tmp/important_dir important_dir_snapshot
4、对开启了snapshot功能的目录执行删除操作,会出现下面的错误提示,即不允许删除已经开启了snapshot功能的目录
sudo -u hdfs hdfs dfs -rmr /tmp/important_dir
错误提示:
rmr: Failed to move to trash: hdfs://ptmind-cluster/tmp/important_dir: The directory /tmp/important_dir cannot be deleted since /tmp/important_dir is snapshottable and already has snapshots
5、删除开启了snapshot功能的目录下的文件
sudo -u hdfs hdfs dfs -rm /tmp/important_dir/important_file.txt
文件被成功的删除掉,那如果是误删除了此文件呢?该如何进行恢复呢?

6、恢复已经被误删除的文件
查看.snapshot子目录下,是否包含已经被删除的文件?发现包含被误删除的文件。
sudo -u hdfs hdfs dfs -ls /tmp/important_dir/.snapshot/important_dir_snapshot
将误删除的文件从.snapshot子目录拷贝到之前的目录下
sudo -u hdfs hdfs dfs -cp /tmp/important_dir/.snapshot/important_dir_snapshot/important_file.txt /tmp/important_dir
至此,被误删除的文件被成功的恢复了

7、比较两个snapshot之间的差异性
重新创建一个snapshot
sudo -u hdfs hdfs dfs -createSnapshot /tmp/important_dir important_dir_snapshot_2
hdfs snapshotDiff /tmp/important_dir important_dir_snapshot important_dir_snapshot_2
可以使用 “.”来代表目录的当前最新状态

结果的解释:
+ The file/directory has been created.
- The file/directory has been deleted.
M The file/directory has been modified.
R The file/directory has been renamed.

其他相关操作:
1、对snapshot进行重命名
hdfs dfs -renameSnapshot
2、删除snapshot
hdfs dfs -deleteSnapshot
3、禁止某个目录的snapshot特性
hdfs dfsadmin -disallowSnapshot

注意:
snapshot只是保存了某个目录在某个时刻的快照,如果在执行完createSnapshot 的操作之后,又往之前的目录下新添加了文件,那么此时在.snapshot目录下并不会存在新添加的文件。

对于snapshot内部是如何工作的,会单独的再写一篇文章来进行说明。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值