增强型步骤调试 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

增强型步骤调试

如果 Amazon EMR 步骤失败,并且您通过 5.x 版或更高版本的 AMI 使用步骤 API 操作提交了工作,则 Amazon EMR 可以在某些情况下通过 API 确定并返回步骤失败的根本原因,以及相关日志文件的名称和部分应用程序堆栈跟踪。例如,可以确定以下失败:

  • 常见 Hadoop 错误,例如输出目录已经存在、输入内容不存在,或应用程序用尽内存。

  • Java 错误,例如用不兼容的 Java 版本编译了应用程序,或用找不到的主类运行。

  • 访问在 Amazon S3 中存储的对象时发生问题。

该信息可使用 DescribeStepListSteps API 操作获得。StepSummaryFailureDetails 字段由这些操作返回。要访问 FailureDetails 信息,请使用 Amazon CLI、控制台或 Amazon SDK。

注意

我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。

New console

Amazon EMR 新控制台不提供步骤调试。但是,您可以通过以下步骤查看集群终止详细信息。

使用新控制台查看失败详细信息
  1. 登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

  2. 在左侧导航窗格中的 EMR on EC2 下,选择 Clusters(集群),然后选择要查看的集群。

  3. 记下显示在集群详细信息页面上 Summary(摘要)部分中的 Status(状态)值。如果状态为 Terminated with errors(因错误而终止),请将鼠标悬停在文本上以查看集群失败详细信息。

Old console
使用旧控制台查看失败详细信息
  1. 导航到 Amazon EMR 新控制台,然后从侧面导航栏中选择切换到旧控制台。有关切换到旧控制台后预期情况的更多信息,请参阅 Using the old console

  2. 选择 Cluster List (集群列表) 并选择一个集群。

  3. 选择每个步骤旁边的箭头图标可查看更多详细信息。如果步骤失败而且 Amazon EMR 可以确定根本原因,则您会看到失败详细信息。

CLI
使用 Amazon CLI 查看失败详细信息
  • 要使用 Amazon CLI 获取步骤的失败详细信息,请使用 describe-step 命令。

    aws emr describe-step --cluster-id j-1K48XXXXXHCB --step-id s-3QM0XXXXXM1W

    输出将类似如下:

    { "Step": { "Status": { "FailureDetails": { "LogFile": "s3://myBucket/logs/j-1K48XXXXXHCB/steps/s-3QM0XXXXXM1W/stderr.gz", "Message": "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory s3://myBucket/logs/beta already exists", "Reason": "Output directory already exists." }, "Timeline": { "EndDateTime": 1469034209.143, "CreationDateTime": 1469033847.105, "StartDateTime": 1469034202.881 }, "State": "FAILED", "StateChangeReason": {} }, "Config": { "Args": [ "wordcount", "s3://myBucket/input/input.txt", "s3://myBucket/logs/beta" ], "Jar": "s3://myBucket/jars/hadoop-mapreduce-examples-2.7.2-amzn-1.jar", "Properties": {} }, "Id": "s-3QM0XXXXXM1W", "ActionOnFailure": "CONTINUE", "Name": "ExampleJob" } }