一、环境说明
1)操作系统及核心程序的版本:
OS | Ubuntu12.04.3 LTS |
JDK | jdk-7u40-linux-x64 |
HADOOP | hadoop-1.2.1 |
二、安装fuse-dfs
使用root用户完成以下操作:
1、安装依赖包
apt-get install autoconf automake libtool make gawk g++
2、安装ant到/usr/ant
ant下载地址:http://mirror.esocc.com/apache/ant/binaries/apache-ant-1.9.3-bin.tar.gz
tar -zxf apache-ant-1.9.3-bin.tar.gz
cp -r apache-ant-1.9.3 /usr/ant
3、卸载已有fuse,安装fuse
apt-get purge fuse
apt-get purge libfuse2
tar -zxf fuse-2.9.3.tar.gz
cd fuse-2.9.3
./configure --prefix=/usr/fuse
make
make install
4、设置环境变量
ln -s /usr/fuse/bin/fusermount /usr/bin/
ln -s /usr/ant/bin/ant /usr/local/bin/
vi /etc/profile
export ANT_HOME=/usr/ant export FUSE_HOME=/usr/fuse export OS_ARCH=amd64 export OS_BIT=64 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:$FUSE_HOME/lib
source /etc/profile
5、编译libhdfs,fuse-dfs与hdfs的接口
cd $HADOOP_HOME/
ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1
ln -s c++/Linux-$OS_ARCH-$OS_BIT/lib build/libhdfs
6、编译fuse-dfs
ln -s /usr/fuse/include/* /usr/include/
ln -s /usr/fuse/lib/libfuse.so /usr/lib/
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
undefined reference to `fuse_get_context'错误处理:复制编译错误的命令将-L 和 -l参数放到最后编译,如下:(参考 http://wiki.apache.org/hadoop/BuildFuseDfs023 )
cd src/contrib/fuse-dfs/src gcc -Wall -O3 -o fuse_dfs fuse_dfs.o fuse_options.o fuse_trash.o fuse_stat_struct.o fuse_users.o fuse_init.o fuse_connect.o fuse_impls_access.o fuse_impls_chmod.o fuse_impls_chown.o fuse_impls_create.o fuse_impls_flush.o fuse_impls_getattr.o fuse_impls_mkdir.o fuse_impls_mknod.o fuse_impls_open.o fuse_impls_read.o fuse_impls_release.o fuse_impls_readdir.o fuse_impls_rename.o fuse_impls_rmdir.o fuse_impls_statfs.o fuse_impls_symlink.o fuse_impls_truncate.o fuse_impls_utimens.o fuse_impls_unlink.o fuse_impls_write.o -L/usr/hadoop/build/libhdfs -lhdfs -L/lib -lfuse -L/usr/java/jre/lib/amd64/server -ljvm
重新编译:
cd $HADOOP_HOME/
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
7、挂载hdfs到本地
编辑fuse_dfs_wrapper.sh,头上加入环境参数,尾行修改为如下:
vi $HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh文件头增加:
export JAVA_HOME=/usr/java export HADOOP_HOME=/usr/hadoop export ANT_HOME=/usr/ant export FUSE_HOME=/usr/fuse export PATH=$PATH:$HADOOP_HOME/contrib/fuse_dfs for f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar do export CLASSPATH=$CLASSPATH:$f done export OS_ARCH=amd64 export OS_BIT=64 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:$FUSE_HOME/lib
末尾修改为:
fuse_dfs $@
建立链接
ln -s ${HADOOP_HOME}/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh /usr/local/bin
ln -s ${HADOOP_HOME}/build/contrib/fuse-dfs/fuse_dfs /usr/local/bin/
挂载hdfs到本地
mkdir -p /manager/hdfs
fuse_dfs_wrapper.sh dfs://mt-hadoop-name-vip:9000 /manager/hdfs
8、卸载hdfs:
fusermount -u /manager/hdfs
转载于:https://blog.51cto.com/fire7758/1373944