0

我有一个用 C++ 编写的相对简单的程序,我一直在使用 Hadoop Streaming 进行 MapReduce 作业(我的 Hadoop 版本是 Cloudera)。

最近,我发现很多流式任务在最后成功完成时一直失败并被任务跟踪器重新启动。我跟踪了用户日志,似乎一些 MapReduce 任务的输入为零。具体来说,错误消息如下所示:

HOST=null
USER=mapred
HADOOP_USER=null
last Hadoop input: |null|
last tool output: |TCGA-06-0216-0000024576-0000008192   0   27743   10716|
Date: Sun Apr 29 15:55:51 EDT 2012
java.io.IOException: Broken pipe  

有时错误率非常高(接近 50%)。我不认为这是正常的。有人知道吗

a) 发生了什么事?

b)我该如何解决?

谢谢

4

1 回答 1

1

您的数据是否有很多其他语言的字符(例如中文)?

如果是这样,请检查您在 (1) JVM 中为您的 Hadoop 集群设置的字符编码设置:它可能默认设置为 UTF-8。(2) 你的映射器/减速器:确保你的映射器/减速器发出 UTF-8 字符(或者你设置 JVM 的任何字符编码)

于 2012-05-01T03:50:21.093 回答