Hyperbase表导入导出之snapshot快照

相关链接:

Hyperbase 表导入导出之离线迁移
Hyperbase表导入导出之export/import


概要说明

面对一些重要数据,很多场景下都需要将数据仓库进行复制,这可以是整个数据库的更广泛级别,也可以是较小的级别。本案例将演示HBase表数据通过使用snapshot快照的方式迁移的步骤。


写在前面:

  • 使用该方法时源集群和目标集群,如果是开安全的情况,需要先配互信,如果是没有开全的情况,可以直接使用。
  • 该方法在hbase同版本、不同版本之间经测试都可以迁移数据,但最好是在同版本之间迁移。
  • 如果hbase表中有lob类型的字段,不能使用该方法迁移数据。
  • 此方式只适用于单独使用HBase的场景。如需使用SQL on Hyperbase的表迁移,可使用tbak工具。原因:假如在SQL on hyperbase的场景下使用此方式,quark表的元数据无法同步过去,如果SQL表配置了索引等信息,这些信息会遗失,会报错找不到hyperbasemetadata之类的错误。


测试环境介绍

1. 迁出集群为TDH社区版

2. 迁入集群为TDH社区开发版

3. 两集群均未开启Kerberos安全

Tips:若两个集群开启Kerberos安全,则需要配置互信,可参考《TDH集群配置互信流程》


本案例介绍使用 snapshot快照的方式导入导出 HBase表数据,该方法流程分为3步:

1. 在源集群上对要迁移的 hbase 表生成快照

2. 将生成的快照文件copy 到目标集群HDFS的 /hyperbase1 路径下

3. 确保目标集群处于在线状态,在目标集群使用迁移的快照建表

注意:以下操作需准备好TDH客户端。


详细步骤展示  

步骤一:初始化客户端,进入Hyperbase命令行

启动TDH Client,用hbase shell命令进入Hyperbase命令行。

                 

source /root/TDH-Client/init.sh  // 执行init.sh脚本,启动TDH Client

hbase shell //进入命令行


步骤二:创建测试源表(源表为default命名空间下以及非default命名空间下均可)


本Demo建表语句如下:

create 'test','f1','f2'
put 'test', 'r1', 'f1:c1', 'value1'
put 'test', 'r1', 'f1:c2', 'value2'
put 'test', 'r1', 'f1:c3', 'value3'
put 'test', 'r2', 'f1:c1', 'value4'
put 'test', 'r2', 'f1:c2', 'value5'
put 'test', 'r2', 'f1:c3', 'value6'

步骤三:在源集群上对源表生成快照

snapshot 'table_name','snapshot_name'   //生成快照
list_snapshots   //查看快照


步骤四:复制快照到目标集群

将生成的快照文件copy到目标集群HDFS的/hyperbase1路径下

  • 将源集群上生成的  快照copy到目标集群的hdfs,上传到的hdfs路径是hyperbase的根目录 /hyperbase1
  • 下面命令可以通过参数 -mappers  指定 mapper数量,加快MapReduce任务。


命令参考:

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'snapshot_name' -copy-to hdfs://{目标集群IP}:8020/hyperbase1/ -mappers 16

迁移成功,前往目标集群验证快照文件。


TIP:

1. 迁移需要使用hbase用户,若使用root用户执行会提醒权限受限。如下图所示:

执行export HADOOP_USER_NAME=hbase,切换hbase用户可解决该问题。


2. 若迁移过程中出现端口相关报错。如下所示:

需在Manager界面Yarn服务页面修改“yarn.nodemanager.resource.memory-mb”的值,将1024修改为8192,配置服务后重启Yarn服务。顺利解决报错,完成迁移。

步骤五:在目标集群hdfs上检查copy的快照文件

在目标集群的hbase shell中,list_snapshots查看原表的snapshot是否迁移成功

list_snapshots


步骤六:确保目标集群处于在线状态,在目标集群使用迁移的快照建表

在目标集群通过clone_snapshot命令,恢复表(表名称可以和原表不同)

clone_snapshot 'snapshot_name','new_table_name'


步骤七:对目标集群中的新表进行major_compact

【注】:这一步骤不做也可以进行查表,但由于ExportSnapshot 操作主要是通过MR job 直接拷贝HDFS文件方式,最终目标集群上线的region的locality水平无法预估,所以强烈建议做这一步提升读性能

major_compact 'new_table_name'

检查建表成功,至此HBase表已完成迁移。


评论
登录后可评论
发布者
icon
扬仔无敌
文章
31
问答
119
关注者
10
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入