Snapshot(快照)
开启快照功能,在hbase-site.xml文件中添加如下配置项:
<property>
<name>hbase.snapshot.enabled</name>
<value>true</value>
</property>
在hbase shell中使用clone_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot命令。
命令
说明
例子
snapshot
为某表创建快照
snapshot ‘harve_role’,'20180108-harve_role'
list_snapshots
查看快照列表
delete_snapshot
删除快照
delete_snapshot '20180108-harve_role'
clone_snapshot
基于快照,clone一个新表
clone_snapshot 20180108-harve_role', ‘harve_role2’
restore_snapshot
基于快照恢复表
disable ‘harve_role’
restore_snapshot '20180108-harve_role'
需要注意的是:如果该表开启了replication功能实现主从同步则在使用restore_snapshot功能对主表进行恢复时,必须先停止replication功能并且redo the bootstrap,因为replication是基于WAL日志实现的,而snapshot是直接在hdfs层面不是基于hbase的put、delete等API进行的,不会写WAL日志。
在创建snapshot后,可以通过ExportSnapshot工具把快照导出到另外一个集群,实现数据备份或者数据迁移,ExportSnapshot工具的用法如下:
例如:
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 20180108-harve_role -copy-to hdfs://namenode:9000/hbase -mappers 2
执行该命令后,在namenode:9000的hdfs中会把20180108-harve_role文件夹copy到/hbase/.hbase-snapshot文件下,进入namenode这个hbase集群,执行list_snapshots会看到有一个快照:20180108-harve_role,通过命令clone_snapshot可以把该快照copy成一个新的表,不用提前创建表,新表的region个数等信息完全与快照保持一致。
在使用snapshot把一个集群的数据copy到新集群后,应用程序开启双写,然后可以使用Export工具把快照与双写之间的数据导入到新集群,从而实现数据迁移,为保障数据不丢失,Export导出时指定的时间范围可以适当放宽。
---------------------
作者:子龙修仙
版权声明:本文为博主原创文章,转载请附上博文链接!