使用 Amazon EMR 在 VPC 中启动集群 - Amazon EMR

使用 Amazon EMR 在 VPC 中启动集群

在具有一个配置为托管 Amazon EMR 集群的子网后,通过在创建集群时指定关联的子网标识符来在该子网中启动集群。

注意

Amazon EMR 支持版本 4.2 及更高版本中的私有子网。

启动集群时,Amazon EMR 基于集群是在 VPC 私有子网还是公有子网中启动来添加安全组。所有安全组都允许端口 8443 的入口与 Amazon EMR 服务进行通信,但 IP 地址范围因公有子网和私有子网而异。Amazon EMR 管理这些所有安全组,而且随着时间的推移,可能需要向 AWS 范围添加其它 IP 地址。有关更多信息,请参阅 使用 Amazon EMR 集群的安全组控制网络流量

为了管理 VPC 上的集群,Amazon EMR 为主节点附加了一个网络设备,并通过该设备对主节点进行管理。您可以使用 Amazon EC2 API 操作 DescribeInstances 查看此设备。如果您以任何方式修改此设备,则集群可能会失败。

Console
使用控制台在 VPC 中启动集群
  1. 登录 AWS Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

  2. 在左侧导航窗格中的 EMR on EC2 下,选择 Clusters(集群),然后选择 Create cluster(创建集群)。

  3. Networking(联网)下,转到 Virtual private cloud (VPC) [虚拟私有云(VPC)] 字段。输入 VPC 名称或选择 Browse(浏览)以选择 VPC。或者,选择 Create VPC(创建 VPC)以创建可用于集群的 VPC。

  4. 选择适用于集群的任何其他选项。

  5. 要启动集群,选择 Create cluster(创建集群)。

AWS CLI
使用 AWS CLI 在 VPC 中启动集群
注意

AWS CLI 未提供自动创建 NAT 实例并将该实例连接到私有子网的方法。但是,要在子网中创建 S3 端点,您可以使用 Amazon VPC CLI 命令。使用控制台可在私有子网中创建 NAT 实例和启动集群。

配置 VPC 之后,可以使用带 create-cluster 参数的 --ec2-attributes 子命令在 VPC 中启动 Amazon EMR 集群。使用 --ec2-attributes 参数可为集群指定 VPC 子网。

  • 要在特定子网中创建集群,请键入以下命令,将 myKey 替换为您的 Amazon EC2 密钥对的名称,并将 77XXXX03 替换为您的子网 ID。

    aws emr create-cluster --name "Test cluster" --release-label emr-4.2.0 --applications Name=Hadoop Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey,SubnetId=subnet-77XXXX03 --instance-type m5.xlarge --instance-count 3

    如果不使用 --instance-groups 参数指定实例计数,则将启动单个主节点,其余实例将作为核心节点启动。所有节点都使用该命令中指定的实例类型。

    注意

    如果您之前未创建默认 Amazon EMR 服务角色和 EC2 实例配置文件,请先键入 aws emr create-default-roles 创建它们,然后再键入 create-cluster 子命令。

确保 EC2 上的 EMR 集群有可用的 IP 地址

为确保启动时子网有足够的 IP 地址可用,EC2 子网选择会检查 IP 可用性。即使在初始创建时只创建了集群的核心节点,创建过程也会使用具有必要 IP 地址数量的子网来启动所需的核心节点、主节点和任务节点。EMR 会在创建过程中检查启动主节点和任务节点所需的 IP 地址数量,并单独计算启动核心节点所需的 IP 地址数量。Amazon EMR 会自动确定所需的主实例和任务实例或节点的最小数量。

重要

如果 VPC 中没有子网有足够的可用 IP 来容纳基本节点,则会返回错误并且不会创建集群。

在大多数部署情况下,每次启动核心节点、主节点和任务节点之间都会有时间差。此外,多个集群可以共享一个子网。在这些情况下,IP 地址的可用性可能会发生波动,例如,后续任务节点的启动可能会受到可用 IP 地址的限制。