用fuse-dfs挂载hdfs到linux本地目录
需要的组件
组件 | 版本 |
---|---|
os | redhat 6.0 |
hadoop | 0.20.203.0 |
gcc | 4.4.5 |
jdk | 1.6.0.31 |
fuse | 2.8.3 |
其它:automake,autoconf,m4,libtool,pkgconfig,fuse,fuse-devel,fuse-libs。
下载安装ant
1 | #tar zxvf apache-ant-1.8.2-bin.tar.gz |
环境变量
1 | HADOOP_HOME="/usr/local/src/lanhadoop/hadoopinstall" |
编译libhdfs
进入hadoop安装路径运行以下命令
1 | #/usr/local/src/apache-ant-1.8.2/bin/ant compile-c++-libhdfs -Dlibhdfs=1 -Dcompile.c++=1 |
这一步是编译libhdfs,因为libhdfs需要交叉编译,直接到src里面编译会报错,所以需要用ant编译。注意OS_ARCH和OS_BIT必须设置,否则会失败。
编译fuse-dfs
hadoop 0.20.203.0版本中fuse存在一个bug,需要先修改掉才能继续编译。
(在hadoop 1.0.1下,不需再修改fuse_connect.c,此BUG已修复)
1 | 打开$HADOOP_HOME/src/contrib/fuse-dfs/src/fuse_connect.c |
如果编译失败,比较可能的原因是找不到libhdfs,请参看第一步的ln -s。
环境配置
编辑/etc/fuse.conf,写入以下内容
1 | user_allow_other |
编辑$HADOOP_HOME/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh
1 | if [ "$HADOOP_HOME" = "" ]; then |
mount
设置文件权限
1 | chmod +x /data/soft/hadoop-2.20.1/build/contrib/fuse-dfs/fuse_dfs_wrapper.sh |
手动挂载hdfs文件系统
1 | fuse_dfs_wrapper.sh dfs://192.168.1.11:54310 /mnt/dfs |
开机自动挂载hdfs文件系统
1 | vi /etc/fstab |