Amazon EMR 集群错误:Instance type not supported - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EMR 集群错误:Instance type not supported

如果您创建集群失败,并显示错误消息 “请求的可用区不支持请求的实例类型InstanceType”,则表示您创建了集群,并为创建集群的区域和可用区的 Amazon EMR 不支持的一个或多个实例组指定了实例类型。Amazon EMR 可能在区域内的一个可用区域中支持某个实例类型,而在另一个可用区中则不支持。为集群选择的子网决定区域内的可用区。

解决方案

使用确定可用区中的可用实例类型 Amazon CLI
  • 使用带 --dry-run 选项的 ec2 run-instances 命令。在以下示例中,替换m5.xlarge为您要使用的实例类型、ami-035be7bafff33b6b6与该实例类型关联的 AMI 以及subnet-12ab3c45要查询的可用区中的子网。

    aws ec2 run-instances --instance-type m5.xlarge --dry-run --image-id ami-035be7bafff33b6b6 --subnet-id subnet-12ab3c45

    有关查找 AMI ID 的说明,请参阅查找 Linux AMI。您可以使用 describe-subnets 命令查找子网 ID。

要详细了解如何发现可用实例类型,请参阅查找 Amazon EC2 实例类型

确定可用的实例类型后,可以执行以下任一操作:

  • 在相同的区域和 EC2 子网中创建集群,然后选择与您的初始选择具有相似功能的不同实例类型。有关受支持实例类型的列表,请参阅 Amazon EMR 支持的实例类型。要比较 EC2 实例类型的功能,请参阅 Amazon EC2 实例类型

  • 在提供实例类型可用且受 Amazon EMR 支持的可用区中为集群选择子网。

减少因 Amazon EMR 中不支持的主实例类型而导致的实例集集群启动失败

在 Amazon EMR 集群中,主节点是必不可少的。如果 Amazon EMR 尝试在不支持主实例类型的可用区中启动集群,EMR 集群启动可能会失败并出现 instance type not supported 错误。Amazon EMR 中针对实例队列集群的增强可用区选择会自动筛选出您在集群配置中指定的主实例类型不支持 AZs 的主实例类型。这意味着 Amazon EMR 不会选择不支持已配置主实例类型的可用区,从而防止由于实例类型不受支持而导致集群启动失败。

要实现此改进,请为集群的服务角色或策略添加所需的权限。AmazonEMRServicePolicy_v2 的最新版本包含此权限,因此如果您使用此策略,则可以改进。如果您使用自定义服务角色或策略,请在启动集群时添加 ec2:DescribeInstanceTypeOfferings 权限。

{ "Version": "2012-10-17", "Statement": [ { "Action": "ec2:DescribeInstanceTypeOfferings", "Effect": "Allow", "Resource": "*" } ] }