什么是快照
快照就是一份元信息的合集,容许管理员复原到表的先前状态。快照不是表的复制而是一个文件名称列表,因此不会复制数据。
快照的作用
HBase 中存在的备份或克隆表的办法就是应用复制 / 导出表或者在敞开表之后拷贝 HDFS 中的所有 HFile。
复制或导出是通过一系列工具调用 MapReduce 来扫描并复制表,这样会对 RegionServer 有间接的影响。敞开表会进行所有的读写操作,理论环境中往往无奈承受。
相比之下 HBase 快照容许管理员不拷贝数据,而间接克隆一张表,这对域服务器产生的影响最小。将快照导出至其余集群不会间接影响到任何服务器;导出只是带有一些额定逻辑的群间数据同步。
齐全快照复原是指复原到之前的“表构造”以及过后的数据,快照之后产生的数据不会复原。
快照劣势
导出快照与复制 / 导出表除了更好地放弃一致性外,次要的不同在于导出快照是在 HDFS 的层面操作的。这意味着 HMaster 和域服务器与操作无关。因而不须要为不必要的数据创立缓存空间,也不会有扫描过程。因为大量对象创立引起的 GC 暂停,对于 HBase 来说次要性能影响就是 DataNode 额定的网络和磁盘负载。
应用快照备份数据
1. 配置文件配置能够应用快照性能
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
2. 新建一个快照
> snapshot 'www','www001'
3. 查看所有的快照
> list_snapshots
4. 应用快照克隆一个表
> clone_snapshot 'www001','wwww'
5. 复原数据到快照
> disable 'www'
> restore_snapshot 'www001'
6. 删除快照
> delete_snapshot 'www001'
7. 应用 ExportSnapshot 将以后快照导出至其余集群,导出工具不会影响到域服务器的负载,只是在 HDFS 层面,所以须要指定 HDFS 门路 (其它集群的 hbase 根目录)
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshotName -copy-to hdfs://server1:8082/hbase