HDFS Snapshots
来源:互联网 发布:算法的时间复杂度 编辑:程序博客网 时间:2024/06/05 08:01
概述
HDFS快照是只读的文件系统的时间点的复制。快照可以照文件系统的一部分或者整个文件系统。快照的常见用例是数据备份,防止用户错误和灾难恢复。
HDFS快照的实现是高效的:
1. 快照的创建时瞬间的:包括inode查找的时间,代价是O(1)。
2. 只有在有相对于快照的修改是才耗费内存:内存使用时O(M),M是修改的文件/目录的数量。
3. 快照不会影响正常的HDFS操作:修改信息被按时间倒叙记录,以使当前的数据可被直接访问。快照数据通过从当前数据中截取修改信息被计算。
快照的目录
快照可作用到任何被设置为snapshottable的目录。一个目录的快照能够同时容纳65536个快照。快照的目录个数没有限制。管理员可以设置任何的目录是可被快照的。如果在一个被快照的目录中有快照,这个目录在所有的快照被删除前,不能被删除和重命名。嵌套的快照目录目前不允许。换句话说,如果在其父路径和子路径中有被设置为被快照的目录,这个目录不能再被快照。
快照路径
对于一个可被快照的目录,路径.snapshot被用来访问它的快照。假设/foo是一个快照目录,/foo/bar是一个/foo中的文件/目录,/foo有一个快照s0。路径
/foo/.snapshot/s0/bar
引用/foo/bar。常用的API或者CLI可以与.snapshot路径一起工作。下面是一些例子:
1. 在一个快照的目录下列出所有的快照
hdfs dfs -ls /foo/.snapshot
2. 列出快照s0中所有的文件
hdfs dfs -ls /foo/.snapshot/s0
3. 从快照s0中复制文件
hdfs dfs -cp /foo/.snapshot/s0/bar /tmp
升级到一个有快照的HDFS版本
HDFS快照特定介绍了一个用于与快照交互的保留的路径.snapshot。当从一个旧版本的HDFS升级时,已经存在的命名为.snapshot 的路径需要先被重命名或者删除以避免与暴露路径冲突。查看HDFS User Guide文档的Upgrade部分获取更多的信息。
快照操作
管理员操作
下面描述的操作需要超级用户权限。
允许快照
允许创建一个目录的快照。如果操作成功完成,目录变成照的。
命令:
hdfs dfsadmin -allowSnapshot <path>
参数:
Path 快照的目录的路径
也可以查看相应的JAVA API void HdfsAdmin#allowSnapshot(Path path)。
禁用快照
禁用一个目录可被创建快照。一个目录所有的快照必须在禁用之前被删除。
命令:
hdfs dfsadmin -disallowSnapshot <path>
参数:
Path 快照了个目录路径
也可以查看相应的JAVA API void HdfsAdmin#disallowSnapshot(Path path).
用户操作
本部分描述用户的操作。注意HDFS超级用户可以执行所有的操作,不用满足各个命令的权限需求。
创建快照
创建一个可被快照的目录的快照。这个操作需要是被快照的目录的拥有者。
命令:
hdfs dfs -createSnapshot <path> [<snapshotName>]
参数:
Path 被快照的目录
SnapshotName 快照的名字,这是一个可选参数。当被忽略时,用时间戳创建一个默认的名字,时间戳格式s'yyyyMMdd-HHmmss.SSS,例如s20130412-151029.033。
也可以查看相应的JAVA API FileSystem#createSnapshot(Path path)和FileSystem#createSnapshot(Pathpath,String snapshotName)。这两个方法会返回快照的路径。
删除快照
从快照的目录删除一个快照。这个操作需要是被快照的目录的拥有者。
命令:
hdfs dfs -deleteSnapshot <path> <snapshotName>
参数:
Path 快照的目录
snapshotName 快照的名字
也可以查看相应的JAVA API FileSystem# deleteSnapshot(Path path, StringsnapshotName) 。
重命名快照
重命名一个快照。这个操作需要是被快照的目录的拥有者。
命令:
hdfs dfs -renameSnapshot <path> <oldName> <newName>
参数:
Path 快照的路径
oldName 旧的snapshot名字
newName 新的snapshot名字
也可以查看相应的JAVA API FileSystem# renameSnapshot(Pathpath, String oldName, String newName).
得到快照的目录列表
获得当前用户下做了快照的目录列表
命令:
hdfs lsSnapshottableDir
参数:NONE
也可以查看JAVA API DistributedFileSystem# getSnapshottableDirectoryListing()。
获取快照的差异报告
获取两个快照的差异。这个操作需要两个snapshot的所有的文件/目录都有读权限。
命令:
hdfs snapshotDiff <path> <fromSnapshot> <toSnapshot>
参数:
Path 快照的路径
fromSnapshot 开始的快照的名字
toSnapshot 结束的快照的名字
也可以查看相应的JAVA API DistributedFileSystem# getSnapshotDiffReport(Pathpath, String fromSnapshot, String toSnapshot) 。
- HDFS Snapshots
- HDFS Snapshots
- HDFS快照(HDFS Snapshots)
- hadoop2.7.2学习笔记20-HDFS Snapshots
- 云计算(十一)- HDFS快照(HDFS Snapshots)
- 云计算(十一)- HDFS快照(HDFS Snapshots)
- Hadoop——HDFS Federation、File System Snapshots、集中式缓存管理、Distributed Copy、YARN HA简单讲解
- Distributed Snapshots
- Features/Snapshots
- 关于LoadRunner的Snapshots
- sql Server snapshots
- Snapshots: The alternative backup
- RTX LDAP SYNCHRONIZER Snapshots
- Snapshots in HBase 0.96
- 浅析snapshots, blockcommit,blockpull
- OpenStack: Perform Consistent Snapshots
- Hadoop浅解SnapShots
- ORACLE 快照Snapshots
- 08-3. 组个最小数 (20)
- 面试中的单例模式
- 拼图游戏的步骤求解
- Matlab GUI界面 (转)
- Linux下实现自动设置SSH代理
- HDFS Snapshots
- NULL指针
- HDU1534 Schedule Problem 【差分约束系统】
- 10-0. 说反话 (20)
- [LeetCode]-Spiral Matrix I&II 螺旋矩阵
- 【Android】Android开源项目分类汇总
- OpenGL教程
- 10-1. 在字符串中查找指定字符(15)
- poj 2762 Going from u to v or from v to u?(tarjan+拓扑排序)