文档简介:
集群迁移
集群迁移发生在如下业务场景:
•业务拆分,将部分业务迁移到新的HBase集群
•集群缩容
•双集群备份切换
云hbase目前支持对同租户下的新建集群实行一键迁移,具体流程如下:
点击左侧导航栏的集群迁移,进入集群迁移列表页面,见下图
点击按钮添加迁移集群,填写迁移任务。
目标集群仅支持相同资源池下同一账户的不同云HBASE集群。如有其它特殊需求,请参考后台导入导出章节进行处理。填写好迁移任务信息后,点击按钮一键迁移,集群会对当前源集群创建快照,并将集群全量备份到目标集群的HDFS上。然后以此全量备份对目标集群做还原。
注意事项
1.迁移前请确认目标集群的HDFS容量为备份数据的两倍,防止迁移过程中出现容量写满的情况
2.增量迁移为全量备份,为避免数据遗漏。建议在迁移期间暂停业务数据录入集群
3.用户无需在目标集群创建表,迁移会自动创建和源集群一样的表,包括分区的信息。客户自建的目标表可能会和源表分区很不一致,这可能会导致迁移完成之后,目标表会进行频繁的split、compaction,如果表的数据量十分庞大,可能会导致这个过程非常耗时
4.如果源表带有 coprocessor和索引, 在创建目标表的时候可能会报错,因为目标集群不包含对应的coprocessor
5.如果迁移无论成功失败,迁移程序会自动清理当前备份数据
后台导入导出
具体业务场景如下
•自建HBase集群迁移上云HBASE
•跨资源池迁移
•迁移部分业务表
•业务拆分,将部分业务迁移到离线集群的hdfs
•退订,将数据导出到对应ECS
注意:迁移前请确认目标集群的HDFS容量,防止迁移过程中出现容量写满的情况
场景 |
迁移方式 |
环境 |
企业版单表,或者少量表,数据量小于5TB导出 |
CopyTable命令 |
需要确保其它集群的vpc网络与当前集群网络互通。 建议停止应用对集群对应表的写操作。 |
企业版全库或者部分表导出 |
Export命令 |
需要确保其它集群的vpc网络与当前集群网络互通。 建议停止应用对集群对应表的写操作。 |
单节点表数据导出 |
snapshot |
需要确保其它集群的hdfs或者兼容S3协议接口可访问 |
企业版全库或者部分表导出 |
Backup命令 |
需要确保其它集群的hdfs或者兼容S3协议接口可访问 |
具体步骤:
(1)下载hbase client客户端
在集群列表内点击需要导入或者导出的集群明细,进入明细页面。
点击按钮客户端安装包下载安装包文件到本地。您可通过ftp软件上传客户端安装包到对应可连接到
您购买的ecs机器上。(请确认该ecs与导入导出集群对应的vpc是否可以联通)
(2) HBase数据导出到HDFS或者本地文件
在hbase client /bin目录下运行
hbase org.apache.hadoop.hbase.mapreduce.Export emp file:///usr/hbase_data/bak
HBase数据导出到本地文件
hbase org.apache.hadoop.hbase.mapreduce.Export emp /hbase/emp_bak
导入hbase表(# 默认不写file://的时候就是导出到hdfs上了 )
将hdfs上的数据导入到备份目标表中
$ hbase org.apache.hadoop.hbase.mapreduce.Driver import emp_bak /hbase/emp_bak/*
将本地文件上的数据导入到备份目标表中
hbase org.apache.hadoop.hbase.mapreduce.Driver import emp_bak file:///usr/hbase_data/bak/*
(3) 导出时可以限制scanner.batch的大小
如果在hbase中的一个row出现大量的数据,那么导出时会报出ScannerTimeoutException的错误。这时候需要设置hbase.export.scanner.batch 这个参数。这样导出时的错误就可以避免了。
hbase org.apache.hadoop.hbase.mapreduce.Export -Dhbase.export.scanner.batch=2000 emp file:///usr/hbase_data/bak
(4)为了节省空间可以使用compress选项
hbase的数据导出的时候,如果不适用compress的选项,数据量的大小可能相差5倍。因此使用compress的选项,备份数据的时候是可以节省不少空间的。
hbase org.apache.hadoop.hbase.mapreduce.Export -Dhbase.export.scanner.batch=2000 -D mapred.output.compress=true emp file:///usr//hbase_data/bak
命令说明:
2.10.1. hbase backup create full/incremental path
full:创建全量备份
incremental:创建增量备份
path:备份到的文件系统以及对应的路径
可以跟的选项:-t table;如果不写就是全部的表都备份
-w 后面跟的数字,表示多少个工作任务
-s 备份的set
-b 控制备份的带宽
2.10.2. hbase restore path backupid
path:备份的路径
backupid:备份的id;
后面可以的选项: -o 覆盖之前的表
-t 备份的表,其他选项类似
2.10.3.hbase backup merge
把一些backup的id进行merge,可以是每日的backup merge成一个;
2.10.4.hbase backup progress
展示backup进度
(5)迁移部分表业务,请联系客户经理。