流式集群错误 - Amazon EMR

流式集群错误

您通常可以在 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 文件中找到此错误。有关更多信息,请参阅查看日志文件