

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

# 使用 Amazon EMR 增强步骤调试
<a name="emr-enhanced-step-debugging"></a>

如果 Amazon EMR 步骤失败，并且您通过 5.x 版或更高版本的 AMI 使用步骤 API 操作提交了工作，则 Amazon EMR 可以在某些情况下通过 API 确定并返回步骤失败的根本原因，以及相关日志文件的名称和部分应用程序堆栈跟踪。例如，可以确定以下失败：
+ 常见 Hadoop 错误，例如输出目录已经存在、输入内容不存在，或应用程序用尽内存。
+ Java 错误，例如用不兼容的 Java 版本编译了应用程序，或用找不到的主类运行。
+ 访问在 Amazon S3 中存储的对象时发生问题。

此信息可通过[DescribeStep](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_DescribeStep.html)和 [ListSteps](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_ListSteps.html)API 操作获得。这些操作[StepSummary](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_StepSummary.html)返回的[FailureDetails](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_FailureDetails.html)字段。要访问 FailureDetails 信息，请使用 AWS CLI、控制台或 AWS SDK。

------
#### [ Console ]

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

**使用控制台查看失败详细信息**

1. [登录 AWS 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. 在左侧导航窗格中的 **EMR on EC2** 下，选择 **Clusters**（集群），然后选择要查看的集群。

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

------
#### [ CLI ]

**要查看失败详情，请使用 AWS CLI**
+ 要获取某个步骤的失败详细信息 AWS CLI，请使用`describe-step`命令。

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

  输出将类似如下：

  ```
  {
    "Step": {
      "Status": {
        "FailureDetails": {
          "LogFile": "s3://amzn-s3-demo-bucket/logs/j-1K48XXXXXHCB/steps/s-3QM0XXXXXM1W/stderr.gz",
          "Message": "org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/input/input.txt",
          "s3://amzn-s3-demo-bucket/logs/beta"
        ],
        "Jar": "s3://amzn-s3-demo-bucket/jars/hadoop-mapreduce-examples-2.7.2-amzn-1.jar",
        "Properties": {}
      },
      "Id": "s-3QM0XXXXXM1W",
      "ActionOnFailure": "CONTINUE",
      "Name": "ExampleJob"
    }
  }
  ```

------