hdfs snapshot 快照的应用与操作命令的介绍

一:HDFSSnapShot的介绍

Hadoop从2.1.0版开始提供了HDFS SnapShot的功能
一个snapshot(快照)是一个全部文件系统、或者某个目录在某一时刻的镜像。快照在下面场景下是非常有用:

二:场景

防止用户的错误操作
管理员可以通过以滚动的方式周期性设置一个只读的快照,这样就可以在文件系统上有若干份只读快照。如果用户意外地删除了一个文件,就可以使用包含该文件的最新只读快照来进行回复。

备份
管理员可以根据需求来备份整个文件系统,一个目录或者单一一个文件。管理员设置一个只读快照,并使用这个快照作为整个全量备份的开始点。增量备份可以通过比较两个快照的差异来产生。

试验/测试:
一个用户当想要在数据集上测试一个应用程序。一般情况下,如果不做该数据集的全量拷贝,测试应用程序会覆盖/损坏原来的生产数据集,这是非常危险的。
管理员可以为用户设置一个生产数据集的快照(Read write)用于用户测试使用。在快照上的改变不会影响原有数据集。

灾难恢复
只读快照可以被用于创建一个一致的时间点镜像用于拷贝到远程站点作灾备冗余。
通过下面命令对某一个路径(根目录/,某一目录或者文件)开启快照功能,那么该目录就成为了一个snapshottable的目录。

snapshottable下存储的snapshots 最多为65535个,保存在该目录的.snapshot下。

hdfs dfsadmin -allowSnapshot /user/spark
Allowing snaphot on /user/spark succeeded
下面创建一个snapshot,命令格式为hdfs dfs -createSnapsshot [snapshot names]hdfs dfs -createSnapshot /user/spark s0
Created snapshot /user/spark/.snapshot/s0

该快照会被立即创建出来,创建动作仅仅是在目录对应的Inode上加个快照的标签,因为此时快照目录里不包含任何实际数据。不同的快照间采用硬链接的方式,引用相同的数据块,所以也不会涉及到数据块的拷贝操作。而对文件的删除和追加,快照中的块将会的指向所作的修改的块,所以也不会对读写性能有影响,但是会占用namenode一定的额外内存来存放快照中被修改的文件和目录的元信息。

HDFS快照是文件系统的只读时间点副本。 可以对文件系统的子树或整个文件系统进行快照。 快照的一些常见用例是数据备份,防止用户错误和灾难恢复。
HDFS快照的实现是高效的:

快照创建是即时的:成本是O(1),不包括inode查找时间。
仅当对快照进行修改时才使用附加内存:内存使用为O(M),其中M是修改的文件/目录的数量。
不复制datanode中的块:快照文件记录块列表和文件大小。 没有数据复制。
快照不会对常规HDFS操作产生负面影响:修改会按相反的时间顺序记录,以便可以直接访问当前数据。 通过从当前数据中减去修改来计算快照数据。

Snapshottable目录

一旦目录设置为可快照,就可以对任何目录进行快照。 snaphottable目录能够容纳65,536个同步快照。可快照目录的数量没有限制。 管理员可以将任何目录设置为可快照。如果快照目录中有快照,则在删除所有快照之前,不能删除或重命名目录。
当前不允许嵌套snaphottable目录。 换句话说,如果一个目录的祖先/后代是一个snaphottable目录,则不能将其设置为snaphottable。

三:操作参数

快照路径

对于快照目录,路径组件“.snapshot”用于访问其快照。 假设/ foo是snaphottable目录,/ foo / bar是/ foo中的文件/目录,而/ foo有一个快照s0。 然后,路径

/foo/.snapshot/s0/bar

指的是/ foo / bar的快照副本。 通常的API和CLI可以使用“.snapshot”路径。 以下是一些示例。
列出snaphottable目录下的所有快照:

hdfs dfs -ls /foo/.snapshot

列出快照s0中的文件:

hdfs dfs -ls /foo/.snapshot/s0

从快照s0复制文件:

hdfs dfs -cp -ptopax /foo/.snapshot/s0/bar /tmp

请注意,此示例使用保留选项来保留时间戳,所有权,权限,ACL和XAttrs。
使用快照升级到HDFS版本

HDFS快照功能引入了用于与快照交互的新保留路径名:.snapshot。 从旧版本的HDFS升级时,名为.snapshot的现有路径需要首先重命名或删除,以避免与保留路径冲突。 有关详细信息,请参阅HDFS用户指南中的升级部分。
快照操作

管理员操作

注意:本节中描述的操作需要超级用户权限。
允许快照

允许创建目录的快照。 如果操作成功完成,则目录变为可快照。
命令

hdfs dfsadmin -allowSnapshot

参数

path:snaphottable目录的路径。

不可快照

不允许创建目录的快照。 在禁用快照之前,必须删除目录的所有快照。
命令

hdfs dfsadmin -disallowSnapshot

参数

path:snaphottable目录的路径。

用户操作
注意: HDFS超级用户可以执行所有操作而不满足各个操作中的权限要求。
创建快照

创建快照目录的快照。 此操作需要snaphottable目录的所有者特权。
命令

hdfs dfs -createSnapshot []

参数

path:snaphottable目录的路径。
snapshotName:快照名称,它是一个可选参数。 当省略时,使用格式为“’s’yyyyMMdd-HHmmss.SSS”的时间戳生成默认名称,例如。 “s20130412-151029.033”。

另请参见文件系统中相应的Java API路径createSnapshot(路径路径)和路径createSnapshot(路径路径,字符串snapshotName)。 在这些方法中返回快照路径。
删除快照

从快照目录中删除快照。 此操作需要snaphottable目录的所有者特权。
命令

hdfs dfs -deleteSnapshot

参数

path:snaphottable目录的路径。
snapshotName:快照名。

另请参见文件系统中相应的Java API void deleteSnapshot(Path path,String snapshotName)。
重命名快照

重命名快照。 此操作需要snaphottable目录的所有者特权。
命令

hdfs dfs -renameSnapshot

参数

path:snaphottable目录的路径。
oldName:原快照名称。
newName:新快照名称。

获取当前用户有权拍摄快照的所有快照表目录。
命令

hdfs lsSnapshottableDir

获取快照差异报告
获取两个快照之间的差异。 此操作需要两个快照中的所有文件/目录的读访问权限。
命令

hdfs snapshotDiff

参数

path:snaphottable目录的路径。
fromSnapshot:原快照。
toSnapshot:要对比的快照。

结果

  • 文件或者目录被创建。
    – 文件或者目录被删除。
    M 文件或者目录已修改。
    R 文件/目录已重命名。

RENAME条目表示文件/目录已重命名,但仍位于相同的snaphottable目录下。 如果将文件/目录重命名为snapshottble目录之外,则将其报告为已删除。 从snapshottble目录之外重命名的文件/目录将报告为新创建。
快照差异报告不保证相同的操作顺序。 例如,如果我们将目录“/ foo”重命名为“/ foo2”,然后将新数据附加到文件“/ foo2 / bar”,差异报告将是:

R. /foo -> /foo2
M. /foo/bar

即,使用重命名之前的原始路径(上例中的“/ foo / bar”)报告重命名的目录下的文件/目录的更改。

hdfs snapshot 快照的使用场景应用与操作命令的介绍相关推荐

  1. Hadoop生态圈(十六)- HDFS Snapshot快照详解

    目录 前言 1. Snapshot快照 1.1 快照介绍和作用 1.1.1 数据恢复 1.1.2 数据备份 1.1.3 数据测试 1.2 HDFS快照的实现 1.3 快照的命令 1.3.1 快照功能启 ...

  2. HDFS回收站、Trash机制、Trash Checkpoint、快照功能使用、通过Snapshot快照恢复数据、备份数据、HDFS快照的实现

    HDFS回收站.Trash机制.Trash Checkpoint.快照功能使用 1.回收站 回收站的功能给了我们一剂"后悔药".回收站保存了删除的文件.文件夹.图片.快捷方式等.这 ...

  3. Snapshot快照

    Snapshot快照 快照snapshots是HDFS文件系统的只读的基于某时间点的拷贝,可以针对某个目录,或者整个文件系统做快照. 快照比较常见的应用场景是数据备份,以防一些用户错误或灾难恢复. 列 ...

  4. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  5. maven2中snapshot快照库和release发布库的应用

     http://www.mzone.cc/article/279.html 转载声明] 转载时必须标注:本文来源于铁木箱子的博客http://www.mzone.cc [本文地址] 本文永久地址是 ...

  6. 微软同步框架入门开篇(附SnapShot快照Demo)

    在Teched2008上听了一节关于MSF(Microsoft Sync Framework 微软同步框架),这一框架允许 开发者创建离线式的应用.设备和服务,可以与任何应用的任意类型数据进行集成. ...

  7. maven中snapshot快照库与maven-metadata.xml

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...

  8. pom.xml 配置之:snapshot 快照库和 release发布库 的区别

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.如果在发布时使用 mvn deploy -P release 的命令,那么会自动使用0.1作为发 ...

  9. maven配置之:<distributionManagement>snapshot快照库和release发布库

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次. 我们知道,maven的依赖管理是基于版本管理的 ...

最新文章

  1. Android性能优化之启动优化实战篇,积累总结
  2. python 模拟浏览器登录获取cookie_使用cookielib模拟浏览器在python中获取url
  3. SAP中smartforms参数
  4. Haproxy安装与配置
  5. 数据迁移测试_自动化数据迁移测试
  6. mysql 空闲几分钟速度变慢,MYSQL 运作一小段时间后,速度变得奇慢。而CPU基本空闲状态...
  7. Spring中yml多环境配置
  8. PAT 1003 Emergency
  9. NLP简报(Issue#8)
  10. Android中Bundle和Intent的区别
  11. JAVA.SQL.SQLEXCEPTION: INCORRECT STRING VALUE: '\XF0\X9F\X92\X94' FOR COLUMN 'CONTENT' AT ROW 1
  12. 减小数据泄密负面影响的办法
  13. 分布式机器学习(下)-联邦学习
  14. 台式计算机没有外放声音,台式电脑外放无声音怎么办
  15. iphone6 计算机无法检测到照相机,爱思助手无法识别设备怎么办 爱思助手无法识别设备解决方法...
  16. 在阿里云建网站体验123
  17. 硬件设计--DC/DC电源芯片详解
  18. 记一次服务器故障带来的网站降权恢复记录
  19. 论文会议推荐到计算机研究与发展,计算机研究与发展类论文参考文献 计算机研究与发展核心期刊参考文献有哪些...
  20. 赛福天拟增资LG供应商,切入动力电池领域;清能股份氢燃料电池渣土车项目落地佛山 | 能动...

热门文章

  1. 全志 A64 开发板移植SQLite3
  2. ORACLE常用监控语句(未完待续)
  3. 关于vue-axios的使用及跨域问题的解决
  4. 一致性 hash 算法(consistent hashing)
  5. hyperledger部署java_Hyperledger Fabric(超级账本) Java 开发区块链 部署运行智能合约
  6. php是视频还是图片格式,php 视频、音频和图片文件上传,该如何解决
  7. 三维点云学习(4)6-ransac 地面分割
  8. 系统学习 TypeScript(五)——联合类型
  9. 初识二进制2:指令系统
  10. 《0bug-C/C++商用工程之道》首版勘误表