EMR Serverless 默认将您的作业托管在 EMR 服务 VPC 下运行,默认与您账户下的 VPC 网络不互通。本文将介绍如何在任务级别,通过设置参数的方式,实现与您的 VPC 内网络互通(下文简称跨 VPC)。
如果用户任务需要访问 Mysql、Kafka 等其他资源,则需要设置跨 VPC 参数。
说明
访问 TOS 或 LAS 表不需要设置跨 VPC 参数。
说明
EMR Serverless 支持在EMR Serverless 控制台 > 队列详情 > 网络配置 页面设置队列级别的网络。
在任务中通过 set 命令设置参数(或通过 sdk conf 传入),即可实现跨 VPC 网络打通,driver&executor 等每个 pod 都会绑定一个辅助网卡,消耗一个子网 IP。
set serverless.cross.vpc.access.enabled=true
set serverless.cross.vpc.access.enabled = true; set serverless.cross.vpc.driver.only.enabled = true
在跨 VPC 的基础上,通过设置 serverless.cross.vpc.dns.resolve.enabled = true,来实现 VPC 下的私网域名解析。
set serverless.cross.vpc.access.enabled = true; set serverless.cross.vpc.dns.resolve.enabled = true; select 1;
在跨 VPC 和域名解析的基础上,EMR Serverless 还支持自定义搜索域,实现自动域名补全。
下面以通过域名访问 ECS 为例:
serverless.cross.vpc.dns.search.domain = test-ziwen.cn-beijing;。set serverless.cross.vpc.access.enabled = true; set serverless.cross.vpc.dns.resolve.enabled = true; set serverless.cross.vpc.dns.search.domain = test-ziwen.cn-beijing;
即可实现短域名自动补全:
EMR Serverless 还支持自定义 DNS 解析规则,用户可以设置 IP 与域名一对一的域名解析规则。
通过设置serverless.cross.vpc.dns.alias.${domain} 即可实现。
例如在参数中设置:serverless.cross.vpc.dns.alias.ziwen = 192.168.1.9,即可在域名解析规则中插入:ziwen 192.168.1.9 这样一条规则:
set serverless.cross.vpc.access.enabled = true; set serverless.cross.vpc.dns.alias.ziwen = 192.168.1.9;
实现自定义 DNS 解析:
说明
本章节均为白名单功能,如有需要请通过 提工单 的方式,联系火山引擎技术支持人员。。
set serverless.cross.vpc.access.enabled = true; set serverless.cross.vpc.accountId = xxxxxx; set serverless.cross.vpc.vpc.id = vpc-xxxxx; set serverless.cross.vpc.subnet.ids = subnet-xxxx; set serverless.cross.vpc.security.group.id = sg-xxxxx;
set serverless.cross.vpc.access.enabled=true set serverless.cross.vpc.driver.only.enabled = true set serverless.cross.vpc.accountId = xxxxxx; set serverless.cross.vpc.vpc.id = vpc-xxxxx; set serverless.cross.vpc.subnet.ids = subnet-xxxx; set serverless.cross.vpc.security.group.id = sg-xxxxx;
EMR Serverless 支持访问 EMR on ECS 上独立的 HiveMetaStore,方式如下:
hive.metastore.uri的参数值。set serverless.cross.vpc.access.enabled = true; set serverless.cross.vpc.accountId = 2100075559; set serverless.cross.vpc.vpc.id = vpc-rrvu7a8xdtz4v0x591w1cfh; set serverless.cross.vpc.subnet.id = subnet-13f498o7sby803n6nu52cuy63; set serverless.cross.vpc.security.group.id = sg-rrvu7g60pzwgv0x58iryzbp; -- 开启DNS解析 set serverless.cross.vpc.dns.resolve.enabled = true; -- 在非LAS Catalog URI 下关闭默认LAS Catalog鉴权 set spark.sql.serverless.lf.auth.enabled = false; -- 设置为开源HMS读取方式 set spark.hadoop.hive.hms.client.is.public.cloud = false; -- 设置hms uri set spark.hadoop.hive.metastore.uris = thrift://master-1-1.emr-d4xxx:9083; show databases;
KEY | 含义 | 示例 |
|---|---|---|
serverless.cross.vpc.access.enabled | 是否开启跨 VPC | true,默认为false |
serverless.cross.vpc.accountId | 目标 VPC 所归属租户的 ID | 210000123 说明
|
serverless.cross.vpc.vpc.id | 目标 VPC 的 ID | vpc-xxx |
serverless.cross.vpc.subnet.ids | 需要挂载的子网列表,多个子网列表使用逗号分隔 | subnet-xx1,subnet-xx2 注意
|
serverless.cross.vpc.security.group.id | 访问 VPC 所用的安全组 ID | sg-xxx |
serverless.cross.vpc.dns.resolve.enabled | 是否开启私网域名解析 | true |
serverless.cross.vpc.dns.search.domain | 私网域名解析搜索域,用于自动补全短域名 | test-ziwen.cn-beijing |
serverless.cross.vpc.dns.alias.${domain} | 自定义域名解析 | serverless.cross.vpc.dns.alias.ziwen2 = 10.191.0.112
|