本文介绍如何备份E-MapReduce的HBase集群。

前提条件

已创建两个Hadoop集群,并添加HBase和Zookeeper服务,详情请参见创建集群

操作步骤

  1. 通过SSH方式登录集群。
    详情请参见 使用SSH连接主节点
  2. 创建Table并添加数据。
    1. 打开HBase Shell。
      hbase shell
    2. 创建表。
      create 'test','cf'
    3. 添加数据。
      put 'test','a','cf:c1',1
      put 'test','a','cf:c2',2
      put 'test','b','cf:c1',3
      put 'test','b','cf:c2',4
      put 'test','c','cf:c1',5
      put 'test','c','cf:c2',6
    4. 退出HBase Shell。
      exit
  3. 创建并查看快照。
    1. 创建快照。
      hbase snapshot create -n test_snapshot -t test
    2. 打开HBase Shell。
      hbase shell
    3. 查看快照。
      list_snapshots
      返回如下信息。
      SNAPSHOT                                           TABLE + CREATION TIME
       test_snapshot                                     test (Tue Aug 18 14:35:28 +0800 2020)
      1 row(s) in 0.2450 seconds
      
      => ["test_snapshot"]
    4. 退出HBase Shell。
      exit
  4. 导出数据至OSS。
    hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test_snapshot -copy-to oss://$accessKeyId:$accessKeySecret@$bucket.oss-cn-hangzhou-internal.aliyuncs.com/hbase/snapshot/test
    说明 OSS使用内网Endpoint。
  5. 通过SSH方式登录另一个集群。
    详情请参见 使用SSH连接主节点
  6. 导出OSS快照。
    hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot test_snapshot -copy-from oss://$accessKeyId:$accessKeySecret@$bucket.oss-cn-hangzhou-internal.aliyuncs.com/hbase/snapshot/test -copy-to /hbase/
  7. 从快照恢复数据并新建表。
    1. 打开HBase Shell。
      hbase shell
    2. 从快照恢复数据。
      restore_snapshot 'test_snapshot'
    3. 查看表。
      scan 'test'
      返回如下信息。
      ROW                     COLUMN+CELL
       a                      column=cf:c1, timestamp=1472992081375, value=1
       a                      column=cf:c2, timestamp=1472992090434, value=2
       b                      column=cf:c1, timestamp=1472992104339, value=3
       b                      column=cf:c2, timestamp=1472992099611, value=4
       c                      column=cf:c1, timestamp=1472992112657, value=5
       c                      column=cf:c2, timestamp=1472992118964, value=6
      3 row(s) in 0.0540 seconds
  8. 从快照创建新表并查看数据。
    1. 从指定的快照生成新表。
      clone_snapshot 'test_snapshot','test_2'
    2. 查看新表数据。
      scan 'test_2'
      返回信息如下。
      ROW                     COLUMN+CELL
       a                      column=cf:c1, timestamp=1472992081375, value=1
       a                      column=cf:c2, timestamp=1472992090434, value=2
       b                      column=cf:c1, timestamp=1472992104339, value=3
       b                      column=cf:c2, timestamp=1472992099611, value=4
       c                      column=cf:c1, timestamp=1472992112657, value=5
       c                      column=cf:c2, timestamp=1472992118964, value=6
      3 row(s) in 0.0540 seconds