除了设置libhdfs(用于c ++)我还需要做什么?

时间:2014-05-23 17:04:41

标签: java c++ hadoop

我是hadoop的新手,我安装了hadoop。 Datanode,Namenode等即将到来,一切顺利。我是否必须单独下载libhdfs,否则它会包含在内?我只能看到Java的东西。非常感谢。

1 个答案:

答案 0 :(得分:0)

有一个例子:http://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/LibHdfs.html(虽然一些信息,众所周知如何制作这个例子,已经过时了)

为了编译它,您需要包含$ HADOOP_HOME / include目录并链接到$ HADOOP_HOME / lib / native / libhdfs.so(如果您在Linux上)。此外,您需要确保在运行示例时,CLASSPATH包含所有hadoop库。这样做的诀窍之一:

for file in `hadoop classpath | tr ':' ' ' | sort | uniq`
do
  export CLASSPATH=$CLASSPATH:$file
done

注意事项:

0)最新的Hadoop Linux发行版(2.4.1)包含32位共享库,这让64位系统抱怨。为了使此示例在64位系统上运行,您必须提供本机libhdfs.so库。例如,可以通过从源代码下载Hadoop并自行构建分发(可以在此处找到有用的介绍:http://csrdu.org/nauman/2014/01/23/geting-started-with-hadoop-2-2-0-building/)来完成。

1)在Ubuntu上,你必须在调用libhdfs之前自己实例化jvm(通过JNI),因为libhdfs代码错误地为正在运行的JVM识别YamVM,因此不实例化

2)在RedHat上,如果在重新启动datanode和namenode之后没有使用hdfs,我看到这个例子挂了。