java - 我还需要做什么来设置 libhdfs(对于 C++)?

标签 java c++ hadoop

我是 hadoop 的新手,我安装了 hadoop。 Datanode、Namenode等都上来了,一切顺利。我必须单独下载 libhdfs 还是它包含在包中?我只能看到它的 Java 内容。非常感谢。

最佳答案

有一个例子: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 之前自己(通过 JNI)实例化 jvm,因为 libhdfs 代码错误地将 YamVM 识别为正在运行的 JVM,因此不会实例化

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

关于java - 我还需要做什么来设置 libhdfs(对于 C++)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23834824/

相关文章:

java - 配置 IReport 和 Firebird

java - 抛出异常后的空白消息对话框

c++ - 为什么 ARM 使用两条指令来屏蔽一个值?

apache - 关于Apache Hive Map方面的加入

hadoop - LEFT ONLY 加入 Pig (A - B)

java - 如何保持我的程序运行直到按下菜单上的退出? - 图书馆申请

java - java代码中的正则表达式代码

c++ - 了解 LeakSanitizer 输出

c++ - 没有调用复制构造函数

hadoop - OCR/Parquet文件的存储策略