从云HBase标准版/自建开源HBase迁移到云HBase增强版Step By Step

1. 为什么要迁移云HBase增强版

云HBase增强版是基于云原生多模数据库Lindorm内核研发的、完全兼容HBase的云上托管数据库,已经在阿里集团内部发展超10年,支撑服务了淘宝、支付宝、菜鸟、优酷、高德等业务中的大量核心应用,在成本、性能、稳定性、功能、安全、易用性等方面相比社区版HBase拥有诸多优势和企业级能力。

在使用上,用户可以通过HBase官方客户端及标准API访问HBase增强版,HBase增强版同时兼容HBase-1.x和HBase-2.x客户端访问,在整体功能及API上保证近100%的兼容性。云HBase增强版提供最高7倍于HBase开源版本的性能和一半的存储成本,详情请参见产品优势

2. 数据迁移

Lindorm Tunnel Service服务,简称LTS(原BDS),该服务是面向Lindorm/HBase业务场景特点深度定制的数据生态服务。支持简单易用的数据交换、处理、订阅等能力,满足用户的数据迁移、实时订阅、数湖转存、数仓回流、单元化多活、备份恢复等需求,实现面向Lindorm的一站式数据生态服务。详情请参见:LTS服务介绍

通过LTS可以实现从云HBase标准版/HBase社区版向云HBase增强版的不停机迁移。下面将一步一步带领您实现不停机迁移。

2.1 准备工作

创建待迁移的云HBase标准版集群(当然也可以是社区版HBase),对于生产集群的迁移可忽略该步骤。

2.1.1 登录云HBase控制台,选择正确的地域并点击“创建HBase集群”。

HBase控制台2.1.2 根据需要选择合适的集群创建选项。

1) 商品类型:包年包月或集群版按量付费。

2) 服务及服务类型:HBase、标准版。

3) 地域&可用区:根据实际情况进行相应选择。

4) 网络:专有网络,并选择相应的VPC。 关于VPC参见:什么是专有网络

5) 集群规格:根据需要选择合适的master、core节点规格、core节点数量及磁盘类型及磁盘容量。

HBase集群创建1HBase集群创建2

2.1.3单击“立即购买”进入“确认订单”页面,勾选服务协议后点击立即开通开始集群创建。

HBase集群创建3集群创建约需要30分钟左右的时间,请耐心等待。

2.1.4 在同可用区同VPC下创建一台ECS,作为HBase客户端。注意需要带公有网络,以保证后续可以直接登录并通过AHBench完成测试表及数据导入。ECS实例创建完成后可以执行下重置密码,方便后续使用。

ECS页面

2.1.5 登录ECS,创建用户压测的目录,下载压测工具AHBench。压测工具详见:AHBench

2.1.6 编辑AHBench/conf/hbase-site.xml文件, 配置需要测试的HBase集群地址。 配置样例如下图:

hbase-site.xmlHBase集群地址可通过HBase控制台集群页面里的数据库连接页面获取到,如下图所示:

zk-address2.1.7 编辑文件AHBench/conf/ahbench-env.properties,打开HBASE_VERSION参数。另外,需要保证Java可以调用。如下图所示:

java&env

2.1.8 通过HBase控制台集群页面里访问控制页面维护HBase集群白名单,加入ECS实例IP。

白名单

2.1.9 启动测试,创建待迁移测试表及数据。表情况详见HBase集群master页面。

HMasterHBase Master页面可通过HBase控制台集群页面里数据库连接页面进入。

HBase cluster UI

2.2 创建目标集群:云HBase增强版

2.2.1登录云HBase控制台,选择正确的地域并单击“创建HBase集群”。

HBase控制台 2.2.2 根据需要选择合适的集群创建选项。

1) 商品类型:包年包月或集群版按量付费。

2) 服务及服务类型:HBase、增强版(云原生多模数据库Lindorm)。

3) 地域&可用区:根据实际情况进行相应选择。

4) 网络:专有网络,并选择相应的VPC。 关于VPC参见:什么是专有网络

5) 集群规格:根据需要选择合适的master、core节点规格、core节点数量及磁盘类型及磁盘容量。

集群创建增强版1集群创建增强版2集群创建约需要30分钟左右的时间,请耐心等待。

2.3 创建LTS(原BDS)集群

2.3.1登录云HBase控制台,选择正确的地域并单击“创建BDS集群”。

控制台BDS

2.3.2根据需要选择合适的集群创建选项。

1) 商品类型:包年包月或集群版按量付费。

2) 服务:BDS(数据同步)。

3) 地域&可用区:根据实际情况进行相应选择。

4) 网络:专有网络,并选择相应的VPC,建议和HBase集群在同一VPC下。

5) 集群规格:根据需要选择合适的core节点规格、core节点数量。

BDS创建1

2.4 关联待迁移的源、目标集群

2.4.1登录HBase控制台,从控制台可以看到源、目标及LTS集群。

集群列表

2.4.2打开LTS集群页面,进行数据源关联。

关联数据源

点击“添加数据源”,在弹出窗口中选择正确的地域及实例后点击确定按钮即可完成关联。

备注:

1)自动关联仅适用于LTS、HBase集群在同一VPC下的情况,如在不同的VPC下,需要通过手动操作来完成集群关联,详见:HBase数据源添加HBase增强版数据源添加

2)对于社区版HBase也需要通过手动操作来完成集群关联。

  • 关联标准版集群。

关联标准版集群
  • 关联增强版集群。

关联增强版集群
  • 完成集群关联后的LTS数据源管理页面如下图所示:

数据源列表
  • l 完成集群关联后的LTS UI数据源管理页面如下图所示:

LTS UI DSList
  • 手动关联集群需要通过LTS UI界面的数据源管理-添加数据源页面完成,如下图所示:

manual add DS

2.5 完成数据迁移

确认数据源关联完成后,下一步就可以创建迁移任务进行数据迁移了。

在LTS UI,打开快速迁移页面,点击创建新任务打开任务配置页面,如下图所示。根据实际情况。

  • 定义迁移任务名称。

  • 选择已经关联好的源、目标集群。

  • 勾选迁移动作:对于集群的整体迁移可以同时勾选迁移表结构、实时数据复制、历史数据迁移。

  • 可以支持的迁移方式:

整个集群迁移: *

某个Namespace下所有表:namespace:*

迁移部分表:namespace1:table1 namespace2:table2 (不同表通过换行进行分割)

迁移表的部分列:tableA {"cols": ["f:col1", "f:col2"]}

迁移表期望做namespace和表名的rename: namespaceA:tableA/namespaceB:tableB

注意:如果没有写明namespace则为default。

migrate job
  • 填写完成后点击创建,可以在该页面看到提交后的任务运行情况。

job list
  • 数据验证。数据迁移完成后可以创建数据抽样验证任务,确认源、目标集群的数据一致性。点击数据验证按钮,创建新任务,输入:源、目标集群、抽样比例、表名等。

数据验证数据验证通过后,即代表集群迁移(包括:历史数据和实时增量同步)完成,并且实时同步任务要始终保持运行中状态,直到流量切换到新集群。

  • 为了保证集群迁移可回滚,需要配置一个反向的实时同步任务,即把源、目标交换的实时同步任务。

  • 其他注意事项:

1)对于社区版HBase需要调整合适的HLog保留周期,以保证数据同步链路不会因为HLog被删除而中断。

2)对于自建HBase集群如果开通了kerberos的,请联系云HBase值班同学协助完成迁移。

3)如果有通过Bulkload方式做数据导入的,因为该方式下不产生HLog,意味着数据无法完成集群间的同步,请在新老集群同时配置数据导入任务,直至确认切流完成,老集群下线。

3. 客户端配置

对于云HBase标准版和云HBase增强版都建议使用阿里云云HBase提供的客户端。详见:HBaseJava SDK下载

对于仍然希望使用社区版HBase客户端的客户,可以有两种选择:历史版本(Maven方式或者历史版本(Jar包替换)

4. 集群切换

正式切换流量简要步骤:

1) 应用端预发布环境可以正常读写新的云HBase增强版集群。

2) 写入新集群的数据可以通过反向同步链路将数据复制到老集群。

3) 新老集群的复制链路正常,实时同步延迟较低(正常应该小于1秒)。

4) 选择业务低峰期进行流量切换。