更新时间:2024-12-28 GMT+08:00

准备工作

为了确保迁移过程的顺利进行,需要完成以下必要的准备工作。

华为账号准备

使用MgC之前,您需要拥有一个华为账号或一个可用于访问MgC的IAM用户,并获取账号/IAM用户的访问密钥(AK/SK)。获取方法请参考准备工作

阿里云访问密钥(AK/SK)准备

准备一组源端阿里云账号的Access Key(AK)和Secret Key(SK),获取方法请参考查看RAM用户的AccessKey信息

确保该AK/SK具备以下最小权限要求:

  • 拥有OSS服务的只读权限:AliyunReadOnlyAccess
  • 拥有MaxCompute服务的只读权限:AliyunMaxComputeReadOnlyAccess

配置权限的方法参考为RAM用户授权

(可选)如果迁移的元数据存在分区表,需要为迁移账号开通Information Schema权限,方法请参考RAM用户访问授权

创建迁移项目

在MgC控制台为本次迁移创建独立的项目,方法请参考项目管理

配置委托权限与服务授权

为了确保正常使用DLI的功能,需要配置一条包含DLI权限和OBS权限的委托权限。

  1. 登录华为云管理控制台。
  2. 单击右上方登录的用户名,在下拉列表中选择“统一身份认证”。
  3. 在左侧导航栏中,单击“委托”。
  4. 在“委托”页面,单击“创建委托”。

  5. 在“创建委托”页面,设置如下参数:

    • 委托名称:用户自定义,例如“dli_obs_agency_access”。
    • 委托类型:选择“云服务”。
    • 云服务:在下拉列表中选择“数据湖探索 DLI"
    • 持续时间:按实际需求选择。
    • 描述:非必选。

  6. 配置完委托的基本信息后,单击“下一步”,进入选择策略页签。
  7. 单击右上角的“新建策略”,参考步骤8.步骤9.,分别创建一条OBS策略和一条DLI策略。如果已创建的授权策略中有所需的权限策略,则无需创建,直接选择已有策略即可。
  8. 配置策略信息。

    1. 策略名称:用户自定义,例如:dli-obs-agency。
    2. 策略配置方式:选择“JSON视图”。
    3. 在策略内容中粘贴以下自定义策略。

      请替换“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"
                  ]
              }
          ]
      }

  9. 配置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"
                  ]
              }
          ]
      }

  10. OBS和DLI自定义策略创建完成后,单击“下一步”,返回委托授权页面。
  11. 勾选新建的OBS和DLI自定义策略,单击“下一步”,授权范围方案选择“所有资源”。
  12. 单击“确定”,完成授权。授权后需等待15-30分钟才可生效。
  13. 参考更新委托权限,将DLI委托权限进行更新。

创建虚拟私有云 VPC

购买ECS时,需要进行网络配置,可提前创建VPC和子网,方法请参考创建虚拟私有云和子网

ECS的VPC网段不能和DLI队列(弹性资源池)使用的网段冲突,DLI队列默认使用的网段为172.16.0.0/18。

购买ECS

  • 购买ECS:在与目的端DLI同一区域(Region)下购买一台Linux系统的ECS主机,购买方法请参考购买弹性云服务器。其中网络配置选择上一步创建的虚拟私有云和子网。该ECS主机还需要满足以下条件:
    • 可以访问外网(公网),并检查是否能够访问MgC和IoTDA服务的域名,具体需要检查的域名请查看域名列表
    • 安全组的出方向规则中,需要包含8883端口。
    • 操作系统为:CentOS 8.x
    • 推荐规格不小于8U16G
  • 创建并绑定EIP:ECS主机要实现访问外网,需要配置EIP(弹性公网IP)。如果主机已绑定EIP则跳过该操作无需重复绑定;如果未绑定EIP请参考申请EIP将EIP绑定至ECS进行绑定。
    • 计费模式:建议选择按需计费
    • 带宽大小:推荐5 Mbit/s

安装迁移工具Edge并连接迁移中心

  • 安装Edge工具:在购买的ECS主机上,安装用于配合数据校验的工具Edge,方法请参见安装Linux版本的Edge工具
  • 注册Edge用户:在浏览器中访问Linux主机的网卡IP地址+端口(27080),如:https://x.x.x.x:27080。首次访问后会进入注册页面,分别输入用户名、密码,确认密码无误后,单击《隐私政策声明》,仔细阅读后,勾选“我已阅读并同意”,最后单击“确认”即可完成注册。
  • 连接迁移中心:安装并注册成功后,将Edge与迁移中心进行连接,连接方法请参考连接迁移中心

迁移工具Edge不具备自动重启功能,严禁在任务执行期间重启Edge,以避免任务失败。

添加凭证

在迁移工具Edge上分别添加一条MaxCompute凭证(源端阿里云账号的AK/SK)和数据湖DLI凭证(目的端华为云账号的AK/SK),认证方式选择AK/SK ,添加方法请参考添加资源凭证

  • MaxCompute凭证输入源端阿里云账号的AK/SK。

  • 数据湖DLI凭证输入目的端华为云账号的AK/SK。

创建OBS桶并上传jar包

在华为云OBS创建一个存储桶,并将数据迁移过程中所依赖的 Java 文件(jar包)上传至该OBS桶。创建OBS桶的方法请参考创建桶。上传文件的方法请参考上传对象

数据迁移所依赖的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语句。
    • 获取方法:在迁移工具Edge所部署主机的“/opt/cloud/Edge/tools/plugins/collectors/bigdata-migration/dliSpark”路径下获取。
  • fastjson-1.2.54.jar
    • 用途:用于处理JSON格式的数据交换。
    • 获取方法:在迁移工具Edge所部署主机的“/opt/cloud/Edge/tools/plugins/collectors/bigdata-migration/deltaSpark”路径下获取。
  • datasource.jar
    • 用途:包含数据源的配置和连接逻辑,允许服务连接到不同的数据库或数据存储系统。
    • 获取方法:需要您根据需求自行获取并编译。

购买弹性资源池并添加队列

弹性资源池为DLI作业运行提供所需的计算资源(CPU和内存)。购买方法请参考创建弹性资源池

创建完弹性资源池后,需要为弹性资源池分别添加一条通用队列和一条SQL队列,用于后续作业的运行。添加方法请参考添加队列

创建DLI增强型跨源连接

  1. 登录DLI管理控制台,在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
  2. 单击弹性资源池名称前的,在展开的信息中,获取该弹性资源池的网段。
  3. 将弹性资源池的网段加入ECS安全组的入方向规则中。

    1. 登录弹性云服务器控制台。
    2. 在弹性云服务器列表中,单击购买的Linux主机名称(用于安装Edge的主机)。
    3. 选择安全组页签,单击安全组的“配置规则”。

    4. 选择入方向规则,单击“添加规则”。

    5. 设置入方向规则参数。
      • 优先级:设置为1。
      • 策略:选择“允许”。
      • 类型:选择“IPv4”。
      • 协议端口:选择“全部协议”。
      • 源地址:选择IP地址,并填写弹性资源池的网段。
    6. 单击“确定”完成安全组配置。

  4. 在DLI管理控制台的左侧导航栏单击“跨源管理”,进入跨源管理页面。
  5. 选择“增强型跨源”,单击“创建”,弹出创建连接窗口。

  6. 根据表1,配置增强型跨源连接信息。

    表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

    EndpointIPTunnelEndpointIP的获取方法:使用任一有公网IP的主机,分别对源端MaxCompute所在地域的Endpoint和Tunnel Endpoint执行ping指令,在回显中即可获取对应IP地址。

    Endpoint和Tunnel Endpoint信息请查看各地域Endpoint对照表

  7. 单击“确定”,创建增强型跨源连接。创建完成后,增强型跨源连接的连接状态显示“已激活”,代表该连接创建成功。

添加并配置路由

  1. 登录虚拟私有云管理控制台。
  2. 在左侧导航栏,选择“虚拟私有云 > 路由表”,进入路由表列表页面。
  3. 在路由表列表中,找到创建跨源连接时对应的路由表(即ECS所在VPC的路由表),单击路由表名称,进入路由表详情页面。
  4. 单击“添加路由”,弹出添加路由窗口。

  5. 按照提示配置参数。需要添加两条路由,单击,可以依次增加多条路由。
    • 目的地址类型:选择“IP地址”。
    • 目的地址:与创建跨源连接时,配置的主机信息IP保持一致。
    • 下一跳类型:选择“服务器实例”。
    • 下一跳:选择购买的ECS

配置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端口。

  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凭证
  • DLI服务的租户名以及租户的项目ID:请联系DLI服务的技术支持人员获取。