首页 > 大数据 > Hadoop > libhdfs的编译安装和配置(转)
硬件:IBM HS21
操作系统:Centos 6.2, 2.6.32内核版本
hadoop版本:hadoop-0.20.203.1
安装目录:hadoop:/home/shim/hadoop
libhdfs是hadoop为C/C++访问分布式文件系统提供的JNI接口,不同于JNI编程,libhdfs为C/C++开发者提供了较为丰富的API函数,可以直接调用,而不需要在本地先成生DLL文件,再由java程序加载。libhdfs的开发滞后于hadoop的版本发行,分布式文件系统的一些新的功能可能没有实现。详细的API函数参见:http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/fs/FileSystem.html。
样例代码:
-——————————————————————————————————————————————
1、环境变量
$vim /etc/profile
把运行libhdfs的需要的.jar文件加到CLASSPATH中。一种方法是把$HADOOP_HOME、$HADOOP_HOMElib下的所有jar文件都加入进来;另一种方法是只加入用到的.jar包,后一种方法参看了网上的文章
http://blog.csdn.net/deqingguo/article/details/7004898
实验中采用后一种方法:
——————————————————————————————————————————————
#add $HADOOP_HOME/*.jar to CLASSPATHException in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/configuration/Configuration
...
Call to org.apache.hadoop.fs.Filesystem::get(URI, Configuration) failed!
/etc/ld.so.conf.d是一个目录信息,可用root权限直接添加一条文件信息进去:
$vim /etc/ld.so.conf.d/hdfs.conf
————————————————————————————————————————————
/home/shim/hadoop/c++/Linux-amd64-64/lib
/usr/java/jdk1.6.0_31/jre/lib/amd64/server
————————————————————————————————————————————
保存退出,运行命令使生效:
$/sbin/ldconfig -v
或
$ldcofig
3、Makefile文件
简单的小程序可以用shell命令行的方式进行编译,一般而言用Makefile是更为方便简洁的方法。提供一个Makefile的模板:
————————————————————————————————————————————
HADOOP_INSTALL=/home/shim/hadoop
PLATFORM=Linux-i386-32
JAVA_HOME=/usr/java/jdk1.6.0_31
CPPFLAGS= -I$(HADOOP_INSTALL)/src/c++/libhdfs
LIB = -L$(HADOOP_INSTALL)/c++/Linux-amd64-64/lib/
libjvm=/usr/java/jdk1.6.0_31/jre/lib/amd64/client/libjvm.so
LDFLAGS += -lhdfs
testHdfs: testHdfs.c
clean:
————————————————————————————————————————————
Makefile中LIB和libjvm的变量其实在动态链接库中已经设置,这里依然列出来是为了Makefile的规范性
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23630255/viewspace-1120162/ ,如需转载,请注明出处,否则将追究法律责任。