Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon EMR 增强步骤调试
如果 Amazon EMR 步骤失败,并且您通过 5.x 版或更高版本的 AMI 使用步骤 API 操作提交了工作,则 Amazon EMR 可以在某些情况下通过 API 确定并返回步骤失败的根本原因,以及相关日志文件的名称和部分应用程序堆栈跟踪。例如,可以确定以下失败:
-
常见 Hadoop 错误,例如输出目录已经存在、输入内容不存在,或应用程序用尽内存。
-
Java 错误,例如用不兼容的 Java 版本编译了应用程序,或用找不到的主类运行。
-
访问在 Amazon S3 中存储的对象时发生问题。
此信息可通过DescribeStep和 ListStepsAPI 操作获得。这些操作StepSummary返回的FailureDetails字段。要访问 FailureDetails 信息,请使用 Amazon CLI、控制台或 Amazon SDK。
- Console
-
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://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"
}
}