准备工作
为了确保迁移过程的顺利进行,需要完成以下必要的准备工作。
华为账号准备
使用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用户访问授权。
配置委托权限与服务授权
为了确保正常使用DLI的功能,需要配置一条包含DLI权限和OBS权限的委托权限。
- 登录华为云管理控制台。
- 单击右上方登录的用户名,在下拉列表中选择“统一身份认证”。
- 在左侧导航栏中,单击“委托”。
- 在“委托”页面,单击“创建委托”。
- 在“创建委托”页面,设置如下参数:
- 委托名称:用户自定义,例如“dli_obs_agency_access”。
- 委托类型:选择“云服务”。
- 云服务:在下拉列表中选择“数据湖探索 DLI"。
- 持续时间:按实际需求选择。
- 描述:非必选。
- 配置完委托的基本信息后,单击“下一步”,进入选择策略页签。
- 单击右上角的“新建策略”,参考步骤8.和步骤9.,分别创建一条OBS策略和一条DLI策略。如果已创建的授权策略中有所需的权限策略,则无需创建,直接选择已有策略即可。
- 配置策略信息。
- 策略名称:用户自定义,例如:dli-obs-agency。
- 策略配置方式:选择“JSON视图”。
- 在策略内容中粘贴以下自定义策略。
请替换“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" ] } ] }
- 配置DLI策略信息。
- 策略名称:用户自定义,例如:dli-agency。
- 策略配置方式:选择“JSON视图”。
- 在策略内容中粘贴以下自定义策略。
{ "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" ] } ] }
- OBS和DLI自定义策略创建完成后,单击“下一步”,返回委托授权页面。
- 勾选新建的OBS和DLI自定义策略,单击“下一步”,授权范围方案选择“所有资源”。
- 单击“确定”,完成授权。授权后需等待15-30分钟才可生效。
- 参考更新委托权限,将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 ,添加方法请参考添加资源凭证。
创建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:
- 用途:包含数据源的配置和连接逻辑,允许服务连接到不同的数据库或数据存储系统。
- 获取方法:需要您根据需求自行获取并编译,方法请参考Spark Connector。
购买弹性资源池并添加队列
弹性资源池为DLI作业运行提供所需的计算资源(CPU和内存)。购买方法请参考创建弹性资源池。
创建完弹性资源池后,需要为弹性资源池分别添加一条通用队列和一条SQL队列,用于后续作业的运行。添加方法请参考添加队列。
创建DLI增强型跨源连接
- 登录DLI管理控制台,在左侧导航栏单击“资源管理 > 弹性资源池”,可进入弹性资源池管理页面。
- 单击弹性资源池名称前的,在展开的信息中,获取该弹性资源池的网段。
- 将弹性资源池的网段加入ECS安全组的入方向规则中。
- 登录弹性云服务器控制台。
- 在弹性云服务器列表中,单击购买的Linux主机名称(用于安装Edge的主机)。
- 选择安全组页签,单击安全组的“配置规则”。
- 选择入方向规则,单击“添加规则”。
- 设置入方向规则参数。
- 优先级:设置为1。
- 策略:选择“允许”。
- 类型:选择“IPv4”。
- 协议端口:选择“全部协议”。
- 源地址:选择IP地址,并填写弹性资源池的网段。
- 单击“确定”完成安全组配置。
- 在DLI管理控制台的左侧导航栏单击“跨源管理”,进入跨源管理页面。
- 选择“增强型跨源”,单击“创建”,弹出创建连接窗口。
- 根据表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
EndpointIP和TunnelEndpointIP的获取方法:使用任一有公网IP的主机,分别对源端MaxCompute所在地域的Endpoint和Tunnel Endpoint执行ping指令,在回显中即可获取对应IP地址。
Endpoint和Tunnel Endpoint信息请查看各地域Endpoint对照表。
- 单击“确定”,创建增强型跨源连接。创建完成后,增强型跨源连接的连接状态显示“已激活”,代表该连接创建成功。
添加并配置路由
- 添加路由
为创建的DLI增强型跨源连接添加两条路由,方法请参考添加路由。路由IP与创建跨源连接时,配置的主机信息IP保持一致。
- 配置路由
- 登录虚拟私有云管理控制台。
- 在左侧导航栏,选择“虚拟私有云 > 路由表”,进入路由表列表页面。
- 在路由表列表中,找到创建跨源连接时对应的路由表(即ECS所在VPC的路由表),单击路由表名称,进入路由表详情页面。
- 单击“添加路由”,弹出添加路由窗口。
- 按照提示配置参数。需要添加两条路由,单击,可以依次增加多条路由。
- 目的地址类型:选择“IP地址”。
- 目的地址:与创建跨源连接时,配置的主机信息IP保持一致。
- 下一跳类型:选择“服务器实例”。
- 下一跳:选择购买的ECS。
配置SNAT转换规则
配置完SNAT转换规则后,如果ECS重启,则需要重新配置。
- 登录购买的ECS主机。
- 依次执行下列两条命令:
sysctl net.ipv4.ip_forward=1
该命令用于启用 Linux 主机上的 IP 转发功能。
iptables -t nat -A POSTROUTING -o eth0 -s {DLI弹性资源池所在网段} -j SNAT --to {ECS私网IP}
设置iptables规则以进行网络地址转换。
测试DLI队列与数据源的连通性
- 登录DLI管理控制台,在左侧导航栏单击“资源管理 > 队列管理”,可进入队列管理页面。
- 找到为弹性资源池添加的DLI队列,单击操作列的“更多 > 测试地址连通性”,弹出测试地址连通性窗口。
- 参考窗口中的样例,依次输入MaxCompute侧的“Endpoint域名”、“Endpoint IP”、“Tunnel Endpoint域名”和“Tunnel Endpoint IP”进行四次连通性测试,端口建议输入443端口。
- 单击“测试”。
如果测试地址可连通,页面上将提示地址可达。
如果测试地址不可连通,页面上将提示地址不可达,请检查网络配置后重试。检查网络配置即检查所测试的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服务的技术支持人员获取。