09. VPC Access文档说明 - aliyun/MaxCompute-Spark GitHub Wiki
快速导航
- VPC访问说明
- Case1.访问MongoDB
- Case2.访问RDS
- Case3.访问HBase
- Case4.访问Redis
- Case5.访问Loghub
- Case6.访问Datahub
- Case7.访问自定义域名
- Case8.访问文件存储HDFS
Spark on MaxCompute可以访问位于aliyun VPC内的用户实例,包括但不限于
ECS, RDS, HBase, Redis, MongoDB, SLB...
还可以访问用户的自定义私有域名。
-
需要添加spark.hadoop.odps.cupid.vpc.domain.list配置,该配置描述了需要访问的一个或多个实例的网络情况。配置值为json格式,注意,需要把json压缩成一行。以下给出了若干示例,把regionId, vpcId, 实例域名,端口等替换成真实值即可。
-
在要访问的服务中添加ip白名单,允许100.104.0.0/16网段的访问
注意: 只能配置访问本Region下面vpc的服务,可以同时和多个vpc打通,可以跨region访问oss。必须要将配置压缩为一行,并且配置在spark-defaults.conf或dataworks的配置项中,而不能写在代码中!!!
以下是一个访问mongoDB的例子,该mongo有主备两个实例{
"regionId": "cn-beijing",
"vpcs": [{
"vpcId": "vpc-2zeaeq21mb1dmkqh0exox",
"zones": [{
"urls": [{
"domain": "dds-2ze3230cfea08be41.mongodb.rds.aliyuncs.com",
"port": 3717
},
{
"domain": "dds-2ze3230cfea08be42.mongodb.rds.aliyuncs.com",
"port": 3717
}
]
}]
}, {
"zones": [{
"urls": [{
"domain": "xxxxx.oss-cn-hangzhou-internal.aliyuncs.com",
"port": 80
}]
}]
}]
}
{
"regionId":"cn-beijing",
"vpcs":[
{
"vpcId":"vpc-2zeaeq21mb1dmkqh0exox",
"zones":[
{
"urls":[
{
"domain":"rm-2zem49k73c54z7lu3.mysql.rds.aliyuncs.com",
"port": 3306
}
]
}
]
}
]
}
{
"regionId":"cn-beijing",
"vpcs":[
{
"vpcId":"vpc-2zeaeq21mb1dmkqh0exox",
"zones":[
{
"urls":[
{
"domain":"hb-2zecxg2ltnpeg8me4-master1-001.hbase.rds.aliyuncs.com",
"port":2181
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master1-001.hbase.rds.aliyuncs.com",
"port":16000
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master1-001.hbase.rds.aliyuncs.com",
"port":16020
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master2-001.hbase.rds.aliyuncs.com",
"port":2181
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master2-001.hbase.rds.aliyuncs.com",
"port":16000
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master2-001.hbase.rds.aliyuncs.com",
"port":16020
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master3-001.hbase.rds.aliyuncs.com",
"port":2181
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master3-001.hbase.rds.aliyuncs.com",
"port":16000
},
{
"domain":"hb-2zecxg2ltnpeg8me4-master3-001.hbase.rds.aliyuncs.com",
"port":16020
},
{
"domain":"hb-2zecxg2ltnpeg8me4-core-001.hbase.rds.aliyuncs.com",
"port":16020
},
{
"domain":"hb-2zecxg2ltnpeg8me4-core-002.hbase.rds.aliyuncs.com",
"port":16020
},
{
"domain":"hb-2zecxg2ltnpeg8me4-core-003.hbase.rds.aliyuncs.com",
"port":16020
}
]
}
]
}
]
}
{
"regionId":"cn-beijing",
"vpcs":[
{
"vpcId":"vpc-2zeaeq21mb1dmkqh0exox",
"zones":[
{
"urls":[
{
"domain":"r-2zebda0d3c05c1a4.redis.rds.aliyuncs.com",
"port":3717
}
]
}
]
}
]
}
domain请使用loghub endpoint的经典/VPC网络服务入口,各region对应的endpoint参考 此文档。示例如下:
{
"regionId":"cn-beijing",
"vpcs":[
{
"zones":[
{
"urls":[
{
"domain":"cn-beijing-intranet.log.aliyuncs.com",
"port":80
}
]
}
]
}
]
}
domain请使用datahub endpoint的 经典网络ECS Endpoint,各region对应的endpoint参考此文档。示例如下:
{
"regionId":"cn-beijing",
"vpcs":[
{
"zones":[
{
"urls":[
{
"domain":"dh-cn-beijing.aliyun-inc.com",
"port":80
}
]
}
]
}
]
}
a.b.com
并且想在spark中通过域名+端口来发起访问
a.b.com:80
在配置spark.hadoop.odps.cupid.vpc.domain.list之前,用户需要做两件事
1.在PrivateZone中填写域名到ip的映射,如下图:
2.给MaxCompute赋权只读PrivateZone。一键授权
3.额外加两个参数
spark.hadoop.odps.cupid.pvtz.rolearn=acs:ram::xxxxxxxxxxx:role/aliyunodpsdefaultrole
spark.hadoop.odps.cupid.vpc.usepvtz=true
其中spark.hadoop.odps.cupid.pvtz.rolearn从 RAM控制台 获取,截图如下:
domain.list的配置示例如下
{
"regionId":"cn-beijing",
"vpcs":[
{
"vpcId":"vpc-2zeaeq21mb1dmkqh0exox",
"zones":[
{
"urls":[
{
"domain":"a.b.com",
"port":80
}
],
"zoneId":"9b7ce89c6a6090e114e0f7c415ed9fef"
}
]
}
]
}
其中json中多传入了zoneId,值在PrivateZone控制台获取,截图如下:
文件存储HDFS产品的使用可以参考官方文档: https://help.aliyun.com/document_detail/101333.html 在spark中使用只需要新增一个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的配置,注意,需要将namenode和datanode均添加进来,内容的json如下(配置时需要将json内容压缩到一行),
{
"regionId": "cn-shanghai",
"vpcs": [{
"vpcId": "vpc-xxxxxx",
"zones": [{
"urls": [{
"domain": "DfsMountpointDomainName",
"port": 10290
}]
}]
}]
}