用Hadoop中的libhdfs和fuse


OS版本:CentOS 5.4

Hadoop版本:0.20.203.0

gcc:系统默认4.1.2

Jdk:1.6.0.21

FUSE:2.7.4



环境需求:

automake,autoconf,m4,libtool,pkgconfig,fuse,fuse-devel,fuse-libs。


需要外部下载ant 1.8.2,在apache网站下载即可


安装过程:


#wget
#unzip apache-ant-1.8.2-bin.zip
#export JAVA_HOME=/usr/java/jdk1.6.0_21
#export HADOOP_HOME=/opt/modules/hadoop/hadoop-0.20.203.0
#export OS_ARCH=amd64
###i386/amd64
#export OS_BIT=64
###32/64
#export ANT_HOME=/root/apache-ant-1.8.2
#export PATH=$PATH:$ANT_HOME/bin
#export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:${HADOOP_HOME}/build/c++/Linux-$OS_ARCH-$OS_BIT/lib:/usr/local/lib:/usr/lib

#yum -y install fuse fuse-devel fuse-libs
#modprobe fuse
####设置环境变量,也可写入profile####


红字部分为其上只变量的选项,根据服务器操作系统版本进行变更。


一、编译libhdfs


然后进入hadoop安装路径运行以下命令


#/root/apache-ant-1.8.2/bin/ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1
#ln -s c++/Linux-$OS_ARCH-$OS_BIT/lib build/libhdfs


这一步是编译libhdfs,因为libhdfs需要交叉编译,直接到src里面编译会报错,所以需要用ant编译。注意OS_ARCH和OS_BIT必须设置,否则会失败。


二、编译fuse-dfs


hadoop 0.20.203.0版本中fuse存在一个bug,需要先修改掉才能继续编译。


打开$HADOOP_HOME/src/contrib/fuse-dfs/src/fuse_connect.c


找到
hdfsFS fs = hdfsConnectASUSEr(hostname, port, user, (const char **)groups, numgroups);

修改为
hdfsFS fs = hdfsConnectAsUser(hostname, port, user);

然后运行编译
#/root/apache-ant-1.8.2/bin/ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1


如果编译失败,比较可能的原因是找不到libhdfs,请参看第一步的ln -s。


三、环境配置


然后编辑/etc/fuse.conf,写入以下内容

user_allow_other
mount_max=100


编辑$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh


if [ "$HADOOP_HOME" = "" ]; then
export HADOOP_HOME=/opt/modules/hadoop/hadoop-0.20.203.0
fi

export PATH=$HADOOP_HOME/build/contrib/fuse_dfs:$PATH

for f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar ; do
export    CLASSPATH=$CLASSPATH:$f
done

if [ "$OS_ARCH" = "" ]; then
export OS_ARCH=amd64
fi

if [ "$JAVA_HOME" = "" ]; then
export    JAVA_HOME=/usr/java/jdk1.6.0_21
fi

if [ "$LD_LIBRARY_PATH" = "" ]; then
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:/usr/local/share/hdfs/libhdfs/:/usr/local/lib
fi

./fuse_dfs $@


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pxzsx.html