选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Amazon EMR 集群操作期间的 VPC 错误

聚焦模式
Amazon EMR 集群操作期间的 VPC 错误 - Amazon EMR

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

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

Amazon EMR 的 VPC 配置常会出现以下错误。

无效子网配置

Cluster Details(集群详细信息)页面的 Status(状态)字段中,您会看到与以下内容相似的错误:

The subnet configuration was invalid: Cannot find route to InternetGateway in main RouteTable rtb-id for vpc vpc-id.

要解决此问题,您必须创建 Internet 网关并将其连接到您的 VPC。有关更多信息,请参阅在您的 VPC 中添加互联网网关

或者,验证您是否已经为 VPC 配置启用 DNS 解析并启用启用 DNS 主机名支持。有关更多信息,请参阅将 DNS 与您的 VPC 一起使用

缺少 DHCP 选项集

您可以看到集群系统日志 (syslog) 的步骤失败信息包含与以下内容相似的错误:

ERROR org.apache.hadoop.security.UserGroupInformation (main): PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.IOException: org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id 'application_id' doesn't exist in RM.

ERROR org.apache.hadoop.streaming.StreamJob (main): Error Launching job : org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id 'application_id' doesn't exist in RM.

要解决此问题,必须配置 VPC,使其包含将参数设置为以下值的 DHCP 选项集:

注意

如果您使用 AWS GovCloud (美国西部)区域,请将 domain-name 设置为,us-gov-west-1.compute.internal而不是以下示例中使用的值。

  • domain-name = ec2.internal

    如果您所在的区域是美国东部(弗吉尼亚北部),请使用 ec2.internal。对于其他地区,请使用region-name.compute.internal。例如,在 us-west-2 中,请使用 domain-name=us-west-2.compute.internal

  • domain-name-servers = AmazonProvidedDNS

有关更多信息,请参阅 DHCP 选项集

权限错误

stderr 日志中记录的某个步骤失败表示 Amazon S3 资源没有适当的权限。这是一个 403 错误,内容如下所示:

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: REQUEST_ID

如果设置 ActionOnFailure 为TERMINATE_JOB_FLOW,则会导致集群终止,SHUTDOWN_COMPLETED_WITH_ERRORS状态为。

可通过几种方法解决此问题,包括:

  • 如果您正在 VPC 中使用 Amazon S3 存储桶策略,请确保通过创建一个 VPC 终端节点并在创建该终端节点时在 Policy (策略) 选项下选择 Allow all (全部允许) 来授予对所有存储桶的访问权。

  • 确保与 S3 资源关联的任何策略都包括您从中启动集群的 VPC。

  • 尝试从集群中运行以下命令来验证您是否能访问存储桶

    hadoop fs -copyToLocal s3://path-to-bucket /tmp/
  • 通过在集群上的 log4j.logger.org.apache.http.wire 文件中将 DEBUG 参数设置为 /home/hadoop/conf/log4j.properties,可以获得更具体的调试信息。在尝试从集群访问存储桶后,可以查看 stderr 日志文件。该日志文件将提供更多详细信息:

    Access denied for getting the prefix for bucket - us-west-2.elasticmapreduce with path samples/wordcount/input/ 15/03/25 23:46:20 DEBUG http.wire: >> "GET /?prefix=samples%2Fwordcount%2Finput%2F&delimiter=%2F&max-keys=1 HTTP/1.1[\r][\n]" 15/03/25 23:46:20 DEBUG http.wire: >> "Host: us-west-2.elasticmapreduce.s3.amazonaws.com[\r][\n]"

导致 START_FAILED 的错误

在 AMI 3.7.0 之前, VPCs 如果指定了主机名,Amazon EMR 会将子网的内部主机名映射到自定义域地址,如下所示:。ip-X.X.X.X.customdomain.com.tld例如,如果主机名为 ip-10.0.0.10 且 VPC 已将域名选项设置为 customdomain.com,则通过 Amazon EMR 映射所生成的主机名将为 ip-10.0.1.0.customdomain.com。这会在 /etc/hosts 中添加一个条目以将主机名解析为 10.0.0.10。此行为已随 AMI 3.7.0 更改,现在 Amazon EMR 已完全遵循 VPC 的 DHCP 配置。以前,客户还可使用引导操作来指定主机名映射。

如果您想保留此行为,则必须提供 DNS,并为自定义域转发所需的解析设置。

Terminated with errors群 NameNode 但无法启动

在使用自定义 DNS 域名的 VPC 中启动 EMR 集群时,您的集群可能会启动失败并在控制台中显示以下错误消息:

Terminated with errors On the master instance(instance-id), bootstrap action 1 returned a non-zero return code

失败是由于 NameNode 无法启动造成的。这将导致在 NameNode 日志中发现以下错误,其 Amazon S3 URI 的格式为s3://amzn-s3-demo-bucket/logs/cluster-id/daemons/master instance-id/hadoop-hadoop-namenode-master node hostname.log.gz

2015-07-23 20:17:06,266 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem (main): Encountered exception loading fsimage java.io.IOException: NameNode is not formatted. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:212) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:537) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:596) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:765) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:749) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1441) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1507)

这是因为一个潜在的问题是,在同时使用提供的 DNS 服务器和用户 AWS提供的自定义 DNS 服务器的 VPC 中启动 EMR 集群时, EC2 实例可能有多组完全限定的域名。如果用户提供的 DNS 服务器未为用于指定 EMR 集群中节点的任何 A 记录提供任何指针 (PTR) 记录,则这种配置方式会导致集群启动失败。解决方案是为在 VPC 中的任何子网中启动 EC2 实例时创建的每个 A 记录添加 1 个 PTR 记录。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。