Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon VPC 选项

在 VPC 中启动 Amazon EMR 集群时,您可以在公有子网、私有子网或共享子网中启动它。配置上存在少量但明显的区别,具体取决于您为集群选择的子网类型。

公有子网

公有子网中的 EMR 集群需要已连接的 Internet 网关。这是因为 Amazon EMR 集群必须访问 AWS 服务和 Amazon EMR。如果可利用某项服务 (如 Amazon S3) 创建 VPC 终端节点,则可使用该终端节点访问这些服务,而不是通过 Internet 网关访问公有终端节点。此外,Amazon EMR 无法通过网络地址转换 (NAT) 设备与公有子网中的集群通信。为此,需要一个 Internet 网关,但您仍可在更复杂的场景中为其他流量使用 NAT 实例或网关。

集群中的所有实例都通过 VPC 终端节点或 Internet 网关连接到 Amazon S3。目前不支持 VPC 终端节点的其他 AWS 服务仅使用 Internet 网关。

如果您不希望其他 AWS 资源连接到 Internet 网关,则可以在 VPC 内创建的私有子网中启动这些组件。

在公有子网中运行的集群将使用两个安全组:一个用于主节点,另一个用于核心节点和任务节点。有关更多信息,请参阅使用安全组控制网络流量

下图说明 Amazon EMR 集群如何在带公有子网的 VPC 中运行。该集群能够通过 Internet 网关连接到其他 AWS 资源,如 Amazon S3 存储桶。


						VPC 上的集群

下图演示如何设置 VPC,以便 VPC 中的集群可以访问您自己的网络中的资源 (如 Oracle 数据库)。


						设置 VPC 和集群以访问本地 VPN 资源

私有子网

可使用私有子网启动 AWS 资源,而无需子网具有已连接的 Internet 网关。例如,这可能对在后端使用这些私有资源的应用程序很有用。随后,这些资源可使用位于具有已连接的 Internet 网关的另一个子网中的 NAT 实例发出出站流量。有关此场景的更多信息,请参阅场景 2:带有公有子网和私有子网 (NAT) 的 VPC

重要

Amazon EMR 仅支持在 4.2 版或更高版本中的私有子网中启动集群。

以下是公有子网中的区别:

  • 要访问未提供 VPC 终端节点的 AWS 服务,您仍必须使用 NAT 实例或 Internet 网关。

  • 您至少必须在 Amazon S3 中提供到 Amazon EMR 服务日志存储桶和 Amazon Linux 存储库的路由。有关更多信息,请参阅 私有子网的最低 Amazon S3 策略

  • 如果您使用 EMRFS 功能,则需要有一个 Amazon S3 VPC 终端节点和一个从私有子网到 DynamoDB 的路由。

  • 调试仅在您提供一个从私有子网到公有 Amazon SQS 终端节点的情况下起作用。

  • 仅支持使用 AWS 管理控制台在公有子网中通过 NAT 实例或网关创建私有子网配置。为 EMR 集群添加和配置 NAT 实例和 Amazon S3 VPC 终端节点的最简单方法是,使用 Amazon EMR 控制台中的 VPC Subnets List (VPC 子网列表) 页面。要配置 NAT 网关,请参阅 Amazon VPC 用户指南中的 NAT 网关

  • 您无法利用现有 EMR 集群将子网从公有子网更改为私有子网,反之亦然。要在私有子网中找到 EMR 集群,则必须在私有子网中启动该集群。

Amazon EMR 为私有子网中的集群创建并使用不同的默认安全组:ElasticMapReduce-Master-Private、ElasticMapReduce-Slave-Private 和 ElasticMapReduce-ServiceAccess。有关更多信息,请参阅使用安全组控制网络流量

若要获取集群的完整 NACL 列表,在 Amazon EMR 控制台的 Cluster Details (集群详细信息) 页面上,请选择 Security groups for Master (主节点的安全组)Security groups for Core & Task (核心和任务节点的安全组)

下图说明如何在私有子网中配置 EMR 集群。子网外部的唯一通信是到 Amazon EMR 的通信。


						在私有子网中启动 EMR 集群

下图显示已连接到公有子网中的 NAT 实例的私有子网中的 EMR 集群的示例配置。


						连接到 NAT 的私有子网

共享子网

VPC 共享允许客户与同一 AWS 组织内的其他 AWS 账户共享子网。您可以将 Amazon EMR 集群启动到公有共享子网和私有共享子网中,但需要注意以下几点。

子网拥有者必须与您共享一个子网才能在其中启动 Amazon EMR 集群。但是,共享子网稍后可以取消共享。有关更多信息,请参阅使用共享 VPC。当某个集群启动到共享子网并且该共享子网随后取消共享时,您可以在子网取消共享时根据 Amazon EMR 集群状态观察特定行为。

  • 在集群成功启动之前,子网未取消共享 - 如果拥有者在参与者启动集群时停止共享 Amazon VPC 或子网,则集群可能无法启动或部分初始化,而无需预配置请求的所有实例。

  • 集群成功启动之后,子网未取消共享 - 当拥有者停止与参与者共享子网或 Amazon VPC 时,参与者的集群将无法调整大小以添加新实例或替换不健康的实例。

当您启动一个 Amazon EMR 集群时,系统会创建多个安全组。在共享子网中,子网参与者控制这些安全组。子网拥有者可以看到这些安全组,但不能对其执行任何操作。如果子网拥有者想要删除或修改安全组,则创建安全组的参与者必须执行该操作。