使用FUSE-DFS Mount HDFS

原文引自:[url=http://jiangbo.me/blog/2012/10/23/mount-hdfs-with-fuse-dfs/]http://jiangbo.me/blog/2012/10/23/mount-hdfs-with-fuse-dfs/[/url]

[size=x-large]介绍[/size]
Hadooop源码中自带了contrib/fuse-dfs模块,用于实现通过libhdfs和fuse将HDFS mount到*inux的本地。

[size=x-large]编译[/size]
[size=large]环境[/size]
[list]
[*]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(系统默认)
[/list]
[size=large]编译libhdfs[/size]
修改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)


[size=large]编译[/size]
在$HADOOP_HOME目录下执行
$ ant compile -Dcompile.c++=true -Dlibhdfs=true


编译结果将生成libhdfs库,位于$HADOOP_SRC_HOME/build/libhdfs目录下
[size=x-large]编译fuse-dfs[/size]
[size=large]安装fuse库[/size]

sudo lsmod|grep fuse


检查是否已经安装,如没有,可通过:
yum -y install fuse fuse-devel fuse-libs


安装相关依赖库。
[size=large]设置编译库路径[/size]

export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib:$HADOOP_SRC_HOME/build/c++/Linux-amd64-64/lib:$JAVA_HOME/jre/lib/amd64/server


[size=large]编译[/size]
编译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 $@


[size=x-large]使用[/size]
[size=large]mount[/size]

新建一个空目录


挂载dfs
$./fuse_dfs_wrapper.sh dfs://master_node(namenode地址):port /tmp/dfs -d 

-d表示debug模式,如果正常,可以将-d参数去掉。

[size=large]unmount[/size]
卸载可通过:
fusermount -u /tmp/dfs
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值