使用CDM迁移CloudTable HBase集群数据至CloudTable HBase集群
云数据迁移(Cloud Data Migration,简称CDM),是一种高效、易用的批量数据迁移服务。 CDM围绕大数据迁移上云和智能数据湖解决方案,提供了简单易用的迁移能力和多种数据源到数据湖的集成能力,降低了客户数据源迁移和集成的复杂性,有效地提高您数据迁移和集成的效率。
本章节介绍使用CDM迁移CloudTable HBase集群数据至CloudTable HBase集群。基本流程如下:
- 准备工作
- 步骤一:关闭目的集群major compaction(可选)
- 步骤二:配置replication同步增量数据
- 步骤三:创建CDM集群
- 步骤四:创建CDM连接
- 步骤五:新建作业和整库迁移数据
- 步骤六:验证

约束限制
- 目的集群、源集群、CDM集群网络互通,必须在同一个区域、VPC和安全组中。
- 源集群和目的集群关闭安全通道。
- 此实践适用于HBase2.x版本。不同版本操作可能有差异,具体操作详情以实际版本对应的操作指导为准。
- 搬迁数据量较大时,对网络通信要求较高,执行搬迁任务时,可能会影响其他业务,建议在业务空闲期进行数据迁移任务。
步骤一:关闭目的集群major compaction(可选)
如果源端集群业务存在delete操作,目的集群执行major compaction操作可能导致delete数据不一致。为了避免此现象,需要先关闭目标集群major compaction。
步骤二:配置replication同步增量数据
- 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,访问源端HBase集群。
bin/hbase shell
- 配置源端集群到目的集群的单向数据复制通道。
add_peer '1', CLUSTER_KEY => "目标集群zk1,目标集群zk2,目标集群zk3:2181:/hbase"
- 在源端集群上开启每个表增量同步。每个表都需要执行。执行完后记录时间A,例如2025-09-03 20:00:00。
启用HBase表实时同步功能,该步骤需要修改表的数据,会触发region的上下线,会导致实时业务的抖动,一般在1分钟以内。
enable_table_replication 'tablename'
步骤三:创建CDM集群
- 登录云数据迁移服控制台,创建CDM集群。
- 单击“购买云数据迁移服务”,按照以下参数配置。
表1 CDM集群参数 参数
取值
当前区域
与CloudTable选择在同一个区域。
可用区
根据实际情况选择。
集群名称
CDM-demo。集群名称在4位到64位之间,必须以字母开头,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符。
实例类型
根据用户实际需求选择规格,建议规格在16U以上。
虚拟私有云
与CloudTable HBase选择同一个VPC。
子网
与CloudTable HBase选择同一个子网。
安全组
与CloudTable HBase选择同一个安全组。
企业项目
default
- 单击“立即购买”,核对参数无误,单击“提交”。
- 回到CDM管理控制台的“集群管理”页面,集群创建成功后状态为“可运行”状态,单击集群操作列的“绑定弹性IP”。
- 勾选可用的弹性IP,单击“确”。如果没有弹性IP,需要跳转到弹性IP界面,购买弹性IP。
步骤四:创建CDM连接
源端HBase集群创建连接
- CDM集群创建完成后,创建源连接。单击CDM集群操作列的“作业管理 > 连接管理”。
- 进入连接管理页面,单击“新建连接”,创建源端集群连接,连接器选择“Apache HBase”。
图2 连接类型
- 单击“下一步”,进入“详细配置”页面,配置参数并测试连通性。
表2 详细配置 参数
描述
名称
连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。
ZK链接地址
HBase的ZooKeeper链接地址。
格式:<host1>:<port>,<host2>:<port>,<host3>:<port>
需配置为CloudTable HBase的“ZK连接地址(内网)”。登录表格存储服务管理控制台,在集群管理页面中找到所需要的集群,并获取相应的“ZK链接地址(内网)”。
认证类型
访问集群的认证类型:SIMPLE:非安全模式选择Simple鉴权。
HBase版本
HBase组件版本,HBASE_2_X。
运行模型
EMBEDDED:连接实例与CDM运行在一起,该模式性能较好。
图3 详细配置 - 单击“测试”,测试通过后,单击“保存”。
目的端HBase集群创建连接
步骤五:新建作业和整库迁移数据
- 源端和目的端集群创建连接后,单击“整库迁移”。
- 进“整库迁移”页面,单击“新建作业”。
- 配置如下参数,单击“下一步”。
- 作业名称:用户自定义任务名称,名称由中文、数字、字母、中划线、下划线、点号,且首字符不能是中划线或点号组成,长度必须在1到240个字符之间。
- 源端作业配置:
- 源连接名称:源端HBase集群创建的连接名称。
- 终止时间:配置终止时间,比开启表增量同步的时间A晚半小时或一小时。
- 目的端作业配置:
- 目的连接名称:目的端HBase集群创建的连接名称。
- 导入前是否清空数据:否。
- 自动创表:不自动创建。
- 字段映射,单击“下一步”。
图4 字段映射
- 任务配置。配置以下参数,其他参数保持默认即可。确认参数无误,单击“保存并运行”。
步骤六:验证
- (可选)如果目的集群关闭majorcompaction,数据迁移完成后需要修改目的集群hbase-site.xml文件中hbase.hregion.majorcompaction=604800000(联系技术人员修改)。
- 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,启动Shell访问源端集群。
执行“bin/hbase shell”,启动Shell访问集群。
每个表执行以下命令,触发region上下线。
disable_table_replication 'table_name'
- 移除集群复制通道,“1”为2.中设置的ID。
remove_peer '1'
- 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,启动Shell访问目的端集群。
执行“bin/hbase shell”,启动Shell访问集群。
执行list命令查看迁移表。
hbase:008:0> list TABLE cloudtable 1 row(s) Took 0.0093 seconds => ["cloudtable"]
常见问题
- 查询时间戳范围内的数据条数。
hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'af_blacklist' --starttime 开始时间戳毫秒 --endtime 截止时间戳毫秒
示例:hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'af_blacklist’--starttime=1683353756000 --endtime=1683440156000
- 查询rowkey范围内的数据条数。
hbase org.apache.hadoop.hbase.mapreduce.RowCounter '表名’ --range=[startKey], [endKey]
示例:hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'af_blacklist' --range=11792209288XX_190218,11792209288XX_f5f99f