我有一个用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)我该如何解决?
谢谢
最佳答案
您的数据中是否有很多其他语言(例如中文)的字符?
如果是这样,请检查您的字符编码设置
(1)您的Hadoop集群的JVM:默认情况下,它可能设置为UTF-8。
(2)您的mapper / reducer:确保您的mapper / reducer以UTF-8(或您设置了JVM的任何char编码)发出字符。
关于hadoop - Hadoop流任务失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10375623/