Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
增强型步骤调试
如果 Amazon EMR 步骤失败,并且您通过 5.x 版或更高版本的 AMI 使用步骤 API 操作提交了工作,则 Amazon EMR 可以在某些情况下通过 API 确定并返回步骤失败的根本原因,以及相关日志文件的名称和部分应用程序堆栈跟踪。例如,可以确定以下失败:
-
常见 Hadoop 错误,例如输出目录已经存在、输入内容不存在,或应用程序用尽内存。
-
Java 错误,例如用不兼容的 Java 版本编译了应用程序,或用找不到的主类运行。
-
访问在 Amazon S3 中存储的对象时发生问题。
该信息可使用 DescribeStep 和 ListSteps API 操作获得。StepSummary 的 FailureDetails 字段由这些操作返回。要访问 FailureDetails 信息,请使用 Amazon CLI、控制台或 Amazon SDK。
我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。
- New console
-
Amazon EMR 新控制台不提供步骤调试。但是,您可以通过以下步骤查看集群终止详细信息。
使用新控制台查看失败详细信息
-
登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr。
-
在左侧导航窗格中的 EMR on EC2 下,选择 Clusters(集群),然后选择要查看的集群。
-
记下显示在集群详细信息页面上 Summary(摘要)部分中的 Status(状态)值。如果状态为 Terminated with errors(因错误而终止),请将鼠标悬停在文本上以查看集群失败详细信息。
- Old console
-
使用旧控制台查看失败详细信息
导航到 Amazon EMR 新控制台,然后从侧面导航栏中选择切换到旧控制台。有关切换到旧控制台后预期情况的更多信息,请参阅 Using the old console。
-
选择 Cluster List (集群列表) 并选择一个集群。
-
选择每个步骤旁边的箭头图标可查看更多详细信息。如果步骤失败而且 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"
}
}