
# 使用CDM服务迁移HBase数据至MRS集群
#### 应用场景
云数据迁移（Cloud Data Migration，简称CDM），是一种高效、易用的批量数据迁移服务。 CDM围绕大数据迁移上云和智能数据湖解决方案，提供了简单易用的迁移能力和多种数据源到数据湖的集成能力，降低了客户数据源迁移和集成的复杂性，有效地提高您数据迁移和集成的效率。
本章节适用于使用CDM服务将线下IDC机房或者公有云HBase集群中的数据（支持数据量在几十TB级别或以下的数据量级）迁移到华为云MRS集群。
#### 方案架构
HBase会把数据存储在HDFS上，主要包括HFile文件和WAL文件，由配置项"hbase.rootdir"指定在HDFS上的路径，华为云MRS集群的默认存储位置是"/hbase"文件夹下。
HBase自带的一些机制和工具命令也可以实现数据搬迁，例如通过导出Snapshots快照、Export/Import、CopyTable方式等，可以参考Apache官网相关内容。
图1HBase数据迁移方案   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002372372710.png "点击放大")
#### 方案优势
场景化迁移通过迁移快照数据然后再恢复表数据的方法，能大幅度提升迁移效率。
#### 迁移调研
迁移HBase数据前需要对源端HBase组件进行调研，以便评估迁移过程中可能会产生的风险、对系统的影响等。调研主要包含HBase组件版本、部署模式、数据存储、性能优化等，具体请参考[表1]。
 表1迁移调研 
| **调研项目** | **调研**内容               | **示例**                                                                                                                                                                                                                                                                       |
|:---|:---|:---|
| 版本兼容性    | 源端、目标端HBase版本号。        | 基于Apache HBase 2.x版本。                                                                                                                                                                                                                                                        |
| 版本兼容性    | 源端、目标端HBase是否兼容标准API。  | 兼容标准API，支持华为云增强功能。                                                                                                                                                                                                                                                           |
| 部署模式     | 源端、目标端HBase的部署模式。      | 自建物理/虚拟化集群、云原生服务，支持弹性扩缩容。                                                                                                                                                                                                                                                    |
| 数据存储     | 源端、目标端HBase数据存储的存储方式。  | 本地HDFS或S3兼容存储、支持OBS（华为云对象存储），支持冷热数据分离存储。                                                                                                                                                                                                                                     |
| 性能优化     | 源端、目标端HBase性能优化策略。     | - 需手动调优Region分布、预分区策略、支持自动负载均衡。  - 智能预分区。  - 支持向量化查询加速。   |
| 监控与运维    | 源端、目标端HBase使用的监控、运维工具。 | 云日志服务LTS、支持自动化运维。                                                                                                                                                                                                                                                            |
| 安全性      | 源端、目标端HBase使用的安全性配置。   | SSL加密、Kerberos认证、VPC网络隔离、数据加密传输、细粒度ACL。                                                                                                                                                                                                                                      |
   
#### 网络方案
迁移方案支持各种网络选型：公网、VPN、专线等。根据实际情况选择网络方案，两端网络互通即可迁移。
表2网络方案 
| **迁移网络类型** | **优点**                                                                                                                                                                                                                                                                                                                                                                  | **缺点**                                                                                                                                                                                                                                                                            |
|:---|:---|:---|
| 专线         | - 性能稳定：时延低至毫秒级。  - 带宽选择范围可达几十Gbit/s。  - 数据传输安全性高。                                                                                          | - 成本高：一般是包年包月。  - 源端和目的端私网IP地址不能重叠。  - 开通时间长：一般需提前1个月申请。   |
| VPN        | - 组网灵活，随时搭建。  - 稳定性较好，安全性较好。  - 成本适中：公网费用+VPN费用。                                                                                             | - 时延较高。  - 源端和目的端私网IP地址不能重叠。                                                                                            |
| 公网IP       | - 支持源端和目的端私网IP一致的情况下实施迁移。  - 带宽任意选择（Mbit/s\~Gbit/s）。  - 即买即用，快速绑定。  - 成本低。   | - 稳定性差：带宽可能无法全部利用，迁移速率相对较慢。  - 公网传输数据有泄漏风险。                                                                               |
   
#### 约束与限制
- 本章节以通过[华为云CDM服务](https://support.huaweicloud.com/productdesc-cdm/cdm_01_0143.html)2.9.1.200版本进行数据迁移为例介绍。不同版本操作可能有差异，具体操作详情以实际版本对应的操作指导为准。
- **CDM服务支持迁移的数据源可参考[支持的数据源](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0157.html)，数据源为Apache HBase时，建议使用的版本为2.1.X、1.3.X，请执行搬迁前务必确认是否支持搬迁。**
- 在迁移过程中，源端HBase数据如果进行删除/增量操作未能及时同步到目标集群，可能导致数据不一致，需要重新迁移。
- 搬迁数据量较大时，对网络通信要求较高，执行搬迁任务时，可能会影响其他业务，建议在业务空闲期进行数据迁移任务。
 
 #### 迁移全量HBase数据
1. 登录CDM管理控制台。
2. [创建CDM集群](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0018.html)，该CDM集群的安全组、虚拟私有云、子网需要和迁移目的端集群保持一致，保证CDM集群和待迁移的MRS集群之间网络互通。
3. 在"集群管理"页面单击待操作集群对应"操作"列的"作业管理"。
4. 在"连接管理"页签，单击"新建连接"。
5. 参考[CDM服务的新建连接](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0023.html)页面，添加到迁移源端集群的连接，连接器类型根据实际集群来选择，例如连接器类型选择"Apache HBase"。
   
   ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
   （可选）HBase迁移建议使用高权限用户，单击"显示高级属性"，新增迁移所需用户"hadoop.user.name = *用户名* （如**omm**用户）"。
   图2到迁移源端集群的连接   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002327120896.png "点击放大")
   
   
6. 在"连接管理"页签，单击"新建连接"。
7. 参考[CDM服务的新建连接](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0023.html)页面，添加到迁移目的端集群的连接，连接器类型根据实际集群来选择，例如连接器类型选择"MRS HBase"。
   
   ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
   （可选）HBase迁移建议使用高权限用户，单击"显示高级属性"，新增迁移所需用户"hadoop.user.name = *用户名* （如**omm**用户）"。
   图3到迁移目的端集群的连接   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002326961024.png "点击放大")
   
   
8. 选择"作业管理"的"表/文件迁移"页签，单击"新建作业"。
9. 进入作业参数配置界面，配置作业名称、源端作业和目的端作业参数，并选择要迁移的数据表，单击"下一步"。 
   图4HBase作业配置   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002361119509.png "点击放大")
   
   
10. 配置源字段和目的字段的映射关系， 并单击"下一步"。
11. 进入任务配置页面，不做修改，直接单击"保存"。
12. 选择"作业管理"的"表/文件迁移"页签，在待运行作业的"操作"列单击"运行"，在弹出的运行作业页面，单击"确定"即可开始HBase数据迁移。
13. 迁移完成后，可以在目的端集群和源端集群的HBase Shell命令行中，通过同样的查询语句，对比查询结果进行验证。 
    例如：
    - 在目的端集群和源端集群上通过查询BTable表的记录数来确认数据条数是否一致，可添加"--endtime"参数排除迁移期间源端集群上有数据更新的影响。
      ```
      hbase org.apache.hadoop.hbase.mapreduce.RowCounter BTable --endtime=1587973835000
      ```
      图5查询BTable表的记录数   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002361039357.png "点击放大") 
    
    - 可执行以下命令查询指定时间段内的数据进行对比。
      ```
      scan 'BTable ', {TIMERANGE=>[1587973235000, 1587973835000]}
      ```
      
    
    
    
    
 
#### 迁移增量HBase数据
在业务割接前，如果源端集群上有新增数据，需要定期将新增数据搬迁到目的端集群。一般每天更新的数据量在GB级别可以使用CDM的"整库迁移"指定时间段的方式进行HBase新增数据迁移。
**当前使用CDM的"整库迁移"功能时的限制：如果源HBase集群中被删除操作的数据无法同步到目的端集群上。**
**场景迁移的HBase连接器不能与"整库迁移"共用，因此需要单独配置"HBase"连接器。**
1. 参考[迁移全量HBase数据]的[步骤 1]\~[步骤 7]步骤新增两个"HBase"连接器，连接器类型根据实际集群来选择。
   
   例如选择连接器类型时分别为源端集群和目的端集群选择"MRS HBase"和"Apache HBase"。
   图6HBase增量迁移连接   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002327120900.png "点击放大")
   
   
2. 选择"作业管理"的"整库迁移"页签，单击"新建作业"。
3. 进入作业参数配置界面，作业相关信息配置完成后单击"下一步"。 
   - 作业名称：用户自定义作业名称，例如hbase-increase。
   
   - 源端作业配置：源连接名称请选择新创建的到源端集群的连接名称，并展开高级属性配置迁移数据的时间段。
   
   - 目的端作业配置：目的连接名称请选择新创建的到目的端集群的连接名称，其他不填写。
   
   
   图7HBase增量迁移作业配置   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002326961064.png "点击放大")
   
   
4. 选择要迁移的数据表， 单击"下一步"，单击"保存"。
5. 选择"作业管理"的"整库迁移"页签，在待运行作业的"操作"列单击"运行"，在弹出的运行作业页面，单击"确定"即可开始HBase数据增量迁移。
 
#### 校验HBase迁移数据
以下操作为使用MgC Agent校验迁移后的HBase数据的一致性操作示例，且都为非安全集群，**以下操作以Linux版本25.3.3为例进行演示，具体以实际版本界面为准，** 详细操作请参见[大数据校验](https://support.huaweicloud.com/usermanual-mgc/mgc_03_0092.html)。
1. 创建项目。 
   1. 登录[迁移中心管理控制台](https://console.huaweicloud.com/mgc/?#/guide)。
   
   2. 单击左侧导航栏的"其他 \> 配置管理"，进入配置管理页面。
   
   3. 选择"项目管理"页签，单击"创建项目"，右侧弹出创建新项目窗口。
   
   4. 在弹出的窗口中，选择"复杂迁移（大数据迁移）"项目类型，并设置项目名称，例如"mrs-hbase"。
      ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/caution_3.0-zh-cn.png)
      项目类型选择后将无法更改。
      
   
   5. 单击"创建"。创建项目成功，可在项目管理列表查看。
   
   
   
   
2. 部署MgC Agent。 
   1. 在导航栏左侧最上方切换新创建的项目，选择"总览 \> 迁移中心Agent"下载Agent安装包。 在Linux版区域，单击"下载安装包"或"复制下载命令"，将MgC Agent安装程序下载到Linux主机。
      本示例以在与源端和目的端网络互通的Linux主机中安装MgC Agent为例进行演示，且已准备一台用于登录MgC Agent控制台的Windows主机。部署MgC Agent的详细操作请参见[部署MgC Agent（原Edge）](https://support.huaweicloud.com/usermanual-mgc/mgc_03_0112.html)。
      
   
   2. 执行如下命令，解压MgC Agent安装包：
      ```
      tar zxvf MgC-Agent.tar.gz
      ```
      
   
   3. 执行如下命令，进入MgC Agent安装目录中的scripts目录：
      ```
      cd MgC-Agent/scripts/
      ```
      
   
   4. 执行如下命令，启动MgC Agent安装脚本：
      ```
      ./install.sh
      ```
      
   
   5. 输入Linux本机网卡的弹性公网IP地址作为后续访问MgC Agent页面的地址。
      如果输入的地址不在本机拥有的IP列表中，会提示是否开放本机所拥有的任何公网IP作为访问地址。
      
   
   6. 当出现如下图所示提示时，表示Linux版的MgC Agent已安装完成。其中提示的端口号请以实际情况为准。
      图8安装MgC Agent成功   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002328951972.png "点击放大")
      执行如下命令，更新环境变量：
      ```
      source /opt/cloud/MgC-Agent/scripts/setenv.sh
      ```
      还需在安装MgC Agent的主机安全组入网规则中，需要添加一条允许通过TCP协议访问27080端口的规则。源地址填写用于登录MgC Agent控制台的Windows主机IP地址。
      
   
   7. 安装完成后，在Windows主机上打开浏览器，输入地址"https://*IP地址:端口号* "，即可访问MgC Agent的登录页面。例如，IP为"192.168.*x* .*x* "，端口号为"27080"，则MgC Agent的访问地址为"https://192.168.x.x:27080"。
      其中，IP为[2.e]输入的IP地址，端口号为[2.f]中MgC Agent安装成功提示的端口号。
      
   
   
   
   
3. 创建连接。 
   1. 登录MgC Agent。
      1. 在登录页面，登录方式选择"华为云密钥登录"。
      
      2. 分别输入华为云账号的AK、SK，在区域下拉列表选择在MgC服务创建项目的区域。
      
      3. 单击"登录"按钮，进入MgC Agent的总览页面。
       
   
   2. （仅首次登录需要配置）在总览界面，单击页面右上方的"立即连接"按钮，右侧弹出连接迁移中心页面。
      1. 在连接迁移中心页面配置以下参数：
         - 第一步：配置连接方式 输入华为云账号的AK/SK。
           
         
         - 第二步：关联迁移中心项目 迁移中心项目：单击"查询项目"按钮，查询成功后在下拉列表中，选择[步骤 3](https://support.huaweicloud.com/bestpractice-mrs/mrs_05_0031.html#mrs_05_0031__li397475471519)创建的迁移项目。
           
         
         - 第三步：预设当前迁移中心Agent名称 迁移中心Agent名称：输入自定义迁移Agent名称，例如"Agent"。
           
          
      
      2. 单击"连接"按钮，确认要与迁移中心进行连接，单击"确定"按钮。 当总览页面显示状态为"已连接"，代表与MgC连接成功。
         
       
   
   
   
   
4. 创建HBase凭证。 
   1. 在左侧导航栏选择"云边协同 \> 凭证列表"，进入凭证列表页面。
   
   2. 单击列表上方的"创建凭证"按钮，配置以下参数分别创建源端凭证和目的端凭证：
      表3创建HBase凭证 
      | 参数   | 参数配置                                                                                                                                                                                                             |
      |:---|:---|
      | 使用类型 | 选择"大数据"。                                                                                                                                                                                                         |
      | 类型   | 选择"HBase"。                                                                                                                                                                                                       |
      | 凭证名称 | 输入自定义凭证名称，例如，源端凭证名称为"hbase-credentials"，目标端凭证名称为"hbase-target"。                                                                                                                                                  |
      | 认证方式 | 选择"用户名/密码"。                                                                                                                                                                                                      |
      | 用户名  | 选择"root"。                                                                                                                                                                                                        |
      | 选择文件 | 单击"添加文件"，上传HBase源集群或目的集群的core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml和hbase-site.xml等5个文件。 源端集群的配置文件通常位于Hadoop安装目录的conf子目录下。目的端集群的配置文件通常位于"HBase客户端安装目录/hbase/conf"目录下。 |
         
      凭证创建后，等待凭证列表中相应凭证所在行的"同步状态"变为"已同步"。
      
   
   
   
   

5. 选择并启用MgC Agent（仅首次使用时需要配置）。 
   1. 登录[迁移中心管理控制台](https://console.huaweicloud.com/mgc/?#/guide)。
   
   2. 在左侧导航栏选择"实施 \> 大数据校验"，进入大数据校验页面。
   
   3. 单击"选择并启用迁移中心Agent"按钮，弹出选择迁移中心Agent窗口。
   
   4. 在下拉列表中，选择与迁移中心连接成功的MgC Agent，单击"启用"按钮，启用该工具进行后续操作。
      图9**启用MgC Agent**   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002363320893.png "点击放大") 
   
   5. 单击"步骤指引"，在展开页面的"第一步：选择源端和目的端组件"中，"源端组件"选择"HBase"，"目的端组件"选择"MRS(HBase)"。
   
   6. 在"第二步：选择校验方式"中，根据实际需求选择校验方式，例如"全量校验"。
   
   7. 在"第三步：查看校验流程"的"库表分组"中单击"元数据采集"进入大数据迁移准备页面。
   
   
   
   
6. 创建源端和目的端HBase连接。
   
   1. 在大数据迁移准备页面的"连接管理"页签，单击"创建连接"进入新增连接页面，"大数据组件"选择"HBase"，单击"下一步"。
   
   2. 在详细配置页面配置以下参数：
      表4源端HBase连接配置 
      | 参数            | 参数配置                                                          |
      |:---|:---|
      | 所属源           | 选择"源端"。                                                       |
      | 连接名称          | 默认创建名称为"HBase-4位随机数（字母和数字）"，也可以自定义名称。                         |
      | 迁移中心Agent     | 选择MgC Agent中已启用的Agent名称。                                      |
      | HBase凭证       | 选择[4.a]在MgC Agent添加的源端HBase凭证。 |
      | 安全集群          | 选择是否部署在安全集群下，选择"否"。                                           |
      | Zookeeper节点IP | 填写连接到源端Zookeeper的IP地址。通常是部署Zookeeper的服务器公网IP地址或内网IP地址。        |
      | Zookeeper连接端口 | 填写连接到源端Zookeeper的端口，默认为"2181"。                                |
      | HBase 版本      | 选择源端HBase的版本。                                                 |
         
      
   
   3. 单击"测试连接"，测试连接通过后，单击"确认"创建源端HBase连接。
   
   4. 再次单击"创建连接"进入新增连接页面，"大数据组件"选择"HBase"，单击"下一步"。
   
   5. 在详细配置页面配置以下参数：
      表5目的端HBase连接配置 
      | 参数            | 参数配置                                                           |
      |:---|:---|
      | 所属源           | 选择"目的端"。                                                       |
      | 连接名称          | 默认创建名称为"HBase-4位随机数（字母和数字）"，也可以自定义名称。                          |
      | 迁移中心Agent     | 选择MgC Agent中已启用的Agent名称。                                       |
      | HBase凭证       | 选择[4.a]在MgC Agent添加的目的端HBase凭证。 |
      | 安全集群          | 选择是否部署在安全集群下，选择"否"。                                            |
      | Zookeeper节点IP | 填写连接到目的端Zookeeper的IP地址。通常是部署Zookeeper的服务器公网IP地址或内网IP地址。        |
      | Zookeeper连接端口 | 填写连接到目的端Zookeeper的端口，默认为"2181"。                                |
      | HBase 版本      | 选择目的端HBase的版本。                                                 |
         
      
   
   6. 单击"测试连接"，测试连接通过后，单击"确认"创建目的端HBase连接。
   
   
   
   
7. 创建并运行元数据采集任务。 
   1. 在"大数据迁移准备"页面的"流程引导"区域，单击"元数据管理"中的"创建元数据采集任务"，右侧弹出"创建任务-元数据同步"页面，配置任务名称及元数据连接（即[步骤 6]创建的HBase源端连接），单击"确认"。
   
   2. 单击"元数据管理"，在任务管理列表中单击新创建的任务所在行的"运行任务"。
   
   3. 单击"库表清单"页签，查看采集数据表运行结果。
   
   
   
   

8. 创建表组。 
   1. 在左侧导航栏选择"实施 \> 大数据校验"，进入大数据校验页面。
   
   2. 在功能入口区域，单击"表管理"，进入表管理页面的表组页签，并确认"表管理"右侧的Agent。
   
   3. 单击"新增表组"，弹出新增表组窗口，配置以下参数并单击"确认"：
      - 表组名：输入自定义表组名称。
      
      - 元数据连接：选择[步骤 6]创建的源端连接。
      
      - 校验标准：根据实际需求选择校验标准。
       
   
   4. 选择"库表清单"页签，在列表中单击同一规则的表所在行的"加入组"，在加入组弹窗中，选择[8.c]新创建的表组，单击"确认"。
   
   
   
   
9. 创建并执行校验任务。 
   1. 返回大数据校验页面，在功能入口区域，单击"任务管理"，进入任务管理页面。
   
   2. 单击页面右上角的"新增任务"，右侧弹出新增任务窗口，"大数据组件"选择"HBase"，"统计方式"根据实际情况选择，例如选择"全量校验"，单击"下一步"。
   
   3. 配置以下参数并单击"保存"创建源端任务。
      表6新增任务配置 
      | 参数       | 参数配置                                             |
      |:---|:---|
      | 任务名      | 默认创建名称为"组件类型全量校验-4位随机数（字母和数字）"，也可以自定义名称。         |
      | 表组       | 选择已创建的表组名称。                                      |
      | HBase连接  | 选择已创建的源端HBase连接。                                 |
      | OBS桶配置检查 | 根据实际需求勾选"我确认仅需在迁移中心Agent侧查看日志和内容校验结果，无需上传至OBS桶"。 |
         
      
   
   4. 参考[9.b]\~[9.c]创建目标端任务，其中"HBase连接"需选择已创建的目的端HBase连接。
   
   5. 在任务管理列表中，单击源端任务和目的端任务所在行的"执行任务"，等待任务执行结束。
   
   
   
   
10. 返回大数据校验页面，在功能入口区域，单击"校验结果"，进入校验结果页面，查看校验结果。 
    还可单击操作列的"查看详情"，进入校验详情页面，查看该数据表的校验详细信息。
    
    
 
