通过MaxCompute Spark访问VPC网络中的目标服务时,默认情况下,MaxCompute与目标服务之间的网络不可达。需要开通网络连接以便访问VPC中的目标服务(例如指定IP或域名、RDS、HBase集群、Hadoop集群等)。
使用限制
账号限制
运行Spark作业时,其所在的MaxCompute项目与目标VPC必须归属于同一个阿里云主账号。换言之,项目所属主账号的UID必须与VPC所属主账号的UID一致,否则作业运行时将抛出如下错误:
"You are not allowed to use this vpc - vpc owner and project owner must be the same person"。本文操作步骤适用于打通一个VPC,如果用户作业需要同时访问多个VPC,则可以将已经通过ENI专线打通的VPC与其他VPC之间再做联通,详情咨询阿里云专有网络相关的技术支持。
操作步骤
详情参考访问VPC方案(专线直连)。
步骤一:账号及项目准备
开通MaxCompute与目标服务间的网络连接前,需要确认以下两个条件。
创建MaxCompute项目。在湖仓一体场景中,建议设置MaxCompute项目的数据类型为Hive兼容类型。
如果需要访问位于VPC网络中的目标服务,请确保VPC所有者账号、访问MaxCompute项目的阿里云账号,以及目标服务环境或集群的管理员账号是同一个主账号或同在一个主账号下。
步骤二:授权
对操作用户授权:为操作用户授予创建网络连接对象的权限。
授权用户需要是项目所有者(Project Owner),或具备租户级别的Super_Administrator或Admin角色的用户(详情请参见角色规划)。
授权过程可参见租户内对象权限一览表。
对MaxCompute授权:允许MaxCompute在VPC内创建ENI网卡,以实现MaxCompute到用户VPC的连通。用户只要在阿里云账号登录状态下单击授权即可。
步骤三:配置安全组规则
在VPC实例下,创建独立安全组用于控制MaxCompute对VPC网络内的各种资源的访问权限。
推荐新建一个普通安全组,尽量避免使用其他类型的安全组或正在被使用的安全组。MaxCompute会在当前用户的专有网络VPC下创建ENI网卡,用于访问用户服务。
设置该安全组的规则出方向,控制MaxCompute作业(ENI网卡)可以访问的目标地址(如无特殊需要,出方向保持默认);
入ENI的流量为回包,所以入方向的全部流量都打开。
登录专有网络管理控制台。
在左侧导航栏选择专有网络,在左上角选择地域。
在专有网络页面,单击目标专有网络实例ID/名称。
在专有网络详情页,选择资源管理页签。
在资源管理页签的专有网络资源区域,将鼠标悬停至安全组数值上方,单击添加。
安全组类型选择普通安全组。
普通安全组出口默认开启。企业安全组出口默认关闭,会导致无法访问VPC内的任何服务。
选择与连通服务相同的VPC网络。
更多创建安全组操作,请参见创建安全组。
配置安全组支持MaxCompute网络
单击目标安全组操作列的管理规则。
在访问规则区域,选择入方向页签。单击目标规则对应的操作列的编辑。按照如下配置开放入方向的所有流量。
授权策略选择允许。
优先级为1。
协议选择所有流量。
访问来源加入VPC对应的网段或者被访问的云服务所在VSW的网段。
访问目的默认为全部(-1/-1)。
配置方法详情请参见安全组应用指导和案例。
在HBase场景,如果HBase无法对某个安全组开放网络权限,可以将MaxCompute创建的ENI IP添加至白名单。由于ENI IP可能会发生变化,推荐添加VPC实例对应交换机的IP网段至白名单。登录ECS管理控制台,在左侧导航栏,单击弹性网卡,获取ENI IP。
MaxCompute在后续的创建网络通路过程中会默认自动根据带宽需求创建2个ENI,不收取费用,由MaxCompute创建的ENI将位于这个安全组内。
步骤四:创建MaxCompute与目标VPC网络间的网络连接
阿里云账号(主账号)或拥有MaxCompute租户级别的Super_Administrator或Admin角色的RAM用户(详情请参见MaxCompute租户级别角色),可以在MaxCompute控制台创建MaxCompute与VPC网络之间的连接。操作如下:
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择 。
在网络连接页面,单击新增网络连接。
在弹出的新增网络连接对话框,根据界面提示文案配置项目信息,单击确定。首次新增需先前往授权,允许MaxCompute平台代理申请网卡,否则连接将创建失败。
在弹出的新增网络连接对话框,根据界面提示文案配置项目信息,单击确定。首次新增需先前往授权,允许MaxCompute平台代理申请网卡,否则连接将创建失败。
配置参数如下:
参数
是否必填
描述
连接名称:
必填
自定义连接名称。格式如下:
字母开头。
只能包含字母、下划线(_)和数字。
长度在1-63个字符。
类型:
必填
默认为直通连接(passthrough)。
直通连接(passthrough)对应的即是专有网络连接方案。
区域:
必填
系统根据左上角选择的地域自动生成。详情请参见开通地域。
已选择VPC:
必填
专有网络VPC是云上安全隔离的虚拟网络环境,提供了类似于传统数据中心的安全和可配置的私有网络空间。
交换机:
必填
交换机用来划分子网,同一VPC内的不同交换机之间内网互通。通过在多个不同可用区的交换机中同时部署云产品资源,可以避免应用受到单一可用区故障的影响。
安全组:
必填
安全组扮演云上虚拟防火墙的角色,通过管理安全组和规则,可提供精细化的网络安全隔离与访问控制。
安全组ID,如需创建安全组,请参考创建安全组。
步骤五:用户作业配置
使用Spark访问VPC网络时,在完成上述开通专线网络连接操作后,需要在spark-defaults.conf或DataWorks配置项中增加以下配置项:
spark.hadoop.odps.cupid.eni.enable = true
# 配置格式为region:vpcid,vpcid为开通专线直连时使用的目标vpcid
spark.hadoop.odps.cupid.eni.info = regionid:vpc-**********
# 例如:cn-hangzhou:vpc-bp1wth********04ug3s