HDFS Snapshots

HDFS Snapshots

1. 概述

1.1 Snapshottable目录

1.2 快照路径

2. 带快照的更新

3. 快照操作

3.1 管理操作

3.2 用户操作

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

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

[HDFS Manual] CH8 HDFS Snapshots的更多相关文章

  1. [HDFS Manual] CH3 HDFS Commands Guide

    HDFS Commands Guide HDFS Commands Guide 3.1概述 3.2 用户命令 3.2.1 classpath 3.2.2 dfs 3.2.3 envvars 3.2.4 ...

  2. [HDFS Manual] CH6 HDFS Federation

    HDFS Federation HDFS Federation 1 Background 2.多个namenode/namespace 2.1 关键好处 3 联合配置 3.1 配置 3.2 格式化na ...

  3. [HDFS Manual] CH2 HDFS Users Guide

    2 HDFS Users Guide 2 HDFS Users Guide 2.1目的 2.2.概述 2.3.先决条件 2.4. Web Interface 2.5. Shell Command 2. ...

  4. [HDFS Manual] CH1 HDFS体系结构

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  5. [HDFS Manual] CH4 HDFS High Availability Using the Quorum Journal Manager

    HDFS High Availability Using the Quorum Journal Manager HDFS High Availability Using the Quorum Jour ...

  6. 【hadoop】python通过hdfs模块读hdfs数据

    hdfs官网:http://hdfscli.readthedocs.io/en/latest/api.html 一个非常好的博客:http://blog.csdn.net/gamer_gyt/arti ...

  7. HDFS之四:HDFS原理解析(总体架构,读写操作流程)

    前言 HDFS 是一个能够面向大规模数据使用的,可进行扩展的文件存储与传递系统.是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和 存储空间.让实际上是通过网络来访问文件 ...

  8. Hadoop之hadoop fs和hdfs dfs、hdfs fs三者区别

      适用范围 案例 备注 小记 hadoop fs 使用范围最广,对象:可任何对象       hadoop dfs 只HDFS文件系统相关       hdfs fs 只HDFS文件系统相关(包括与 ...

  9. [HDFS Manual] CH7 ViewFS Guide

    ViewFS Guide ViewFS Guide 1 介绍 2. The Old World(Prior to Federation) 2.1单个Namenode Clusters 2.2 路径使用 ...

随机推荐

  1. vue中的表单

    v-model指令实现表单双向绑定数据.触发文本框的input事件.一.文本框 <div id="J_app"> <p>{{ info }}</p&g ...

  2. JAVA导入表格功能总结

    表格结构: SheetName:sheet名称(辅材采购申请单) RowNum:行数 FirstCellNum/LastCellNum:第一竖列/最后一竖列(从0开始),例:getCell(0) = ...

  3. 如何解决Failed to retrieve MSVC Environment from XXXXXXXX

    升级了新版的Qt5.9.3后,本人的电脑也出了这个问题. 最后通过删除了path中的一些错误.多余的环境变量解决了.(删除了一些mysql的环境变量)

  4. go知识点和注意事项

    bin目录下面存的是编译之后可执行的文件,pkg下面存放的是应用包,src下面保存的是应用源代码 Go 语言不支持函数重载特性的主要原因是函数重载需要进行多余的类型匹配影响性能: 目前 Go 没有泛型 ...

  5. Python3从零开始爬取今日头条的新闻【四、模拟点击切换tab标签获取内容】

    Python3从零开始爬取今日头条的新闻[一.开发环境搭建] Python3从零开始爬取今日头条的新闻[二.首页热点新闻抓取] Python3从零开始爬取今日头条的新闻[三.滚动到底自动加载] Pyt ...

  6. bzoj1708:[Usaco2007 Oct]Money奶牛的硬币(完全背包

    1708: [Usaco2007 Oct]Money奶牛的硬币 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 797  Solved: 540[Submi ...

  7. this-11.1-笔记

    1. 基本数据类型:string   undefined   null  boolean  number 引用数据类型  Object  array  function 1.2  二者的区别 基本数据 ...

  8. web端设计和web前端开发 的区别

  9. poj3273 Monthly Expense(二分搜索)

    https://vjudge.net/problem/POJ-3273 认真审题,代码仔细!!ans的初值应该是1 #include<iostream> #include<cstdi ...

  10. 什么是crf

    什么是crf 利用crf++进行实体识别的流程 确定标签体系: 确定特征模板文件: 处理训练数据文件: 模型训练. 确定标签体系 大部分情况下,标签体系越复杂准确度也越高,但相应的训练时间也会增加.因 ...