Hadoop管道(wordcount)示例失败(使用hadoop 0.21.0)

时间:2011-07-27 00:10:46

标签: c++ hadoop pipe

我正在尝试simplistic word count example for hadoop pipes。不幸的是,当我尝试将其运行为java.lang.NullPointerException/usr/lib64/libstdc++.so.6: no version information available错误时出错:

$ bin/hadoop pipes -Dhadoop.pipes.java.recordreader=true \
                   -Dhadoop.pipes.java.recordwriter=true \ 
                   -input <inputHDFSPath> \               
                   -output <outputHDFSPath> \
                   -program <cppBinaryHDFSPath>

错误详情为here

如何解决这个问题的任何建议将不胜感激。感谢。

Edit1:添加了用于运行的命令。

Edit2:事实证明C ++二进制文件没有静态链接。在纠正之后,我现在看到this error

Edit3:添加了正在使用的hadoop版本。我还添加了jobtracker日志here的相关部分。此外,每个失败尝试的stderr都有:

$more /usr/local/dp/hadoop/userlogs/job_201107211831_0013/\
attempt_201107211831_0013_m_‌​000000_0/stderr 
Hadoop Pipes Exception: Aborted by driver

2 个答案:

答案 0 :(得分:0)

因为它正在寻找/usr/lib64/libstdc++.so.6,看来你的映射器是用64位编译器编译的,你确定jvm也是64位吗?

我感觉这是64位的东西导致管道破裂。检查集群和开发机器。

答案 1 :(得分:0)

所以我又给了它一个镜头并从头开始。这一次我取得了更大的成功。这是我使用的code and the config files

此外,这是我用来运行这项工作的命令:

hadoop pipes -conf path/to/dp_hpt_conf.xml 
             -input /path/to/input 
             -output /path/to/output

/path/to/input中的输入文件是:

$hadoop fs -ls /path/to/input
Found 3 items
-rw-r--r--   3 dp dpgrp         25 2011-07-26 23:24 /path/to/input/bar
-rw-r--r--   3 dp dpgrp         87 2011-07-26 23:24 /path/to/input/baz
-rw-r--r--   3 dp dpgrp         44 2011-07-26 23:24 /path/to/input/foo
$hadoop fs -get /path/to/input/foo .
$cat foo 
The quick brown fox jumps over the lazy dog

输出结果为:

$ hadoop fs -get /path/to/output/part-00000 .
$ cat part-00000 
another 3
be      2
brown   2
dog     2
end     2
for     2
fox     2
input   2
is      3
jumps   2
lazy    2
of      2
over    2
program 2
quick   2
sentence        3
should  2
test    2
that    2
the     5
this    4
yet     2

(道歉的路径道歉。我的实际路径不同 - 这里的路径只是我对他们进行匿名化的懒惰尝试。)