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导出时指定的时间范围可以适当放宽。

--------------------- 

作者:子龙修仙 

版权声明:本文为博主原创文章,转载请附上博文链接!