You need to enable JavaScript to run this app.
E-MapReduce

E-MapReduce

复制全文
EMR Serverless 队列最佳实践
EMR Serverless 访问 VPC 实践指南
复制全文
EMR Serverless 访问 VPC 实践指南

EMR Serverless 默认将您的作业托管在 EMR 服务 VPC 下运行,默认与您账户下的 VPC 网络不互通。本文将介绍如何在任务级别,通过设置参数的方式,实现与您的 VPC 内网络互通(下文简称跨 VPC)。

配置说明

跨VPC场景说明

如果用户任务需要访问 Mysql、Kafka 等其他资源,则需要设置跨 VPC 参数。

说明

访问 TOS 或 LAS 表不需要设置跨 VPC 参数。

队列网络设置说明

  • 在 EMR Serverless 队列详情页面设置网络参数,全局路由建议保持关闭,任务通过设置参数来开启跨 VPC 功能。
  • 跨 VPC 任务的每个 pod 都会消耗一个子网 IP,需要合理规划子网网段。
  • 对于仅 Driver 访问 mysql 等其他 VPC 场景,可参考仅Driver访问VPC下资源配置参数,来减少子网 IP 消耗。

说明

EMR Serverless 支持在EMR Serverless 控制台 > 队列详情 > 网络配置 页面设置队列级别的网络。

访问本账号资源

访问 VPC 下资源

在任务中通过 set 命令设置参数(或通过 sdk conf 传入),即可实现跨 VPC 网络打通,driver&executor 等每个 pod 都会绑定一个辅助网卡,消耗一个子网 IP。

set serverless.cross.vpc.access.enabled=true

仅 Driver 访问 VPC 下资源

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 为例:

  1. 通过 privateZone 创建 ECS 的域名,指向 ECS 具体的 IP。
  1. 提交任务,设置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;

即可实现短域名自动补全:

自定义 DNS 解析规则

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 解析:

访问其他主账号资源

说明

本章节均为白名单功能,如有需要请通过 提工单 的方式,联系火山引擎技术支持人员。。

任务(Driver&Executor)访问 VPC 下资源

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;

仅 Driver 访问 VPC 下资源

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 on ECS HiveMetaStore

EMR Serverless 支持访问 EMR on ECS 上独立的 HiveMetaStore,方式如下:

  1. 查看 Hive 中 hive.metastore.uri的参数值。
  1. 使用如下参数提交 EMR Serverless 任务。
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

说明

  • 账户需要完成 EMR Serverless 的开通或授予 ServiceRoleForLAS 权限。
  • 若用户访问的是其自身账户下的 VPC,则无需填写本参数 。

serverless.cross.vpc.vpc.id

目标 VPC 的 ID

vpc-xxx

serverless.cross.vpc.subnet.ids

需要挂载的子网列表,多个子网列表使用逗号分隔

subnet-xx1,subnet-xx2

注意

  • 在同一 VPC 环境中,子网间默认具备网络连通性,可以选择多个可用区的子网,更充分的使用EMR Serverless 多可用区弹性资源。
  • EMR Serverless 每个任务的 Pod(例如 Spark Driver/Executor、Ray Work/Head)都会消耗您子网下的 IP,建议合理规划子网 IP 数量。

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
示例说明:将 ziwen2 域名解析至10.191.0.112。
在 Spark SQL 场景下,如果出现解析失败,可以加上```实现转义。
示例:

set `serverless.cross.vpc.dns.alias.ziwen-ziwen` = 10.191.37.104;

最近更新时间:2025.08.15 11:36:33
这个页面对您有帮助吗?
有用
有用
无用
无用