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

在 VPC 中启动集群

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

注意

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

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

在公有子网中,Amazon EMR 分别为从属实例组和主实例组创建 ElasticMapReduce-slave 和 ElasticMapReduce-master。默认情况下,ElasticMapReduce-master 安全组允许入站 SSH 连接,而 ElasticMapReduce-slave 组不允许。主安全组和从属安全组均允许 AWS 公有 IP 范围中端口 8443 上的入站流量。如果需要对从属 (核心和任务) 节点进行 SSH 访问,则可以向 ElasticMapReduce-slave 安全组添加规则或使用 SSH 代理转发。

在私有子网中启动集群时需要其他安全组和规则。这是为了确保服务仍可管理这些资源 (即便它们是私有资源)。其他安全组包括:ElasticMapReduce-Master-Private、ElasticMapReduce-Slave-Private。. 弹性网络接口的安全组的形式为 ElasticMapReduce-ServiceAccess。开放端口 8443 上的入站流量以允许连接到 Amazon EMR Web 服务。应允许端口 80 和 443 上的出站流量,以便集群能够回发与服务的通信。此外,入站和出站临时端口应在您的网络 ACL 中打开。

有关修改安全组规则的更多信息,请参阅 Amazon EC2 User Guide for Linux Instances 中的向安全组添加规则。有关连接到 VPC 中的实例的更多信息,请参阅安全地连接到私有 Amazon VPC 中运行的 Linux 实例

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

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

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

  2. 选择 Create cluster

  3. 选择 Go to advanced options

  4. Hardware Configuration 部分中,对于 Network 中,选择您之前创建的 VPC 网络的 ID。

  5. 对于 EC2 Subnet,选择您之前创建的子网的 ID。

    1. 如果使用 NAT 实例和 S3 终端节点选项正确地配置您的私有子网,将在子网名称和标识符上方显示 (EMR Ready)

    2. 如果您的私有子网没有 NAT 实例和/或 S3 终端节点,则可通过选择 Add S3 endpoint and NAT instanceAdd S3 endpointAdd NAT instance 进行配置。为您的 NAT 实例和 S3 终端节点选择所需的选项,然后选择 Configure

      重要

      要从 Amazon EMR 创建 NAT 实例,您需要 ec2:CreateRoute、ec2:RevokeSecurityGroupEgressec2:AuthorizeSecurityGroupEgresscloudformation:DescribeStackEventscloudformation:CreateStack 权限。

      注意

      为您的 NAT 设备启动 EC2 实例会产生额外费用。

  6. 继续创建集群.

使用 AWS CLI 在 VPC 中启动集群

注意

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

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

  • 要在特定子网中创建集群,请键入以下命令,将 myKey 替换为您的 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 m4.large --instance-count 3

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

    注意

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

有关在 AWS CLI 中使用 Amazon EMR 命令的更多信息,请参阅 AWS CLI