文档首页/ 表格存储服务 CloudTable/ 最佳实践/ 数据导入/ 使用CDM迁移CloudTable HBase集群数据至CloudTable HBase集群
更新时间:2025-10-15 GMT+08:00
分享

使用CDM迁移CloudTable HBase集群数据至CloudTable HBase集群

云数据迁移(Cloud Data Migration,简称CDM),是一种高效、易用的批量数据迁移服务。 CDM围绕大数据迁移上云和智能数据湖解决方案,提供了简单易用的迁移能力和多种数据源到数据湖的集成能力,降低了客户数据源迁移和集成的复杂性,有效地提高您数据迁移和集成的效率。

本章节介绍使用CDM迁移CloudTable HBase集群数据至CloudTable HBase集群。基本流程如下:

  1. 准备工作
  2. 步骤一:关闭目的集群major compaction(可选)
  3. 步骤二:配置replication同步增量数据
  4. 步骤三:创建CDM集群
  5. 步骤四:创建CDM连接
  6. 步骤五:新建作业和整库迁移数据
  7. 步骤六:验证
图1 迁移场景图

约束限制

  • 目的集群、源集群、CDM集群网络互通,必须在同一个区域、VPC和安全组中。
  • 源集群和目的集群关闭安全通道。
  • 此实践适用于HBase2.x版本。不同版本操作可能有差异,具体操作详情以实际版本对应的操作指导为准。
  • 搬迁数据量较大时,对网络通信要求较高,执行搬迁任务时,可能会影响其他业务,建议在业务空闲期进行数据迁移任务。

准备工作

  • 已购买源端和目的端HBase集群。
  • 源端和目的端客户端安装完成。

步骤一:关闭目的集群major compaction(可选)

如果源端集群业务存在delete操作,目的集群执行major compaction操作可能导致delete数据不一致。为了避免此现象,需要先关闭目标集群major compaction。

  1. 修改目标集群hbase-site.xml配置,设置“hbase.hregion.majorcompaction=0”,此操作联系技术人员操作。
  2. 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,启动HBase Shell访问目的集群。

    执行“bin/hbase shell”,启动HBase Shell访问集群。

  3. 执行命令,使配置生效。
    update_all_config

步骤二:配置replication同步增量数据

  1. 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,访问源端HBase集群。
    bin/hbase shell
  2. 配置源端集群到目的集群的单向数据复制通道。
    add_peer '1', CLUSTER_KEY => "目标集群zk1,目标集群zk2,目标集群zk3:2181:/hbase"
  3. 在源端集群上开启每个表增量同步。每个表都需要执行。执行完后记录时间A,例如2025-09-03 20:00:00。

    启用HBase表实时同步功能,该步骤需要修改表的数据,会触发region的上下线,会导致实时业务的抖动,一般在1分钟以内。

    enable_table_replication 'tablename'

步骤三:创建CDM集群

  1. 登录云数据迁移服控制台,创建CDM集群。
  2. 单击“购买云数据迁移服务”,按照以下参数配置。
    表1 CDM集群参数

    参数

    取值

    当前区域

    与CloudTable选择在同一个区域。

    可用区

    根据实际情况选择。

    集群名称

    CDM-demo。集群名称在4位到64位之间,必须以字母开头,可以包含字母、数字、中划线或者下划线,不能包含其他的特殊字符。

    实例类型

    根据用户实际需求选择规格,建议规格在16U以上。

    虚拟私有云

    与CloudTable HBase选择同一个VPC。

    子网

    与CloudTable HBase选择同一个子网。

    安全组

    与CloudTable HBase选择同一个安全组。

    企业项目

    default

  3. 单击“立即购买”,核对参数无误,单击“提交”。
  4. 回到CDM管理控制台的“集群管理”页面,集群创建成功后状态为“可运行”状态,单击集群操作列的“绑定弹性IP”。
  5. 勾选可用的弹性IP,单击“确”。如果没有弹性IP,需要跳转到弹性IP界面,购买弹性IP。

步骤四:创建CDM连接

源端HBase集群创建连接

  1. CDM集群创建完成后,创建源连接。单击CDM集群操作列的“作业管理 > 连接管理”。
  2. 进入连接管理页面,单击“新建连接”,创建源端集群连接,连接器选择“Apache HBase”。
    图2 连接类型
  3. 单击“下一步”,进入“详细配置”页面,配置参数并测试连通性。
    表2 详细配置

    参数

    描述

    名称

    连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。

    ZK链接地址

    HBase的ZooKeeper链接地址。

    格式:<host1>:<port>,<host2>:<port>,<host3>:<port>

    需配置为CloudTable HBase的“ZK连接地址(内网)”。登录表格存储服务管理控制台,在集群管理页面中找到所需要的集群,并获取相应的“ZK链接地址(内网)”。

    认证类型

    访问集群的认证类型:SIMPLE:非安全模式选择Simple鉴权。

    HBase版本

    HBase组件版本,HBASE_2_X。

    运行模型

    EMBEDDED:连接实例与CDM运行在一起,该模式性能较好。

    图3 详细配置
  4. 单击“测试”,测试通过后,单击“保存”。

目的端HBase集群创建连接

  1. 进入连接管理页面,单击“新建连接”,创建目的端集群连接,连接器选择“Apache HBase”。
  2. 单击“下一步”,进入“详细配置”页面,配置参数并测试连通性。

    ZK链接地址为目的端集群ZK地址。

  3. 单击“测试”,测试通过后,单击“保存”。

步骤五:新建作业和整库迁移数据

  1. 源端和目的端集群创建连接后,单击“整库迁移”。
  2. 进“整库迁移”页面,单击“新建作业”。
  3. 配置如下参数,单击“下一步”。
    • 作业名称:用户自定义任务名称,名称由中文、数字、字母、中划线、下划线、点号,且首字符不能是中划线或点号组成,长度必须在1到240个字符之间。
    • 源端作业配置:
      • 源连接名称:源端HBase集群创建的连接名称。
      • 终止时间:配置终止时间,比开启表增量同步的时间A晚半小时或一小时。
    • 目的端作业配置:
      • 目的连接名称:目的端HBase集群创建的连接名称。
      • 导入前是否清空数据:否。
      • 自动创表:不自动创建。
  4. 字段映射,单击“下一步”。
    图4 字段映射
  5. 任务配置。配置以下参数,其他参数保持默认即可。确认参数无误,单击“保存并运行”。

    抽取并发数:建议设置范围为10~20。

步骤六:验证

  1. (可选)如果目的集群关闭majorcompaction,数据迁移完成后需要修改目的集群hbase-site.xml文件中hbase.hregion.majorcompaction=604800000(联系技术人员修改)。
    执行命令,使配置生效。
    update_all_config
  2. 使用SSH登录工具(如PuTTY)通过“弹性IP”远程登录到Linux弹性云服务器,启动Shell访问源端集群。

    执行“bin/hbase shell”,启动Shell访问集群。

    每个表执行以下命令,触发region上下线。

    disable_table_replication 'table_name'
  3. 移除集群复制通道,“1”为2.中设置的ID。
    remove_peer '1' 
  4. 使用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

相关文档