您的位置:首页 > 大数据 > Hadoop

[HDFS Manual] CH8 HDFS Snapshots

2018-04-10 16:14 232 查看
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 0cm; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } h1 { margin-top: 12.0pt; margin-right: 0cm; margin-left: 0cm; margin-bottom: .0001pt; line-height: 107%; page-break-after: avoid; font-size: 16.0pt; font-family: "Calibri Light", sans-serif; color: #2E74B5; font-weight: normal } h2 { margin-top: 2.0pt; margin-right: 0cm; margin-left: 0cm; margin-bottom: .0001pt; line-height: 107%; page-break-after: avoid; font-size: 13.0pt; font-family: "Calibri Light", sans-serif; color: #2E74B5; font-weight: normal } h3 { margin-top: 2.0pt; margin-right: 0cm; margin-left: 0cm; margin-bottom: .0001pt; line-height: 107%; page-break-after: avoid; font-size: 12.0pt; font-family: "Calibri Light", sans-serif; color: #1F4D78; font-weight: normal } p.MsoToc1,li.MsoToc1,div.MsoToc1 { margin-top: 0cm; margin-right: 0cm; margin-bottom: 5.0pt; margin-left: 0cm; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } p.MsoToc2,li.MsoToc2,div.MsoToc2 { margin-top: 0cm; margin-right: 0cm; margin-bottom: 5.0pt; margin-left: 11.0pt; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } p.MsoToc3,li.MsoToc3,div.MsoToc3 { margin-top: 0cm; margin-right: 0cm; margin-bottom: 5.0pt; margin-left: 22.0pt; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } a:link,span.MsoHyperlink { color: blue; text-decoration: underline } a:visited,span.MsoHyperlinkFollowed { color: #954F72; text-decoration: underline } tt { font-family: "Courier New" } p.MsoListParagraph,li.MsoListParagraph,div.MsoListParagraph { margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 36.0pt; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } p.MsoListParagraphCxSpFirst,li.MsoListParagraphCxSpFirst,div.MsoListParagraphCxSpFirst { margin-top: 0cm; margin-right: 0cm; margin-left: 36.0pt; margin-bottom: .0001pt; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } p.MsoListParagraphCxSpMiddle,li.MsoListParagraphCxSpMiddle,div.MsoListParagraphCxSpMiddle { margin-top: 0cm; margin-right: 0cm; margin-left: 36.0pt; margin-bottom: .0001pt; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } p.MsoListParagraphCxSpLast,li.MsoListParagraphCxSpLast,div.MsoListParagraphCxSpLast { margin-top: 0cm; margin-right: 0cm; margin-bottom: 8.0pt; margin-left: 36.0pt; line-height: 107%; font-size: 11.0pt; font-family: "Calibri", sans-serif } p.MsoTocHeading,li.MsoTocHeading,div.MsoTocHeading { margin-top: 12.0pt; margin-right: 0cm; margin-left: 0cm; margin-bottom: .0001pt; line-height: 107%; page-break-after: avoid; font-size: 16.0pt; font-family: "Calibri Light", sans-serif; color: #2E74B5 } span.Heading1Char { font-family: "Calibri Light", sans-serif; color: #2E74B5 } span.Heading2Char { font-family: "Calibri Light", sans-serif; color: #2E74B5 } span.Heading3Char { font-family: "Calibri Light", sans-serif; color: #1F4D78 } .MsoChpDefault { font-family: "Calibri", sans-serif } .MsoPapDefault { margin-bottom: 8.0pt; line-height: 107% } div.WordSection1 { } ol { margin-bottom: 0cm } ul { margin-bottom: 0cm }

HDFS Snapshots

HDFS Snapshots. 1

1. 概述... 1

1.1 Snapshottable目录... 1

1.2 快照路径... 1

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

3. 快照操作... 1

3.1 管理操作... 1

3.2 用户操作... 1

 

1. 概述

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

HDFS快照的实现:

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

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

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

·         快照不会影响HDFS操作:修改被反转再被顺序记录,这样当前的数据还是和以前一样访问。快照的数据通过当前的数据然后使用记录undo。

1.1 Snapshottable目录

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

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

1.2 快照路径

对于一个snapshottable目录,路径.snapshot用来访问快照。假设/foo是是snapshottable目录,/foo/bar是/foo中的文件,并且/foo有一个快照s0。/foo/.snapshot/s0/bar就是/foo/bar的快照副本。通常的API和CLI可以在.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

在重命名后的目录上的操作,报告是之前路径的,比如上面的报告。

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: