Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

流式集群错误

您通常可以在 syslog 文件中找出流式错误的原因。在 Steps (步骤) 窗格上链接到此问题。

流式集群常会出现以下错误。

数据是否以错误的格式发送到映射器?

要检查是否出现了这种错误,请在任务尝试日志的失败任务尝试的 syslog 文件中查看错误消息。有关更多信息,请参阅 查看日志文件

您的脚本是否超时?

映射器或 Reducer 脚本的默认超时值为 600 秒。如果脚本需要的时间长于此时长,那么任务尝试将会失败。通过在任务尝试日志中检查失败任务尝试的 syslog 文件,可以检验是否出现了这种情况。有关更多信息,请参阅 查看日志文件

通过为 mapred.task.timeout 配置设置设定新值,您可以更改时间限值。此设置会指定毫秒数,经过此时段后,Amazon EMR 将终止尚未读取输入、写入输出或更新其状态字符串的任务。您可以通过传递其他流式参数 -jobconf mapred.task.timeout=800000 更新此值。

是否正在传递无效的流式参数?

Hadoop 流式处理仅支持以下参数。如果您传递的参数不同于以下列出的内容,集群将会失败。

-blockAutoGenerateCacheFiles -cacheArchive -cacheFile -cmdenv -combiner -debug -input -inputformat -inputreader -jobconf -mapper -numReduceTasks -output -outputformat -partitioner -reducer -verbose

此外,Hadoop 流式处理只能识别使用 Java 语法传入的参数,即前面加一个连字符的参数。如果您传入的参数前面加了两个连字符,集群将会失败。

您的脚本退出时是否有错误?

如果映射器或 Reducer 脚本退出时出现错误,您可以在失败任务尝试的任务尝试日志的 stderr 文件中找到此错误。有关更多信息,请参阅 查看日志文件