全部產品
Search
文件中心

MaxCompute:Spark訪問VPC執行個體

更新時間:Jul 11, 2024

本文為您介紹如何使用Spark on MaxCompute訪問阿里雲VPC內的使用者執行個體。

直接存取VPC

Spark on MaxCompute可以訪問阿里雲VPC內的Elastic Compute Service(Elastic Compute Service)、ApsaraDB for HBase(Hadoop Database)和雲關係型資料庫RDS(Relational Database Service)等執行個體,同時還可以訪問自訂私人網域名稱。

訪問VPC執行個體時,在spark-defaults.conf或者DataWorks的設定檔中添加spark.hadoop.odps.cupid.vpc.domain.list參數,表明需要訪問的一個或多個執行個體的網路情況。該參數值為JSON格式,配置時需要刪除參數中多行文本之間的空格和分行符號,合并JSON文本為一行。

訪問不同執行個體時,spark.hadoop.odps.cupid.vpc.domain.list參數取值請參見下文樣本。您需要將樣本中的RegionID、VPCID、執行個體網域名稱和連接埠等替換為實際使用情境下的值。地區的RegionID請參見專案空間操作

重要

需要添加100.104.0.0/16網段至所訪問的服務的白名單。

使用樣本如下。

  • 訪問MongoDB樣本

    訪問MongoDB時,spark.hadoop.odps.cupid.vpc.domain.list參數取值如下。該MongoDB有主備2個執行個體。

    {
      "regionId":"cn-beijing",
      "vpcs":[
        {
          "vpcId":"vpc-2zeaeq21mb1dmkqh0****",
          "zones":[
            {
              "urls":[
                {
                  "domain":"dds-2ze3230cfea08****.mongodb.rds.aliyuncs.com",
                  "port": 3717
                },
                {
                  "domain":"dds-2ze3230cfea08****.mongodb.rds.aliyuncs.com",
                  "port":3717
                }
              ]
            }
          ]
        }
      ]
    }

    合并樣本中JSON文本為一行的結果如下。

    {"regionId":"cn-beijing","vpcs":[{"vpcId":"vpc-2zeaeq21mb1dmkqh0****","zones":[{"urls":[{"domain":"dds-2ze3230cfea08****.mongodb.rds.aliyuncs.com","port": 3717},{"domain":"dds-2ze3230cfea08****.mongodb.rds.aliyuncs.com","port":3717}]}]}]}
  • 訪問RDS樣本

    訪問RDS時,spark.hadoop.odps.cupid.vpc.domain.list參數取值如下。

    {
      "regionId":"cn-beijing",
      "vpcs":[
        {
          "vpcId":"vpc-2zeaeq21mb1dmkqh0****",
          "zones":[
            {
              "urls":[
                {
                  "domain":"rm-2zem49k73c54z****.mysql.rds.aliyuncs.com",
                  "port": 3306
                }
              ]
            }
          ]
        }
      ]
    }

    合并樣本中JSON文本為一行的結果如下。

    
    {"regionId":"cn-beijing","vpcs":[{"vpcId":"vpc-2zeaeq21mb1dmkqh0****","zones":[{"urls":[{"domain":"rm-2zem49k73c54z****.mysql.rds.aliyuncs.com","port": 3306}]}]}]}
  • 訪問HBase樣本

    訪問HBase時,spark.hadoop.odps.cupid.vpc.domain.list參數取值如下。

    {
      "regionId":"cn-beijing",
      "vpcs":[
        {
          "vpcId":"vpc-2zeaeq21mb1dmkqh0exox",
          "zones":[
            {
              "urls":[
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":2181
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":16000
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":16020
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":2181
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":16000
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":16020
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":2181
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":16000
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com",
                  "port":16020
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-cor*-***.hbase.rds.aliyuncs.com",
                  "port":16020
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-cor*-***.hbase.rds.aliyuncs.com",
                  "port":16020
                },
                {
                  "domain":"hb-2zecxg2ltnpeg8me4-cor*-***.hbase.rds.aliyuncs.com",
                  "port":16020
                }
              ]
            }
          ]
        }
      ]
    }

    合并樣本中JSON文本為一行的結果如下。

    
    {"regionId":"cn-beijing","vpcs":[{"vpcId":"vpc-2zeaeq21mb1dmkqh0exox","zones":[{"urls":[{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":2181},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":16000},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":16020},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":2181},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":16000},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":16020},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":2181},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":16000},{"domain":"hb-2zecxg2ltnpeg8me4-master*-***.hbase.rds.aliyuncs.com","port":16020},{"domain":"hb-2zecxg2ltnpeg8me4-cor*-***.hbase.rds.aliyuncs.com","port":16020},{"domain":"hb-2zecxg2ltnpeg8me4-cor*-***.hbase.rds.aliyuncs.com","port":16020},{"domain":"hb-2zecxg2ltnpeg8me4-cor*-***.hbase.rds.aliyuncs.com","port":16020}]}]}]}
  • 訪問Redis樣本

    當訪問Redis時,spark.hadoop.odps.cupid.vpc.domain.list參數取值如下。

    {
      "regionId":"cn-beijing",
      "vpcs":[
        {
          "vpcId":"vpc-2zeaeq21mb1dmkqh0****",
          "zones":[
            {
              "urls":[
                {
                  "domain":"r-2zebda0d3c05****.redis.rds.aliyuncs.com",
                  "port":3717
                }
              ]
            }
          ]
        }
      ]
    }

    合并樣本中JSON文本為一行的結果如下。

    
    {"regionId":"cn-beijing","vpcs":[{"vpcId":"vpc-2zeaeq21mb1dmkqh0****","zones":[{"urls":[{"domain":"r-2zebda0d3c05****.redis.rds.aliyuncs.com","port":3717}]}]}]}
  • 訪問LogHub樣本

    訪問LogHub時,spark.hadoop.odps.cupid.vpc.domain.list參數取值如下。

    {
      "regionId":"cn-beijing",
      "vpcs":[
        {
          "zones":[
            {
              "urls":[
                {
                  "domain":"cn-beijing-intranet.log.aliyuncs.com",
                  "port":80
                }
              ]
            }
          ]
        }
      ]
    }

    合并樣本中JSON文本為一行的結果如下。

    
    {"regionId":"cn-beijing","vpcs":[{"zones":[{"urls":[{"domain":"cn-beijing-intranet.log.aliyuncs.com","port":80}]}]}]}

    domain請使用LogHub Endpoint的傳統網路或VPC網路服務入口,各Region對應的Endpoint請參見服務入口

  • 訪問DataHub樣本

    訪問DataHub時,spark.hadoop.odps.cupid.vpc.domain.list參數取值如下。

    {
      "regionId":"cn-beijing",
      "vpcs":[
        {
          "zones":[
            {
              "urls":[
                {
                  "domain":"dh-cn-beijing.aliyun-inc.com",
                  "port":80
                }
              ]
            }
          ]
        }
      ]
    }

    合并樣本中JSON文本為一行的結果如下。

    
    {"regionId":"cn-beijing","vpcs":[{"zones":[{"urls":[{"domain":"dh-cn-beijing.aliyun-inc.com","port":80}]}]}]}

    domain請使用DataHub Endpoint的傳統網路下的ECS Endpoint。

  • 訪問自訂網域名樣本

    假設您在VPC內自訂了網域名稱example.aliyundoc.com,Spark通過網域名稱和連接埠example.aliyundoc.com:80發起訪問。您在使用前需要完成以下配置:

    1. 在PrivateZone中將Zone關聯至VPC。

    2. 單擊一鍵授權,為MaxCompute賦予PrivateZone的唯讀許可權。

    3. 在Spark節點配置裡新增如下2個參數。

      spark.hadoop.odps.cupid.pvtz.rolearn=acs:ram::xxxxxxxxxxx:role/aliyunodpsdefaultrole 
      spark.hadoop.odps.cupid.vpc.usepvtz=true

      spark.hadoop.odps.cupid.pvtz.rolearn為使用者的ARN資訊,從RAM控制台可以擷取。

    4. 在Spark的設定檔中新增spark.hadoop.odps.cupid.vpc.domain.list參數,取值如下。

      {
        "regionId":"cn-beijing",
        "vpcs":[
          {
            "vpcId":"vpc-2zeaeq21mb1dmkqh0****",
            "zones":[
              {
                "urls":[
                  {
                    "domain":"example.aliyundoc.com",
                    "port":80
                  }
                ],
                "zoneId":"9b7ce89c6a6090e114e0f7c415ed****"
              }
            ]
          }
        ]
      }

      合并樣本中JSON文本為一行的結果如下。

      
      {"regionId":"cn-beijing","vpcs":[{"vpcId":"vpc-2zeaeq21mb1dmkqh0****","zones":[{"urls":[{"domain":"example.aliyundoc.com","port":80}],"zoneId":"9b7ce89c6a6090e114e0f7c415ed****"}]}]}
  • 訪問Apsara File Storage for HDFS樣本

    • 在Spark中使用Apsara File Storage for HDFS需要新增hdfs-site.xml,內容如下所示。

      <?xml version="1.0"?>
      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>dfs://DfsMountpointDomainName:10290</value>
          </property>
          <property>
              <name>fs.dfs.impl</name>
              <value>com.alibaba.dfs.DistributedFileSystem</value>
          </property>
          <property>
              <name>fs.AbstractFileSystem.dfs.impl</name>
              <value>com.alibaba.dfs.DFS</value>
          </property>
      </configuration>
    • 在Spark設定檔中新增spark.hadoop.odps.cupid.vpc.domain.list參數,取值如下。

      {
          "regionId": "cn-shanghai",
          "vpcs": [{
              "vpcId": "vpc-xxxxxx",
              "zones": [{
                  "urls": [{
                      "domain": "DfsMountpointDomainName",
                      "port": 10290
                  }]
              }]
          }]
      }

      合并樣本中JSON文本為一行的結果如下。

      
      {"regionId": "cn-shanghai","vpcs": [{"vpcId": "vpc-xxxxxx","zones": [{"urls": [{"domain": "DfsMountpointDomainName","port": 10290}]}]}]}

專用網路訪問VPC

相比直接存取VPC方式,ENI專線方式更加穩定,效能更好,且具備外網訪問能力。

使用該方式時,您需要注意:

  • ENI專線可以打通一個VPC,如果使用者作業需要同時訪問多個VPC,則可以將已經通過ENI專線打通的VPC與其他VPC之間再做打通即可。

  • Spark作業運行所在MaxCompute專案的阿里雲帳號的UID與目標VPC所屬的阿里雲帳號的UID必須一致,否則作業運行時會提示報錯資訊:You are not allowed to use this vpc - vpc owner and project owner must be the same person

建立專用網路串連操作,詳情請參考訪問VPC方案(專線直連)