# 准备工作
为了确保迁移过程的顺利进行，需要完成以下必要的准备工作。
#### 华为账号准备
使用MgC之前，您需要拥有一个华为账号或一个可用于访问MgC的IAM用户，并获取账号/IAM用户的访问密钥（AK/SK）。获取方法请参考[准备工作](https://support.huaweicloud.com/qs-mgc/mgc_02_0002.html)。
![](https://support.huaweicloud.com/usermanual-mgc/public_sys-resources/note_3.0-zh-cn.png)
在创建目的端连接时，如果要使用"采集资源使用信息"功能和查看资源概览，需要为IAM账号的AK/SK添加MRS服务和DLI服务的只读权限（ReadOnly）。
 #### 阿里云访问密钥（AK/SK）准备
准备一组源端阿里云账号的Access Key（AK）和Secret Key（SK），获取方法请参考[查看RAM用户的AccessKey信息](https://help.aliyun.com/zh/ram/user-guide/view-the-accesskey-pairs-of-a-ram-user?spm=a2c4g.11186623.0.0.4c9b6ecfLNkOxX)。
确保该AK/SK具备以下最小权限要求：
- 拥有OSS服务的只读权限：**AliyunReadOnlyAccess**
- 拥有MaxCompute服务的只读权限**：AliyunMaxComputeReadOnlyAccess**
配置权限的方法参考[为RAM用户授权](https://help.aliyun.com/zh/ram/user-guide/grant-permissions-to-the-ram-user?spm=a2c4g.11186623.0.0.22cc6355XbNngg)。
（可选）如果迁移的元数据**存在分区表** ，需要为迁移账号开通**Information Schema** 权限，方法请参考[RAM用户访问授权](https://help.aliyun.com/zh/maxcompute/user-guide/tenant-level-information-schema?spm=5176.28426678.J_HeJR_wZokYt378dwP-lLl.11.37725181xkXRbO&scm=20140722.S_help@@文档@@424692.S_BB1@bl%2BBB2@bl%2BRQW@ag0%2Bos0.ID_424692-RL_SYSTEMCATALOG-LOC_search~UND~helpdoc~UND~item-OR_ser-V_3-P0_0#section-zax-j5y-cls)。
#### 创建大数据迁移项目
在MgC控制台为本次迁移创建独立的项目，方法请参考[项目管理](https://support.huaweicloud.com/usermanual-mgc/mgc_03_0006.html)。
 #### 配置委托权限与服务授权
为了确保正常使用DLI的功能，需要配置一条包含DLI权限和OBS权限的委托权限。
1. 登录华为云管理控制台。
2. 单击右上方登录的用户名，在下拉列表中选择"**统一身份认证**"。
3. 在左侧导航栏中，单击"**委托**"。
4. 在"委托"页面，单击"**创建委托** "。
   
   ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001987171758.png "点击放大")
   
   
5. 在"创建委托"页面，设置如下参数： 
   - 委托名称：用户自定义，例如"dli_obs_agency_access"。
   
   - 委托类型：选择"**云服务**"。
   
   - 云服务：在下拉列表中选择"**数据湖探索 DLI"**。
   
   - 持续时间：按实际需求选择。
   
   - 描述：非必选。
   
   
   ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000002179700854.png "点击放大")
   
   
6. 配置完委托的基本信息后，单击"**完成**"，弹出创建成功窗口。
7. 单击"**立即授权** "，进入**选择策略**页签。
8. 单击右上角的"**新建策略** "，参考[步骤9.]和[步骤10.]，分别创建一条OBS策略和一条DLI策略。如果已创建的授权策略中有所需的权限策略，则无需创建，直接选择已有策略即可。
9. 配置策略信息。
   
   1. 策略名称：用户自定义，例如：dli-obs-agency。
   
   2. 策略配置方式：选择"**JSON视图**"。
   
   3. 在策略内容中粘贴以下自定义策略。
      ![](https://support.huaweicloud.com/usermanual-mgc/public_sys-resources/caution_3.0-zh-cn.png)
      请替换"bucketName"为存放jar包的桶名称。
      ```
      {
          "Version": "1.1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:GetBucketPolicy",
                      "obs:bucket:GetLifecycleConfiguration",
                      "obs:bucket:GetBucketLocation",
                      "obs:bucket:ListBucketMultipartUploads",
                      "obs:bucket:GetBucketLogging",
                      "obs:object:GetObjectVersion",
                      "obs:bucket:GetBucketStorage",
                      "obs:bucket:GetBucketVersioning",
                      "obs:object:GetObject",
                      "obs:object:GetObjectVersionAcl",
                      "obs:object:DeleteObject",
                      "obs:object:ListMultipartUploadParts",
                      "obs:bucket:HeadBucket",
                      "obs:bucket:GetBucketAcl",
                      "obs:bucket:GetBucketStoragePolicy",
                      "obs:object:AbortMultipartUpload",
                      "obs:object:DeleteObjectVersion",
                      "obs:object:GetObjectAcl",
                      "obs:bucket:ListBucketVersions",
                      "obs:bucket:ListBucket",
                      "obs:object:PutObject"
                  ],
                  "Resource": [
                      "OBS:*:*:bucket:bucketName",//请替换bucketName为存放jar包的桶名称
                      "OBS:*:*:object:*"
                  ]
              },
              {
                  "Effect": "Allow",
                  "Action": [
                      "obs:bucket:ListAllMyBuckets"
                  ]
              }
          ]
      }
      ```
      
   
   
   
   
10. 配置DLI策略信息。
    
    1. 策略名称：用户自定义，例如：dli-agency。
    
    2. 策略配置方式：选择"**JSON视图**"。
    
    3. 在策略内容中粘贴以下自定义策略。
       ```
       {
           "Version": "1.1",
           "Statement": [
               {
                   "Effect": "Allow",
                   "Action": [
                       "dli:table:showPartitions",
                       "dli:table:alterTableAddPartition",
                       "dli:table:alterTableAddColumns",
                       "dli:table:alterTableRenamePartition",
                       "dli:table:delete",
                       "dli:column:select",
                       "dli:database:dropFunction",
                       "dli:table:insertOverwriteTable",
                       "dli:table:describeTable",
                       "dli:database:explain",
                       "dli:table:insertIntoTable",
                       "dli:database:createDatabase",
                       "dli:table:alterView",
                       "dli:table:showCreateTable",
                       "dli:table:alterTableRename",
                       "dli:table:compaction",
                       "dli:database:displayAllDatabases",
                       "dli:database:dropDatabase",
                       "dli:table:truncateTable",
                       "dli:table:select",
                       "dli:table:alterTableDropColumns",
                       "dli:table:alterTableSetProperties",
                       "dli:database:displayAllTables",
                       "dli:database:createFunction",
                       "dli:table:alterTableChangeColumn",
                       "dli:database:describeFunction",
                       "dli:table:showSegments",
                       "dli:database:createView",
                       "dli:database:createTable",
                       "dli:table:showTableProperties",
                       "dli:database:showFunctions",
                       "dli:database:displayDatabase",
                       "dli:table:alterTableRecoverPartition",
                       "dli:table:dropTable",
                       "dli:table:update",
                       "dli:table:alterTableDropPartition"
                   ]
               }
           ]
       }
       ```
       
    
    
    
    
11. OBS和DLI自定义策略创建完成后，单击"**下一步**"，返回委托授权页面。
12. 勾选新建的OBS和DLI自定义策略，单击"**下一步** "，授权范围方案选择"**所有资源**"。
13. 单击"**确定**"，完成授权。授权后需等待15-30分钟才可生效。
14. 参考[更新委托权限](https://support.huaweicloud.com/usermanual-dli/dli_01_0618.html#section1)，将DLI委托权限进行更新。
 
 #### 创建虚拟私有云 VPC
购买ECS时，需要进行网络配置，可提前创建VPC和子网，方法请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
![](https://support.huaweicloud.com/usermanual-mgc/public_sys-resources/caution_3.0-zh-cn.png)
ECS的VPC网段不能和DLI队列（弹性资源池）使用的网段冲突，DLI队列默认使用的网段为172.16.0.0/18。
 #### 购买ECS
- **购买ECS** ：在与目的端DLI同一区域（Region）下购买一台**Linux系统** 的ECS主机，购买方法请参考[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。其中网络配置选择上一步[创建的虚拟私有云和子网]。该ECS主机还需要满足以下条件：
  - 可以**访问外网** （公网），并检查是否能够访问MgC和IoTDA服务的域名，具体需要检查的域名请查看[域名列表](https://support.huaweicloud.com/tg-mgc/mgc_03_0067.html#section1)**。**
  
  - 安全组的出方向规则中，需要包含**8883**端口。
  
  - 操作系统为：**CentOS 8.x**。
  
  - 推荐规格不小于**8U16G**。
   
- **创建并绑定EIP** ：ECS主机要实现访问外网，需要配置EIP（弹性公网IP）。如果主机已绑定EIP则跳过该操作无需重复绑定；如果未绑定EIP请参考[申请EIP](https://support.huaweicloud.com/usermanual-eip/eip_0008.html)和[将EIP绑定至ECS](https://support.huaweicloud.com/usermanual-eip/eip_0009.html)进行绑定。
  - 计费模式：建议选择**按需计费**。
  
  - 带宽大小：推荐**5 Mbit/s**。
   
 
 #### 安装MgC Agent（原Edge）并连接迁移中心
- **安装MgC Agent** ：在购买的ECS主机上，安装用于配合数据校验的MgC Agent，方法请参见[安装Linux版本的MgC Agent](https://support.huaweicloud.com/tg-mgc/mgc_04_0001.html)。
- **登录MgC Agent**：在浏览器中访问Linux主机的网卡IP地址+端口（27080），如：https://x.x.x.x:27080。输入华为云AK、SK登录MgC Agent控制台。
- **连接迁移中心** ：安装并登录成功后，将MgC Agent与迁移中心进行连接，连接方法请参考[连接迁移中心](https://support.huaweicloud.com/tg-mgc/mgc_03_0073.html)。
  ![](https://support.huaweicloud.com/usermanual-mgc/public_sys-resources/caution_3.0-zh-cn.png)
  - MgC Agent与迁移中心连接时，请将输入的华为云账号AK/SK保存为目的端凭证。
  
  - MgC Agent不具备自动重启功能，严禁在任务执行期间重启MgC Agent，以避免任务失败。
    
 
 #### 添加凭证
在MgC Agent上分别添加一条MaxCompute凭证（源端阿里云账号的AK/SK）和数据湖DLI凭证（目的端华为云账号的AK/SK），认证方式选择AK/SK ，添加方法请参考[添加资源凭证](https://support.huaweicloud.com/tg-mgc/mgc_03_0016.html)。
- MaxCompute凭证输入源端阿里云账号的AK/SK。 ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001992007365.png "点击放大")
  
- 数据湖DLI凭证输入目的端华为云账号的AK/SK。 ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001992127617.png "点击放大")
  
 
 #### 创建OBS桶并上传jar包
在华为云OBS创建一个存储桶，并将数据迁移过程中所依赖的 Java 文件（jar包）上传至该OBS桶。创建OBS桶的方法请参考[创建桶](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html#section1)。上传文件的方法请参考[上传对象](https://support.huaweicloud.com/usermanual-obs/obs_03_1002.html)。
数据迁移所依赖的jar包分别为：migration-dli-spark-1.0.0.jar、fastjson-1.2.54.jar、datasource.jar。这三个jar包是数据迁移过程中不可或缺的，三个jar包的用途和获取方法如下：
- **migration-dli-spark-1.0.0.jar**
  - 用途：用于创建spark会话并提交sql语句。
  
  - 获取方法：在[MgC Agent所部署主机]的"/opt/cloud/MgC-Agent/tools/plugins/collectors/bigdata-migration/dliSpark"路径下获取。
   
- **fastjson-1.2.54.jar** ：
  - 用途：用于处理JSON格式的数据交换。
  
  - 获取方法：在[MgC Agent所部署主机]的"/opt/cloud/MgC-Agent/tools/plugins/collectors/bigdata-migration/deltaSpark"路径下获取。
   
- **datasource.jar** ：
  - 用途：包含数据源的配置和连接逻辑，允许服务连接到不同的数据库或数据存储系统。
  
  - 获取方法：需要您根据需求自行获取并编译，方法请参考[Spark Connector](https://help.aliyun.com/zh/maxcompute/user-guide/spark-connector?spm=a2c4g.11186623.0.0.60e698791wk6Ke)。
   
 
 #### 购买弹性资源池并添加队列
1. 登录[DLI管理控制台](https://console.huaweicloud.com/dli/?#/main/pools)，在左侧导航栏单击"资源管理 \> 弹性资源池"，可进入弹性资源池管理页面。
2. 购买弹性资源池。 
   弹性资源池为DLI作业运行提供所需的计算资源（CPU和内存）。购买方法请参考[创建弹性资源池](https://support.huaweicloud.com/usermanual-dli/dli_01_0505.html#section1)。
   
   
3. 在弹性资源池中添加队列。 
   创建完弹性资源池后，需要为弹性资源池分别添加一条**通用队列** 和一条**SQL队列** ，用于后续作业的运行。添加方法请参考[添加队列](https://support.huaweicloud.com/usermanual-dli/dli_01_0505.html#section2)。
   
   
 
 #### 创建DLI增强型跨源连接
1. 登录[DLI管理控制台](https://console.huaweicloud.com/dli/?#/main/pools)，在左侧导航栏单击"资源管理 \> 弹性资源池"，可进入弹性资源池管理页面。
2. 单击弹性资源池名称前的![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001972596561.png)，在展开的信息中，获取该弹性资源池的网段。
3. 将弹性资源池的网段加入ECS安全组的入方向规则中。 
   1. 登录弹性云服务器控制台。
   
   2. 在弹性云服务器列表中，单击购买的Linux主机名称（用于安装MgC Agent的主机）。
   
   3. 选择**安全组** 页签，单击安全组的"配置规则"。
      ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001973149241.png "点击放大")
      
   
   4. 选择**入方向规则** ，单击"**添加规则** "。
      ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001945871058.png "点击放大")
      
   
   5. 设置入方向规则参数。
      - 优先级：设置为1。
      
      - 策略：选择"允许"。
      
      - 类型：选择"IPv4"。
      
      - 协议端口：选择"全部协议"。
      
      - 源地址：选择IP地址，并填写弹性资源池的网段。
       
   
   6. 单击"**确定**"完成安全组配置。
   
   
   
   
4. 在DLI管理控制台的左侧导航栏单击"**跨源管理**"，进入跨源管理页面。
5. 选择"增强型跨源"，单击"创建"，弹出创建连接窗口。 
   ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001972989489.png "点击放大")
   
   
6. 根据[表1]，配置增强型跨源连接信息。
   
   ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001972657805.png "点击放大")
    表1参数配置说明 
   | 参数    | 配置说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | 连接名称   | 用户自定义                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 弹性资源池 | 选择[购买的弹性资源池]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 虚拟私有云  | 选择[创建的虚拟私有云和子网]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | 子网      | 选择[创建的虚拟私有云和子网]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | 路由表   | 保持默认。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 主机信息   | 需要添加两条源端MaxCompute侧主机信息，填写内容和格式如下： **EndpointIP** **Endpoint**（中间有空格） **TunnelEndpointIP** **TunnelEndpoint**（中间有空格） 两条主机信息之间用回车进行隔开。举例： 118.178.xxx.xx service.cn-hangzhou.maxcompute.aliyun.com.vipgds.alibabadns.com 47.97.xxx.xx dt.cn-hangzhou.maxcompute.aliyun.com **EndpointIP** 和**TunnelEndpointIP**的获取方法：使用任一有公网IP的主机，分别对源端MaxCompute所在地域的Endpoint和Tunnel Endpoint执行ping指令，在回显中即可获取对应IP地址。 Endpoint和Tunnel Endpoint信息请查看[各地域Endpoint对照表](https://help.aliyun.com/zh/maxcompute/user-guide/endpoints?spm=a2c4g.11174283.0.i2#section-f2d-51y-5db)**。** |
      
   
   
7. 单击"确定"，创建增强型跨源连接。创建完成后，增强型跨源连接的连接状态显示"已激活"，代表该连接创建成功。
 
#### 添加并配置路由
- **添加路由**
  为[创建的DLI增强型跨源连接]添加**两条** 路由，方法请参考[添加路由](https://support.huaweicloud.com/usermanual-dli/dli_01_0014.html#section1)。路由IP与创建跨源连接时，配置的主机信息IP保持一致。
  
- **配置路由**
1. 登录虚拟私有云管理控制台。
2. 在左侧导航栏，选择"虚拟私有云 \> 路由表"，进入路由表列表页面。
3. 在路由表列表中，找到创建跨源连接时对应的路由表（即ECS所在VPC的路由表），单击路由表名称，进入路由表详情页面。
4. 单击"添加路由"，弹出添加路由窗口。 ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001972885473.png "点击放大")
   
5. 按照提示配置参数。需要添加两条路由，单击![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001972874481.png)，可以依次增加多条路由。
   - 目的地址类型：选择"IP地址"。
   
   - 目的地址：与创建跨源连接时，配置的主机信息IP保持一致。
   
   - 下一跳类型：选择"服务器实例"。
   
   - 下一跳：选择[购买的ECS]。
   
   
   ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001945602660.png "点击放大")
   
 
#### 配置SNAT转换规则
配置完SNAT转换规则后，如果ECS重启，则需要重新配置。
1. 登录[购买的ECS主机]。
2. 依次执行下列两条命令： 
   ```
   sysctl net.ipv4.ip_forward=1
   ```
   该命令用于启用 Linux 主机上的 IP 转发功能。
   ```
   iptables -t nat -A POSTROUTING -o eth0 -s {DLI弹性资源池所在网段} -j SNAT --to {ECS私网IP}
   ```
   设置iptables规则以进行网络地址转换。
   
   
 
#### 测试DLI队列与数据源的连通性
1. 登录DLI管理控制台，在左侧导航栏单击"资源管理 \> 队列管理"，可进入队列管理页面。
2. 找到为弹性资源池[添加的DLI队列]，单击操作列的"更多 \> 测试地址连通性"，弹出测试地址连通性窗口。
3. 参考窗口中的样例，依次输入MaxCompute侧的"Endpoint域名"、"Endpoint IP"、"Tunnel Endpoint域名"和"Tunnel Endpoint IP"进行四次连通性测试，端口建议输入443端口。 
   ![](https://support.huaweicloud.com/usermanual-mgc/zh-cn_image_0000001945867962.png "点击放大")
   
   
4. 单击"测试"。 
   如果测试地址可连通，页面上将提示地址可达。
   如果测试地址不可连通，页面上将提示地址不可达，请检查网络配置后重试。检查网络配置即检查所测试的VPC对等连接或跨源连接是否处于已激活状态。
   
   
 
#### 开通DLI服务Spark 3.3和jar程序访问元数据白名单
数据迁移需要使用DLI服务的**Spark 3.3** 特性和**jar程序访问DLI元数据**特性，请联系DLI服务的技术支持人员申请开通。
#### （可选）开通DLI服务Spark生命周期白名单
如果待迁移的元数据有生命周期表（即DDL带有LIFECYCLE字段），请联系DLI服务的技术支持人员申请开通Spark生命周期特性白名单。
#### （可选）开通100网段白名单
如果您是使用**专线**迁移方式进行数据迁移，需要提前向VPC服务申请开通"100.100.x.x"网段的白名单。
请提交工单到VPC服务，并提供以下信息进行开通：
- 华为云**账号名** 、目的端DLI服务所在Region的**项目ID** ：获取方法请参考[API凭证](https://support.huaweicloud.com/usermanual-ca/ca_01_0002.html)。
- DLI服务的**租户名** 以及租户的**项目ID**：请联系DLI服务的技术支持人员获取。
 
