

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Amazon EMR 在 VPC 中启动集群
<a name="emr-vpc-launching-job-flows"></a>

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

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

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

为了管理 VPC 上的集群，Amazon EMR 为主节点附加了一个网络设备，并通过该设备对主节点进行管理。您可以使用 Amazon EC2 API 操作 [https://docs.amazonaws.cn/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html](https://docs.amazonaws.cn/AWSEC2/latest/APIReference/ApiReference-query-DescribeInstances.html) 查看此设备。如果您以任何方式修改此设备，则集群可能会失败。

------
#### [ Console ]

**使用控制台在 VPC 中启动集群**

1. [登录 Amazon Web Services 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.amazonaws.cn/emr)

1. 在左侧导航窗格中的 **EMR on EC2** 下，选择 **Clusters**（集群），然后选择 **Create cluster**（创建集群）。

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

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

1. 要启动集群，选择 **Create cluster**（创建集群）。

------
#### [ Amazon CLI ]

**要在 VPC 中启动集群，请使用 Amazon CLI**
**注意**  
 Amazon 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 地址
<a name="emr-vpc-launching-job-flows-ip-availability"></a>

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

**重要**  
如果 VPC 中没有子网有足够的可用空间 IPs 来容纳基本节点，则会返回错误并且不会创建集群。

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