Hadoop-2.4.1学习之HDFS快照
来源:互联网 发布:mac炉石传说闪退 编辑:程序博客网 时间:2024/05/22 04:41
HDFS快照是文件系统的只读的实时的拷贝,可以是文件系统的一部分或者整个文件系统。快照的一些通用场景是数据备份,对用户错误的保护和灾难恢复。HDFS的快照实现是高效的:
- 快照的创建时瞬间完成的,排除查找inode的时间,需要花费O(1),即常数时间。
- 只有执行与快照相关的修改时才需要额外的内存,内存开销为O(M),M为修改的文件或者目录的数量。
- DataNodes中的块不会被复制,快照文件只记录块列表和文件的大小,没有数据的复制。
- 快照对常规HDFS操作没有有害影响,修改按时间逆序记录这样当前数据可以直接被访问(因为当前数据排在最前面,逆序)。快照数据通过从当前数据中减去修改来计算。
只要目录被设置为使用快照,快照就可以作用在目录上,一个启用快照的目录能够同时容纳65536个快照,对于能够启用快照的目录数量不做限制,管理员或许会将每个目录设置为启用快照。如果在启用快照的目录中存在快照,该目录在所有的快照删除之前既不可以被删除也不可以重命名。嵌套启用快照的目录目前是不支持的。换句话说如果一个目录的祖先或者后代是启用快照的目录,那么该目录是不能设置为启用快照的。
对于启用快照的目录,路径中.snapshot用于访问它的快照。假设/foo是快照目录,/foo/bar是/foo中的一个文件或者目录,/foo有一个快照s0,那么路径/foo/.snapshot/s0/bar引用/foo/bar的快照。通常使用的HDFS API和CLI都可以使用.snapshot路径访问快照,例如:
hdfs dfs -ls /foo/.snapshot 列出快照目录下的所有快照hdfs dfs -ls /foo/.snapshot/s0 列出快照s0下的文件hdfs dfs -cp -ptopax /foo/.snapshot/s0/bar /tmp 从快照s0拷贝文件bar到/tmp
最后一个例子使用了保持选项-ptopax以保持原有的时间戳(t),拥有者(o),权限(p),访问控制列表(a)和XAttrs(x)。
在学习了HDFS快照的基本概念和特点后,接下来要实际执行一些与快照相关的操作,比如启用快照,禁用快照,创建快照等,下面分别进行学习。要启用快照或者禁用快照必须具备超级用户的权限,启用快照的命令如下,如果该命令执行成功则相应目录启用了快照,其中path为需要启用快照的目录。hdfs dfsadmin -allowSnapshot <snapshotDir>
假设将test目录设置为启用快照,执行的命令及输出结果如下,此时仅仅是对test目录启用了快照,并为创建快照文件。
[hadoop@hadoop ~]$ hdfs dfsadmin -allowSnapshot test/Allowing snaphot on test/ succeeded
在禁用某个目录的快照之前,需要删除该目录的所有快照,禁用快照的命令为:
hdfs dfsadmin -disallowSnapshot <snapshotDir>[hadoop@hadoop ~]$ hdfs dfsadmin -disallowSnapshot testDisallowing snaphot on test succeeded
下面为创建快照、删除快照等操作,这些操作普通用户可以执行,但必须满足这些操作的权限要求,而超级用户可执行下面的所有命令且不用满足权限要求。首先是创建快照的命令,该操作要求用户必须是启用快照的目录的拥有者,命令及演示效果为:
hdfs dfs -createSnapshot <snapshotDir> [<snapshotName>][hadoop@hadoop ~]$ hdfs dfs -createSnapshot testCreated snapshot /user/hadoop/test/.snapshot/s20141023-111821.944[hadoop@hadoop ~]$ hdfs dfs -ls test/.snapshotdrwxr-xr-x - hadoop supergroup 0 2014-10-23 11:18 test/.snapshot/s20141023-111821.944
该命令的第二个参数为快照的名称,若未指定则系统将生成以字符s开头紧跟当前时间戳的名称,如上面的s20141023-111821.944。
可以对快照重命名,该操作要求用户拥有快照目录的所有者权限,该命令如下及执行结果如下所示,需要注意的是命令中的oldName或者newName仅为快照的文件名,而不包含.snapshot部分。
hdfs dfs -renameSnapshot <snapshotDir> <oldName> <newName>[hadoop@hadoop ~]$ hdfs dfs -renameSnapshot test/ s20141023-111821.944 snapshot01[hadoop@hadoop ~]$ hdfs dfs -ls test/.snapshot/Found 1 itemsdrwxr-xr-x - hadoop supergroup 0 2014-10-23 11:18 test/.snapshot/snapshot01
可以使用下面的命令获取当前用户有权限创建快照的所有快照目录,注意获取的是所有已经启用快照的目录。
[hadoop@hadoop ~]$ hdfs lsSnapshottableDirdrwxr-xr-x 0 hadoop supergroup 0 2014-10-23 11:18 1 65536 /user/hadoop/test
下面的命令用于删除快照,该命令也要求用户具有快照目录的所有者权限:
hdfs dfs -deleteSnapshot <snapshotDir> <snapshotName>[hadoop@hadoop ~]$ hdfs dfs -deleteSnapshot test/ snapshot01
- Hadoop-2.4.1学习之HDFS快照
- hdfs之快照的学习
- Hadoop学习之HDFS
- Hadoop-2.4.1学习之配置管理HDFS联盟
- Hadoop-2.4.1学习之HDFS文件权限和ACL
- hadoop-hdfs学习1
- Hadoop之HDFS(1)
- Hadoop学习笔记之---HDFS
- Hadoop学习笔记之HDFS
- hadoop学习笔记之HDFS
- Hadoop学习笔记之---HDFS
- hadoop学习笔记之HDFS
- Hadoop学习笔记之HDFS
- Hadoop学习总结之HDFS
- Hadoop-2.4.1学习之使用Quorum Journal Manager的HDFS的高可用性(一)
- Hadoop-2.4.1学习之使用Quorum Journal Manager的HDFS的高可用性(二)
- Hadoop-2.4.1学习之使用Quorum Journal Manager的HDFS的高可用性(三)
- Hadoop学习之HDFS架构(一)
- Standford《Machine Learning》 编程练习2
- 第九周项目1利用循环求和(一)
- 其他栏计划
- 转载_网络基本功(十):细说TCP确认机制
- 正差值
- Hadoop-2.4.1学习之HDFS快照
- android 拍照裁剪以及本地图片裁剪工具类使用
- Linux网络编程之socket:epoll系列函数简介,与select,poll函数的区别
- Cts框架解析(15)-任务执行完
- 5.4.4 写泛型函数
- Lucene 中.fnm格式
- Java读写XML文件的四种方式(DOM、SAX、JDOM、DOM4J)简述与比较
- 机房重构之模版方法模式-组合查询
- Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序