我正在尝试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
答案 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
(道歉的路径道歉。我的实际路径不同 - 这里的路径只是我对他们进行匿名化的懒惰尝试。)