原文引自:
http://jiangbo.me/blog/2012/10/23/mount-hdfs-with-fuse-dfs/
介绍
Hadooop源码中自带了contrib/fuse-dfs模块,用于实现通过libhdfs和fuse将HDFS mount到*inux的本地。
编译
环境
- Linux: 2.6.18-164.el5 x86_64
- JDK: 1.6.0_23 64bit
- Hadoop: 0.19.1 下面假设源码目录为$HADOOP_SRC_HOME
- Ant: 1.8.4
- GCC: 4.1.2(系统默认)
编译libhdfs
修改configure执行权限
$chmod +x $HADOOP_SRC_HOME/src/c++/pipes/configure
$chmod +x $HADOOP_SRC_HOME/src/c++/utils/configure
修改Makefile,调整编译模式
64位机中,需要修改libhdfs的Makefile,将GCC编译的输出模式由32(-m32)位改为64(-m64)位
CC = gcc
LD = gcc
CFLAGS = -g -Wall -O2 -fPIC
LDFLAGS = -L$(JAVA_HOME)/jre/lib/$(OS_ARCH)/server -ljvm -shared -m64(这里) -Wl,-x
PLATFORM = $(shell echo $$OS_NAME | tr [A-Z] [a-z])
CPPFLAGS = -m64(还有这里) -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/$(PLATFORM)
编译
在$HADOOP_HOME目录下执行
$ ant compile -Dcompile.c++=true -Dlibhdfs=true
编译结果将生成libhdfs库,位于$HADOOP_SRC_HOME/build/libhdfs目录下
编译fuse-dfs
安装fuse库
sudo lsmod|grep fuse
检查是否已经安装,如没有,可通过:
yum -y install fuse fuse-devel fuse-libs
安装相关依赖库。
设置编译库路径
export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$HADOOP_SRC_HOME/build/c++/Linux-amd64-64/lib:$JAVA_HOME/jre/lib/amd64/server
编译
编译contrib/fuse-dfs模块:
ant compile-contrib -Dlibhdfs=1 -Dfusedfs=1
编译完成将会生成$HADOOP_HOME/build/contrib/fuse-dfs/目录,内有:
fuse-dfs]$ ls
fuse_dfs fuse_dfs_wrapper.sh test
其中fuse_dfs是可执行程序,fuse_dfs_wrapper.sh是包含一些环境变量设置的脚本,不过其中大部分需要修改:(
修改fuse_dfs_warpper.sh
#Hadoop安装目录
export HADOOP_HOME=/home/bo.jiangb/yunti-trunk/build/hadoop-0.19.1-dc
#将fuse_dfs加入到PATH
export PATH=$HADOOP_HOME/contrib/fuse_dfs:$PATH
#将hadoop的jar加入到CLASSPATH
for f in ls $HADOOP_HOME/lib/*.jar $HADOOP_HOME/*.jar ; do
export CLASSPATH=$CLASSPATH:$f
done
#设置机器模式
export OS_ARCH=amd64
#设置JAVA_HOME
export JAVA_HOME=/home/admin/tools/jdk1.6
#将libhdfs加入到链接库路径中
export LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/$OS_ARCH/server:/home/bo.jiangb/yunti-trunk/build/libhdfs:/usr/local/lib
./fuse_dfs $@
使用
mount
新建一个空目录
挂载dfs
$./fuse_dfs_wrapper.sh dfs://master_node(namenode地址):port /tmp/dfs -d
-d表示debug模式,如果正常,可以将-d参数去掉。
unmount
卸载可通过:
fusermount -u /tmp/dfs
分享到:
相关推荐
CDH hadoop-fuse-dfs的安装指导,是我在工作过程中安装步鄹的总结。
本文档描述的是编译fuse-dfs的过程,快下载吧!
FUSE-3.6X10 FUSE-4.5X8-SMD 保险丝PCB封装库(ALTIUM 2D 3D视图库): Component Count : 9 Component Name ----------------------------------------------- FUSE-2.6X6.1-SMD FUSE-3.6X10 FUSE-3.6X10H FUSE-4.5...
fuse-sshfs-2.5-1.el7.rf.x86_64.rpm包 下载后使用 rpm -ivh fuse-sshfs-2.5-1.el7.rf.x86_64.rpm使用
fuse-libs-2.9.2-7.el7.x86_64.rpm rpm包 安装后执行rpm -ivh fuse-libs-2.9.2-7.el7.x86_64.rpm 可直接使用
fuse-2.9.3.tar.gz
linux mount u盘 exfat,CentOS 挂载 exfat 和 FAT32格式的U盘
fuse的最新版本,fuse是用户自己空间上的文件系统,
离线安装包,亲测可用
fuse-2.7.4.tar.gz fuse-2.7.4.tar.gz
fuse-ext2-0.0.7,Linux下挂载ntfs文件系统
离线安装包,亲测可用
Linux下挂载NTFS系统时候经常挂不上去,这时候就要用ntfs-3g工具,装这个工具之前要安装fuse,资源已给出。
离线安装包,亲测可用
fuse2.7.4模块和ntfs-3g 2011.4.12帮助linux挂载ntfs格式的u盘。主要用于linux操作系统。
fuse-3.2.2.tar.xz 用户空间文件系统(Filesystem in Userspace),是Linux 中用于挂载某些网络空间,如SSH,到本地文件系统的模块,在SourceForge上可以找到相关内容。
fuse-sshfs-2.5-1.el7.x86_64.rpm
fuse-2.7.4-8_12.el5.i386.rpm fuse-kmdl-2.6.18-274.18.1.el5-2.7.4-8_12.el5.i686.rpm fuse-libs-2.7.4-8_12.el5.i386.rpm fuse-ntfs-3g-2013.1.13-2.el5.rf.i386.rpm fuse-2.7.4-8_12.el5.x86_64.rpm fuse...
离线安装包,亲测可用
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装