HDFS创建快照备份数据
在进一步分析HDFS内部的快照管理之前,需要先了解Snapshot快照的概念.首先一个很根本的原则:
快照不是数据的简单拷贝,只做差异的复制
这一原则在其他很多系统快照概念中都是遵守的,比如磁盘快照,也是不保存真实数据的.因为不保存实际的数据,所以快照的生成往往非常的迅速.在HDFS中,如果对其中一个目录比如/A下创建一个快照,则快照文件中将会有与/A目录下完全一样的子目录文件结构以及相应的属性信息,通过fs -cat也能看到里面的具体的文件内容,但是这并不意着snapshot对此数据进行完全拷贝,这里遵循一原则,对于大多不变的数据,你所看到的数据其实是当前物理路径所指的内容,而发生变更的INode才是会被snapshot额外拷贝,其实是一个差异拷贝.
#指定快照目录
hdfs dfsadmin -allowSnapshot /user/hive
#创建快照
hdfs dfs -createSnapshot /user/hive snapshot20170410
#查看快照
hdfs dfs -ls /user/hive/.snapshot
#删除快照
hdfs dfs -deleteSnapshot /user/hive snapshot20170410
#失效快照目录
hdfs dfsadmin -disallowSnapshot /user/hive
#修改表数据指向历史数据
alter table t12 set location '/user/hive/.snapshot/snapshot20170410/warehouse/test1/000000_1000'