我有一个用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)我该如何解决?
谢谢
答案 0 :(得分:1)
您的数据是否包含其他语言的很多字符(例如中文)?
如果是,请检查您的字符编码设置 (1)Hadoop集群的JVM:默认情况下可能设置为UTF-8。 (2)你的mapper / reducer:确保你的mapper / reducer以UTF-8(或你设置JVM的任何字符编码)发出字符