

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

# 设置 VPC 以托管 Amazon EMR 集群
<a name="emr-vpc-host-job-flows"></a>

您必须先创建 VPC 和子网，然后才能在 VPC 中启动集群。对于公有子网，您必须创建一个 Internet 网关并将它连接到子网。以下说明介绍如何创建能够托管 Amazon EMR 集群的 VPC。

**为 Amazon EMR 集群创建带有子网的 VPC**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/) 的 Amazon VPC 控制台。

1. 在页面右上角，为 VPC 选择 [Amazon Web Services 区域](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)。

1. 选择**创建 VPC**。

1. 在 **VPC settings**（VPC 设置）页面上，选择 **VPC and more**（VPC 等）。

1. 在 **Name tag auto-generation**（名称标签自动生成）下，启用 **Auto-generate**（自动生成）然后输入 VPC 的名称。这可帮助您在创建 VPC 和子网后在 Amazon VPC 控制台中识别它们。

1. 在 **IPv4 CIDR 块**字段中，输入您的 VPC 的私有 IP 地址空间以确保正确解析的 DNS 主机名；否则，您可能会遇到 Amazon EMR 集群故障。该地址空间包括以下 IP 地址范围：
   + 10.0.0.0 - 10.255.255.255
   + 172.16.0.0 - 172.31.255.255
   + 192.168.0.0 - 192.168.255.255

1. 在**可用区数量 (AZs)** 下，选择要在其中启动子网的可用区数量。

1. 在 **Number of public subnets**（公有子网数量）下，选择要添加到 VPC 的单个公有子网。如果集群中使用的数据可在 Internet 上（例如，在 Amazon S3 或 Amazon RDS 中）使用，则只需使用公有子网，无需添加私有子网。

1. 在 **Number of private subnets**（私有子网数量）下，选择要添加到 VPC 的私有子网数量。如果您的应用程序数据存储在您自己的网络中（例如，在 Oracle 数据库中），则选择一个或多个私有子网。对于私有子网中的 VPC，所有 Amazon EC2 实例都必须至少有一个通过弹性网络接口到 Amazon EMR 的路由。在控制台中，将自动为您进行配置。

1. 在 **NAT gateways**（NAT 网关）下，可选择添加 NAT 网关。仅当您的私有子网需要与 Internet 通信的情况下，才需要使用它们。

1. 在 **VPC endpoints**（VPC 端点）下，选择向子网添加 Amazon S3 的端点。

1. 验证是否已选中 **Enable DNS hostnames**（启用 DNS 主机名）和 **Enable DNS resolution**（启用 DNS 解析）。有关更多信息，请参阅[将 DNS 与您的 VPC 一起使用](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-dns.html)。

1. 选择**创建 VPC**。

1. 状态窗口会显示工作的进度。工作完成后，选择**查看 VPC** 以导航到**您的VPCs**页面，其中显示您的默认 VPC 和您刚刚创建的 VPC。您创建的 VPC 是非默认 VPC，因此 **Default VPC** 列将显示 **No**。

1. 如果您想将 VPC 与不包含域名的 DNS 条目相关联，请导航到 **DHCP option sets**（DHCP 选项集），选择 **Create DHCP options set**（创建 DHCP 选项集）然后省略域名。创建选项集后，导航到新 VPC，选择 **Actions**（操作）菜单下的 **Edit DHCP options set**（编辑 DHCP 选项集），然后选择新选项集。创建了 DNS 选项集之后，您无法使用控制台编辑域名。

   这是针对 Hadoop 和相关应用程序的最佳做法，可确保解析节点的完全限定域名 (FQDN)。要确保正确解析 DNS，请配置 VPC，使其包含将参数设置为以下值的 DHCP 选项集：
   + **domain-name** = **ec2.internal**

     如果您所在的区域是美国东部（弗吉尼亚北部），请使用 **ec2.internal**。对于其他地区，请使用{{region-name}}**.compute.internal**。例如，在 `us-west-2` 中，请使用 **us-west-2.compute.internal**。对于 Amazon GovCloud （美国西部）区域，请使用**us-gov-west-1.compute.internal**。
   + **domain-name-servers** = **AmazonProvidedDNS**

   有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [DHCP 选项集](https://docs.amazonaws.cn/vpc/latest/userguide/VPC_DHCP_Options.html)。

1. 创建 VPC 之后，转到 **Subnets**（子网）页面并记下新 VPC 的一个子网的 **Subnet ID**（子网 ID）。在该 VPC 中启动 Amazon EMR 集群时，您将使用此信息。