Hbase导入导出

Snapshot快照

HBase 从0.95开始引入了Snapshot,可以对table进行Snapshot,也可以Restore到Snapshot。Snapshot可以在线做,也可以离线做。Snapshot的实现不涉及到table实际数据的拷贝,仅仅拷贝一些元数据,比如组成table的region info,表的descriptor,还有表对应的HFile的文件的引用。

1、给表建立快照,不管表是启用或者禁用状态,这个操作不会进行数据拷贝

$ ./bin/hbase shell
hbase> snapshot ‘myTable’, ‘myTableSnapshot-122112’

2、列出已经存在的快照

$ ./bin/hbase shell
hbase> list_snapshots

3、.删除快照

$ ./bin/hbase shell
hbase> delete_snapshot ‘myTableSnapshot-122112’

4、从快照复制生成一个新表

$ ./bin/hbase shell
hbase> clone_snapshot ‘myTableSnapshot-122112’, ‘myNewTestTable’

5、用快照恢复数据,它需要先禁用表,再进行恢复

$ ./bin/hbase shell
hbase> disable ‘myTable’
hbase> restore_snapshot ‘myTableSnapshot-122112’
hbase> enable ‘myTable’

需要注意的是:如果该表开启了replication功能实现主从同步则在使用restore_snapshot功能对主表进行恢复时,必须先停止replication功能并且redo the bootstrap,因为replication是基于WAL日志实现的,而snapshot是直接在hdfs层面不是基于hbase的put、delete等API进行的,不会写WAL日志。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值