MaxCompute支持通过外部表、UDF及湖仓一体等功能访问外网或VPC网络,需要先开通MaxCompute和目标IP或服务,如Hbase、RDS、Hadoop集群等连通目标的网络连接。本文主要为您介绍网络开通流程,其中部分环节需要通过工单联系技术支持人员处理。

网络结构

MaxCompute、HBase、RDS及Hadoop集群等目标数据源的网络结构如下。 网络架构
类别 描述
MaxCompute域 MaxCompute是用户使用的SaaS模式云数据仓库,本身也处在一个网络环境中,您可以通过外部表、UDF或湖仓一体等功能访问外部网络。
网络连接域 MaxCompute访问目标IP或网络有两种方案:
  • 服务映射方案:包含外网服务映射和VPC服务映射,通过特定服务IP或域名、端口访问目标IP或网络,详情请参见服务映射方案
  • 专有网络连接方案:通过创建VPC网络专线,并授权的方式访问目标IP或网络,详情请参见专有网络连接方案
目标域
  • 外网IP或域名是用户需要访问的网络IP或域名地址。
  • VPC是用户在阿里云上开通的虚拟专用网络,内部为ECS或RDS的IP或域名、Hbase或Hadoop等服务、托管集群的网络IP或域名。弹性网卡ENI(Elastic Network Interface)是一种可以绑定到专有网络VPC类型ECS实例上的虚拟网卡。通过弹性网卡,可以实现精细化的网络管理。
  • OSS、OTS等阿里云服务也是MaxCompute可以访问的目标。这些服务的网络已经与MaxCompute打通,可以直接连通使用。

前提条件

在执行网络开通操作前,请确认已满足如下条件:
  • 已获取待开通的外网、RDS、HBase集群或Hadoop集群(云上自建或EMR)的相关信息。例如HiveMetaStore的IP和端口,HDFS NameNode的IP和端口。
  • 已创建MaxCompute项目。如果已有MaxCompute项目,直接使用即可,不必再创建新项目。创建的MaxCompute项目所在区域必须和RDS、Hbase集群、Hadoop集群所使用的VPC网络处于相同区域。如果MaxCompute项目用于和Hadoop体系或数据湖开源引擎连通,开通时建议设置项目的数据类型为Hive兼容类型。
  • 如果需要打通VPC网络,请提前获取VPC所有者账号。同时还需要获取访问MaxComoute项目的阿里云账号,以及目标系统或集群的管理员账号。

开通区域

服务映射方案和专有网络方案已在部分区域开通,详情如下。任意一种网络方案都未开通的区域,无法支持打通网络。
方案类型 支持区域 支持打通的目标
外网服务映射方案 中国站所有区域 外网IP或域名
VPC服务映射方案
  • 华北2(北京)
  • 华东2(上海)
VPC IP或域名
专有网络连接方案
  • 华北2(北京)
  • 华东2(上海)
  • 华北3(张家口)
  • 华东1(杭州)
  • VPC IP或域名
  • RDS
  • HBase集群
  • Hadoop集群

服务映射方案

服务映射方案为云上预置网络资源,MaxCompute可以根据配置的目标IP在作业运行时自动打通网络,连接映射目标。

服务映射方案支持访问外网或VPC中的单个IP目标或域名。

  • 外网服务映射
    MaxCompute访问外网需要按照如下步骤进行操作:
    1. 提工单,申请配置外网的IP或域名、端口的白名单。

      工单中需要填写目标IP或域名、端口,如果需要访问多个域名或端口,请使用英文逗号(,)分隔。例如访问阿里云域名,需要提供的网络配置信息为www.aliyun.com:80;访问高德服务,需要提供的网络配置信息为restapi.amap.com:443,restapi.amap.com:80

    2. 确认工单处理完毕后,即可在MaxCompute客户端运行作业。命令示例如下:
      --设置白名单中已配置的外网IP或域名、端口。即下方SQL语句要访问的外网。
      set odps.internet.access.list=<ip_address:port丨realm_name:port>; 
      select <UDF_name>("<http://ip_address丨realm_name>");
      • ip_address:port丨realm_name:port:必填。目标外网IP或域名、端口。
      • UDF_name:访问外网IP或域名的UDF。UDF创建示例如下:
        package com.aliyun.odps.test.udf;
        import com.aliyun.odps.udf.UDF;
        import java.io.BufferedReader;
        import java.io.IOException;
        import java.io.InputStreamReader;
        import java.net.URL;
        public class <UDF_name> extends UDF {
          public String evaluate(String urlStr) throws IOException {
            URL url = new URL(urlStr);
            StringBuilder sb = new StringBuilder();
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()))) {
              String line;
              while ((line = reader.readLine()) != null) {
                sb.append(line).append('\n');
              }
            }
            return sb.toString();
          }
        }
      基于UDF示例,命令示例如下:
      set odps.internet.access.list=www.aliyun.com:80;
      SELECT url_fetch("http://www.aliyun.com");
  • VPC服务映射
    MaxCompute访问VPC网络需要按照如下步骤进行操作:
    1. 在目标VPC网络中设置允许MaxCompute访问。您需要在VPC的安全组中添加MaxCompute的网段白名单,允许MaxCompute网段的IP访问VPC服务。
      说明 仅VPC服务映射方案需要配置。
      区域 安全组IP网段
      华东2(上海) 100.104.49.64/26、100.104.212.192/26、100.104.244.0/26、100.104.94.0/26
      华北2(北京) 100.104.218.0/26、100.104.120.0/26、100.104.156.192/26、100.104.149.0/26、100.104.49.64/26、100.104.212.192/26、100.104.244.0/26、100.104.94.0/26
    2. 登录MaxCompute客户端,设置目标VPC网络。命令语法如下:
      --将目标VPC网络添加至MaxCompute的白名单。
      setproject odps.security.outbound.destination=<RegionID>_<VPC实例ID>[*];  
      • RegionID:必填。VPC网络所在的区域ID。详情请参见获取RegionID及VPC ID
      • VPC实例ID:必填。VPC实例ID。
      • [*]:可选。通配符,表示VPC网络下的所有IP和端口都加入MaxCompute白名单。
      例如需要访问的VPC ID为 vpc-bp1e4p7feyvwt103j****,所在区域为 华东2(上海),VPC内的网络IP和端口为 192.0.2.0:80,将VPC内的所有IP和端口都加入白名单。命令示例如下:
      setproject odps.security.outbound.destination=cn-shanghai_vpc-bp1e4p7feyvwt103j****[*];
    3. 在MaxCompute客户端提交SQL,通过UDF访问VPC网络中的目标IP。

      例如访问上一步中添加的VPC网络IP,命令示例如下:

      --指定要访问的VPC ID。
      set odps.vpc.id=vpc-bp1e4p7feyvwt103j****; 
      --指定要访问的VPC网络IP和端口号。
      set odps.vpc.access.ips=192.0.2.0:80; 
      --使用UDF访问目标VPC网络。     
      SELECT url_fetch("http://192.0.2.0:80");   

专有网络连接方案

专有网络连接方案(VPC专线方案)需要选择网络专线,并经过授权才能让MaxCompute访问位于VPC内的服务。这些权限包括允许MaxCompute从用户VPC的安全组内创建并绑定ENI弹性网卡,以及对MaxCompute暴露必要的VPC中的服务,例如RDS、Hbase集群和Hadoop集群中的服务(主要是HiveMetaStore和HDFS)。专有网络连接方案可以打通目标VPC中的多个IP或网段。

通过专有网络连接方案开通网络的流程如下:

  1. 通过RAM授权,支持MaxCompute在用户VPC服务内创建ENI网卡,实现MaxCompute与用户VPC服务间的连接。您需要使用VPC所有者账号(湖仓一体场景中,MaxCompute项目也必须由这个账号创建),在登录阿里云状态下单击授权,确认后即可完成授权。
  2. 登录专有网络管理控制台,单击目标VPC实例名称。查看VPC实例页面的专有网络资源区域的安全组。VPC实例
  3. 单击安全组右侧添加,为MaxCompute创建独立安全组,用于控制MaxCompute在VPC中的安全访问。记录安全组ID,用于提交MaxCompute工单申请开通VPC访问权限。新建安全组需要选择与连通服务相同的VPC网络。操作详情请参见创建安全组

    添加安全组

    添加

    配置安全组

    配置安全组
    创建独立安全组用于控制MaxCompute对VPC网络内的各种资源的访问权限。由MaxCompute创建的ENI网卡将位于这个安全组内统一管理。MaxCompute在后续通过工单创建网络通路过程中会根据带宽需求创建2个或更多ENI实例,ENI实例在申请信息提交的安全组中。
    说明
    • 安全组为普通安全组,不是企业安全组。普通安全组的出口是默认开启的。企业安全组的出口是默认关闭的,会导致访问不了任何用户VPC内的任何服务。
    • 由MaxCompute创建的ENI网卡将位于这个安全组内统一管理,MaxCompute在后续的创建网络通路过程中会根据带宽需求创建2个或更多ENI实例。如果用户的HBase无法对某个安全组开放网络权限,MaxCompute技术服务团队开通后,开放MaxCompute对应的弹性网卡IP即可。但是MaxCompute配置变更时,弹性网卡IP可能会发生变化,所以开放交换机的网段IP比较方便。
  4. 提工单,由MaxCompute技术服务团队创建网络通路。您需要提供如下信息并等待MaxCompute技术服务团队完成配置:
    • 可用区ID:RegionID。请根据VPC服务所在区域获取RegionID,请参见RegionID
    • 专有网络ID:VPC实例ID。EMR、HBASE场景下,您可以在对应控制台的网络信息处获取该信息。VPC实例
    • 交换机ID:EMR、HBASE场景下,您可以在对应控制台的网络信息处获取该信息。获取ID

      您也可以在交换机列表页面,查看交换机内的实例确认交换机ID。

      交换机列表

      交换机列表

      通过实例确认交换机ID

      查看实例
    • 安全组ID:步骤3中创建的安全组。查看安全组
    • 主账号ID:您可以在阿里云控制台个人信息中获取。个人信息
  5. 配置目标集群防火墙或安全组。
    • 配置Hadoop集群防火墙或安全组
      MaxCompute通过ENI的安全组来访问Hadoop集群,因此也需要Hadoop集群的安全组或防火墙对ENI所在安全组的入方向开放必要的端口:
      • 操作Hadoop集群所在安全组的入方向访问规则。
      • 授权对象限定在ENI所在的安全组。
      • HiveMetaStore端口,通常是9083。
      • HDFS NameNode端口,通常是8020。
      • HDFS DataNode端口,通常是50010。
      配置防火墙或安全组
    • 配置HBase集群防火墙或安全组。登录HBase管理控制台,将为MaxCompute创建的安全组加入Hbase访问控制安全组中。

      HBase设置白名单和安全组的操作,请参见设置白名单和安全组

      Hbase集群列表

      Hbase集群页面

      配置安全组

      添加安全组
      说明 如果不允许添加安全组,添加MaxCompute创建的ENI网卡IP。
    • 配置RDS安全组。登录RDS管理控制台,将为MaxCompute创建的安全组或弹性网卡IP加入RDS访问控制安全组中。
      说明 MaxCompute配置变更时,弹性网卡IP可能发生变化,所以开放交换机ID的网段IP比较方便。
      RDS设置白名单等安全策略的操作,请参见 访问控制RDS安全组
  6. 网络打通后,可以创建RDS外部表、HBase外部表访问目标网络。详情请参见: