2012-04-29 83 views
0

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

最近,我发现很多流式处理任务在任务追踪器保持失败并重新启动时,最终成功完成。我跟踪了用户日志,似乎一些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)我该如何解决?

谢谢

回答

1

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

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

+0

我的数据只包含英文字符串和主要数字。没有非英文字符。 – ablimit