

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

# 流处理 Amazon EMR 集群错误
<a name="emr-troubleshoot-error-streaming"></a>

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

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

**Topics**
+ [数据是否以错误的格式发送到映射器？](#emr-troubleshoot-error-streaming-1)
+ [您的脚本是否超时？](#emr-troubleshoot-error-streaming-2)
+ [是否正在传递无效的流式参数？](#invalidarg)
+ [您的脚本退出时是否有错误？](#emr-troubleshoot-error-streaming-3)

## 数据是否以错误的格式发送到映射器？
<a name="emr-troubleshoot-error-streaming-1"></a>

 要检查是否出现了这种错误，请在任务尝试日志的失败任务尝试的 `syslog` 文件中查看错误消息。有关更多信息，请参阅[查看 Amazon EMR 日志文件](emr-manage-view-web-log-files.md)。

## 您的脚本是否超时？
<a name="emr-troubleshoot-error-streaming-2"></a>

 映射器或 Reducer 脚本的默认超时值为 600 秒。如果脚本需要的时间长于此时长，那么任务尝试将会失败。通过在任务尝试日志中检查失败任务尝试的 `syslog` 文件，可以检验是否出现了这种情况。有关更多信息，请参阅[查看 Amazon EMR 日志文件](emr-manage-view-web-log-files.md)。

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

## 是否正在传递无效的流式参数？
<a name="invalidarg"></a>

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

```
 1. -blockAutoGenerateCacheFiles 
 2. -cacheArchive 
 3. -cacheFile 
 4. -cmdenv 
 5. -combiner 
 6. -debug 
 7. -input 
 8. -inputformat
 9. -inputreader 
10. -jobconf 
11. -mapper
12. -numReduceTasks
13. -output 
14. -outputformat 
15. -partitioner
16. -reducer
17. -verbose
```

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

## 您的脚本退出时是否有错误？
<a name="emr-troubleshoot-error-streaming-3"></a>

 如果映射器或 Reducer 脚本退出时出现错误，您可以在失败任务尝试的任务尝试日志的 `stderr` 文件中找到此错误。有关更多信息，请参阅 [查看 Amazon EMR 日志文件](emr-manage-view-web-log-files.md)。