Apache Hadoop 2.9.2 的快照管理
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
快照相当于对目录做一个备份。并不会立即复制所有文件,而是指向同一个文件。当写入发生时,才会产生新文件。换句话说,快照可以迅速对文件(夹)进行备份,不产生新文件,使用差值存储,默认是禁用状态。因此,想要使用快照功能的话得先启用该功能!我们可以通过“hdfs dfsadmin” 命令来启动或者禁止快照管理。
一.快照的作用
Hadoop从2.1.0版开始提供了HDFS SnapShot的功能。一个snapshot(快照)是一个全部文件系统、或者某个目录在某一时刻的镜像。快照在下面场景下是非常有用:
1>.防止用户的错误操作:
管理员可以通过以滚动的方式周期性设置一个只读的快照,这样就可以在文件系统上有若干份只读快照。如果用户意外地删除了一个文件,就可以使用包含该文件的最新只读快照来进行回复。
2>.备份:
管理员可以根据需求来备份整个文件系统,一个目录或者单一一个文件。管理员设置一个只读快照,并使用这个快照作为整个全量备份的开始点。增量备份可以通过比较两个快照的差异来产生。
3>.试验/测试:
一个用户当想要在数据集上测试一个应用程序。一般情况下,如果不做该数据集的全量拷贝,测试应用程序会覆盖/损坏原来的生产数据集,这是非常危险的。管理员可以为用户设置一个生产数据集的快照(Read write)用于用户测试使用。在快照上的改变不会影响原有数据集。
4>.灾难恢复:
只读快照可以被用于创建一个一致的时间点镜像用于拷贝到远程站点作灾备冗余。
二.基本语法
1>.hdfs dfsadmin -allowSnapshot <path>
功能描述:开启指定目录的快照功能。通过开启快照功能,那么该目录就成为了一个snapshottable的目录。snapshottable下存储的snapshots 最多为65535个,保存在该目录的.snapshot下。
2>.hdfs dfsadmin -disallowSnapshot <path>
功能描述:禁用指定目录的快照功能,默认所有的目录都是禁用状态。
3>.hdfs dfs -createSnapshot <path>
功能描述:对目录创建快照。
4>.hdfs dfs -createSnapshot <path> <snapshotName>
功能描述:对目录创建时指定快照名称。
5>.hdfs dfs -renameSnapshot <path> <oldName> <newName>
功能描述:重命名快照。
6>.hdfs lsSnapshottableDir
功能描述:列出当前用户所有快照目录。
7>.hdfs snapshotDiff <path1> <path2>
功能描述:比较两个快照目录的不同之处。
8>.hdfs dfs -deleteSnapshot <path> <snapshotName>
功能描述:删除快照。
二.快照的基本用法
1>.开启指定目录的快照功能
[root@node101.yinzhengjie.org.cn ~]# hdfs dfsadmin -allowSnapshot /yinzhengjie Allowing snaphot on /yinzhengjie succeeded [root@node101.yinzhengjie.org.cn ~]#
2>.禁用指定目录的快照功能
[root@node101.yinzhengjie.org.cn ~]# hdfs dfsadmin -disallowSnapshot /yinzhengjie Disallowing snaphot on /yinzhengjie succeeded [root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# hdfs dfsadmin -disallowSnapshot /yinzhengjie disallowSnapshot: The directory /yinzhengjie has snapshot(s). Please redo the operation after removing all the snapshots. [root@node101.yinzhengjie.org.cn ~]#