[HDFS Manual] CH8 HDFS Snapshots

HDFS Snapshots

HDFS Snapshots. 1node

1. 概述... 1并发

1.1 Snapshottable目录... 1spa

1.2 快照路径... 1orm

2. 带快照的更新... 1内存

3. 快照操做... 1it

3.1 管理操做... 1io

3.2 用户操做... 1table

 

1. 概述

HDFS快照是只读的,一个时间点文件系统的一个副本。快照能够是整个文件系统或者文件系统的子树。快照一般用来备份,保护用户错误和灾难恢复。ast

HDFS快照的实现:class

·         快照建立是瞬间的,花费是O(1)不包过inode lookup时间。

·         若是和快照相关的,在修改的时候会使用额外的内存:内存使用时O(M),M是修改的文件和目录个数。

·         Datanode中的block不会被复制:快照只会记录block list和文件大小。不会进行数据复制。

·         快照不会影响HDFS操做:修改被反转再被顺序记录,这样当前的数据仍是和之前同样访问。快照的数据经过当前的数据而后使用记录undo

1.1 Snapshottable目录

快照能够在任何目录上,一旦目录被设置了snapshottableSnapshottable容许65536个并发快照。Snapshottable目录个数没有限制。管理员能够对任何目录设置为snapshottable。若是快照在snapshottable目录,在快照删除前,目录不能被删除,也不能重命名。

snapshottable目录是不能嵌套的。也就是说若是父目录,或者子目录已经设置了snapshottable目录,那么就不能再设置。

1.2 快照路径

对于一个snapshottable目录,路径.snapshot用来访问快照。假设/foo是是snapshottable目录,/foo/bar/foo中的文件,而且/foo有一个快照s0/foo/.snapshot/s0/bar就是/foo/bar的快照副本。一般的APICLI能够在.snapshot路径上使用。好比:

·         列出全部snapshottable目录下的全部快照:
hdfs dfs -ls /foo/.snapshot

·         列出快照s0的全部文件:
hdfs dfs -ls /foo/.snapshot/s0

·         从快照中复制文件:
hdfs dfs -cp -ptopax /foo/.snapshot/s0/bar /tmp

2. 带快照的更新

HDFS快照特性引入了一个新的保留地址用来和快照交互:.snapshot。当从老的HDFS版本不支持快照的,升级时若是有.snapshot那么须要先删除避免出现冲突。

3. 快照操做

3.1 管理操做

容许快照

容许对目录建立快照,若是完成而且成功那么目录就会变成snapshottable

hdfs dfsadmin -allowSnapshot <path>

参数:snapshottable目录的地址。

禁止快照

禁止目录建立快照。全部快照在禁用前必须删除

hdfs dfsadmin -disallowSnapshot <path>

参数:snapshottable目录的地址。

3.2 用户操做

建立快照

snapshottable目录上建立快照。须要snapshottable目录的owner权限

hdfs dfs -createSnapshot <path> [<snapshotName>]

snapshotname默认是s'yyyyMMdd-HHmmss.SSS 好比s20130412-151029.033

删除快照

snapshottable目录删除快照。须要snapshottable 目录owner权限。

hdfs dfs -deleteSnapshot <path> <snapshotName>

重命名快照

快照重命名,须要snapshottable 目录owner权限。

hdfs dfs -renameSnapshot <path> <oldName> <newName>

获取snapshottable目录列表

列出全部snapshottable目录

hdfs lsSnapshottableDir

获取快照不通的报告

获取2个快照的不一样,须要2个快照目录的全部读权限。

命令:hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>

结果:

+

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.

RENAME表示文件重命名可是还在snapshottable目录下。一个文件或者目录移动出了snapshottable目录,那么就被认为是删除了。一个文件或者目录移动到snapshottable目录,就被认为是建立。

Snapshot差别报告不会爆炸相同操做的顺序。好比若是目录从/foo重命名为/foo2而后在/foo2建立了一个文件bar,那么差别报告:

R. /foo -> /foo2

M. /foo/bar

在重命名后的目录上的操做,报告是以前路径的,好比上面的报告。

相关文章
相关标签/搜索