Hbase备份讲解与案列

2020-05-22 00:00:00 数据 备份 迁移 方式 快照

HBase的数据备份

1.1 基于HBase提供的类对表进行备份

  • 使用HBase提供的类把HBase中某张表的数据导出到HDFS,之后再导出到测试hbase表中。
  • (1) ==从hbase表导出到HDFS==

~~~shell [hadoop@node01 shells]$ hbase org.apache.hadoop.hbase.mapreduce.Export myuser /hbase_data/myuser_bak

~~~

  • (2) ==文件导入hbase表==

hbase shell中创建备份目标表

ruby create 'myuser_bak','f1','f2'

  • 将HDFS上的数据导入到备份目标表中

~~~shell hbase org.apache.hadoop.hbase.mapreduce.Driver import myuser_bak /hbase_data/myuser_bak/* ~~~

  • 补充说明

以上都是对数据进行了全量备份,后期也可以实现表的增量数据备份,增量备份跟全量备份操作差不多,只不过要在后面加上时间戳。

例如: HBase数据导出到HDFS

~~~ hbase org.apache.hadoop.hbase.mapreduce.Export test /hbase_data/test_bak_increment 开始时间戳 结束时间戳 ~~~

1.2 基于snapshot快照对表进行备份

  • 通过snapshot快照的方式实现HBase数据的迁移和拷贝。这种方式比较常用,效率高,也是为推荐的数据迁移方式。
  • HBase的snapshot其实就是一组==metadata==信息的集合(文件列表),通过这些metadata信息的集合,就能将表的数据回滚到snapshot那个时刻的数据。
  • 首先我们要了解一下所谓的HBase的LSM类型的系统结构,我们知道在HBase中,数据是先写入到Memstore中,当Memstore中的数据达到一定条件,就会flush到HDFS中,形成HFile,后面就不允许原地修改或者删除了。
  • 如果要更新或者删除的话,只能追加写入新文件。既然数据写入以后就不会在发生原地修改或者删除,这就是snapshot做文章的地方。做snapshot的时候,只需要给快照表对应的所有文件创建好指针(元数据集合),恢复的时候只需要根据这些指针找到对应的文件进行恢复就Ok。这是原理的简单的描述,下图是描述快照时候的简单流程:

1.3 快照实战

  • 1、创建表的snapshot
snapshot 'tableName', 'snapshotName'

相关文章