
# 使用CDM迁移Hudi数据至MRS集群
#### 操作场景
云数据迁移（Cloud Data Migration，简称CDM），是一种高效、易用的批量数据迁移服务。 CDM围绕大数据迁移上云和智能数据湖解决方案，提供了简单易用的迁移能力和多种数据源到数据湖的集成能力，降低了客户数据源迁移和集成的复杂性，有效地提高您数据迁移和集成的效率。
本章节适用于将线下IDC机房或者公有云Hudi集群中的数据迁移到华为云MRS服务。
#### 方案架构
CDM围绕大数据迁移上云和智能数据湖解决方案，提供了简单易用的迁移能力和多种数据源到数据湖的集成能力，降低了客户数据源迁移和集成的复杂性，有效地提高您数据迁移和集成的效率。
CDM支持数据全量迁移和增量迁移。选择CDM文件迁移可实现全量迁移，通过文件复制完成。选择CDM文件迁移，将策略配置为"跳过重复文件"可实现增量迁移。
CDM迁移Hudi数据至MRS集群方案如[图1]所示。
图1Hudi数据迁移示意   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002406136205.png "点击放大")
#### 方案优势
- 简单易用：免编程，向导式任务开发界面，通过简单配置几分钟即可完成迁移任务开发。
- 迁移效率高： 基于分布式计算框架进行数据任务执行和数据传输优化，并针对特定数据源写入做了专项优化，迁移效率高。
- 实时监控：迁移过程中可以执行自动实时监控、告警和通知操作。
 
#### 对系统影响
- 在迁移过程中，源端Hudi文件的更改未能及时同步到目标集群，可能导致数据不一致。可以使用校验工具识别不一致数据，进行重迁或者补数。
- 迁移操作可能导致源端集群性能下降，影响源端业务的响应时间。建议在业务空闲时进行数据迁移，并在源端集群上合理配置资源，包括计算、存储和网络，确保其能承受迁移负载。
 
#### 约束与限制
- 搬迁数据量较大时，对网络通信要求较高，执行搬迁任务时，可能会影响其他业务，建议在业务空闲期进行数据迁移任务。
- 本章节以通过[华为云CDM服务](https://support.huaweicloud.com/productdesc-cdm/cdm_01_0143.html) 2.9.2.200版本进行数据迁移为例介绍。不同版本操作可能有差异，具体操作详情以实际版本对应的操作指导为准。
- **CDM服务支持迁移的数据源可参考[支持的数据源](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0157.html)，数据源为Apache HDFS时，建议使用的版本为2.8.X、3.1.X，请执行搬迁前务必确认是否支持搬迁。**
 
#### 前提条件
- 确保源端集群和目标集群分别与CDM网络互通即可迁移。 即在配置MRS Hudi数据源时，需要确保[表1]中的端口在安全组或自有网络中已经放通，以供数据集成服务访问MRS使用，更多常用端口介绍请参见[MRS集群服务常用端口列表](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0504.html)。
   表1组件需要放通的端口 
  | **服务**名称    | **端口类型** | **端口号**     | **说明**                                        |
  |:---|:---|:---|:---|
  | MRS Manager | TCP      | 28443       | 用于下载MRS集群配置。                                  |
  | MRS Manager | TCP      | 20009       | 用于CAS认证端口。                                    |
  | MRS Manager | TCP      | 20029       | 用于进行Manager与其他组件之间的通信和管理操作。                   |
  | KDC         | TCP\&UDP | 21730       | 用于进行Kerberos认证。                               |
  | KDC         | TCP\&UDP | 21731       | 用于进行Kerberos认证。                               |
  | KDC         | TCP\&UDP | 21732       | 用于进行Kerberos认证。                               |
  | HDFS        | TCP      | 8020/25000  | HDFS NameNode服务端口。                            |
  | HDFS        | TCP      | 9866/25009  | HDFS DataNode服务端口。                            |
  | Hudi        | TCP      | 10000/21066 | Hudi Server服务端口，用于客户端与Hudi Server之间的通信。       |
  | Hudi        | TCP      | 9083/21088  | Hudi Metastore服务端口，用于存储和管理Hudi的元数据信息。         |
  | Spark       | TCP      | 22550       | Spark JDBC Thrift端口，用于Spark客户端与Spark服务器之间的通信。 |
  | Zookeeper   | TCP      | 2181/24002  | Zookeeper服务端口，用于客户端与Zookeeper集群之间的通信。         |
     
  
- 迁移前需要对齐本次需要迁移的表范围，通过元数据定义的表需要获取库名、表名，通过路径定义的表需获取到表路径。
 
#### 使用CDM迁移Hudi存量数据
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 Hadoop"，参数说明具体请参考[Apache HDFS](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0027.html#section2)。
   
   图2到迁移源端集群的连接   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002429615253.png "点击放大")
   
   
6. 在"连接管理"页签，单击"新建连接"。
7. 参考[CDM服务的新建连接](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0023.html)页面，添加到迁移目的端集群的连接，连接器类型根据实际集群来选择，例如连接器类型选择"MRS HDFS"，参数说明具体请参考[MRS HDFS](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0027.html#section0)。
   
   图3到迁移目的端集群的连接   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002396135984.png "点击放大")
   
   
8. 选择"作业管理"的"表/文件迁移"页签，单击"新建作业"。
9. 选择源连接、目的连接： 
   - 作业名称：用户自定义任务名称，名称由英文字母、下划线或者数字组成，长度必须在1到256个字符之间。
   
   - 源连接名称：选择迁移源端集群的HDFS连接，作业运行时将从此端复制导出数据。
   
   - 目的连接名称：选择迁移目的端集群的HDFS连接，作业运行时会将数据导入此端。
   
   
   
   
10. 配置源端和目的端连接的作业参数。 
    请参见[配置HDFS源端参数](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0036.html)配置源端连接的作业参数，需要迁移的文件夹可通过"目录过滤器"和"文件过滤器"参数设置符合规则的目录和文件进行迁移。
    请参见[配置HDFS目的端参数](https://support.huaweicloud.com/usermanual-cdm/cdm_01_0045.html)配置目的端连接的作业参数。
    ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
    - 如果使用CDM进行**全量数据迁移**，在"目的端作业配置"中的参数"重复文件处理方式"选择"替换重复文件"。
    
    - 如果使用CDM进行**增量数据迁移**，在"目的端作业配置"中的参数"重复文件处理方式"选择"跳过重复文件"。
     
    图4Hudi作业配置   
    ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002429497137.png "点击放大")
    
    
11. 单击"下一步"进入任务配置页面。 
    - 如需定期将新增数据迁移至目的端集群，可在该页面进行配置，也可在任务执行后再配置定时任务。
    
    - 如无新增数据需要后续定期迁移，则跳过该页面配置直接单击"保存"回到作业管理界面。
      图5任务配置   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002402187529.png "点击放大") 
    
    
    
    
12. 选择"作业管理"的"表/文件迁移"页签，在待运行作业的"操作"列单击"运行"，即可开始Hudi数据迁移，并等待作业运行完成。
13. 检查迁移后的数据。 
    1. 使用root登录客户端安装节点，执行如下命令：
       ```
       cd 客户端安装目录
       ```
       
    
    2. 执行命令加载环境变量：
       ```
       source bigdata_env
       ```
       ```
       source Hudi/component_env
       ```
       
    
    3. 如果集群已启用Kerberos认证（安全模式），执行以下命令进行用户认证。集群未启用Kerberos认证（普通模式）无需执行用户认证。
       ```
       kinit 组件业务用户
       ```
       
    
    
    
    4. 启动spark-sql，查询迁移后的表数据。
       ```
       spark-sql --master yarn
       ```
       ```
       select count(*) from hudi_test.hudi_table1;
       ```
       
    
    
    
    

14. （可选）如果源端集群中有新增数据需要定期将新增数据迁移至目的端集群，则配置定期任务增量迁移数据，直到所有业务迁移至目的端集群。 
    1. 在CDM集群中选择"作业管理"的"表/文件迁移"页签。
    
    2. 在迁移作业的"操作"列选择"更多 \> 配置定时任务"。
    
    3. 开启定时执行功能，根据具体业务需求设置重复周期，并设置有效期的结束时间为所有业务割接到新集群之后的时间。
       图6配置定时任务   
       ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002402608301.png "点击放大") 
    
    
    
    
 
