首页 > 技术文章 > Hbase备份与恢复(快照技术)

rumenz 2020-09-16 21:49 原文

什么是快照

快照就是一份元信息的合集,允许管理员恢复到表的先前状态。快照不是表的复制而是一个文件名称列表,因而不会复制数据。

快照的作用

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

推荐阅读