`
bojiang
  • 浏览: 14970 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用FUSE-DFS Mount HDFS

    博客分类:
  • HDFS
阅读更多
原文引自: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
分享到:
评论

相关推荐

    hadoop-fuse-dfs安装.docx

    - 下载CDH集群中的HDFS客户端配置文件,并将`core-site.xml`和`hdfs-site.xml`两个文件复制到`/etc/hadoop/conf.empty`目录下覆盖原有文件,以确保Hadoop-Fuse-Dfs使用的是与CDH集群一致的配置信息。 #### 三、...

    如何编译fuse-dfs

    ### 如何编译fuse-dfs #### 知识点概览 本文主要介绍在CentOS...通过以上步骤,你就可以成功地在CentOS环境下编译并使用fuse-dfs,实现HDFS的文件系统级别的访问。这对于开发和测试Hadoop应用程序来说是非常有用的。

    FUSE-3.6X10 FUSE-4.5X8-SMD 保险丝PCB封装库(ALTIUM 2D 3D视图库).PcbLib

    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-2.8.0.tar.gz

    Fuse-2.8.0是该系统的某一版本,发布于2009年,为用户提供了一种灵活的方式来创建定制化的、基于用户空间的文件系统解决方案。 ### FUSE 概述 FUSE 的主要思想是将文件系统操作的处理逻辑从内核移到用户空间。这样...

    fuse-ext2-0.0.7

    在使用fuse-ext2-0.0.7时,用户需要先安装FUSE库,然后下载并编译该软件。编译完成后,可以通过命令行工具将EXT2或NTFS分区挂载到Linux文件系统中。例如,使用以下命令挂载一个NTFS分区: ```bash sudo mount -t ...

    fuse-2.9.3.tar.gz

    《fuse-2.9.3:探索开源文件系统接口》 在开源软件的世界里,FUSE(Filesystem in Userspace)是一个不可或缺的名字。它提供了一种机制,允许用户空间程序实现自己的文件系统,而无需深入操作系统内核进行编程。...

    fuse-2.7.1.tar.gz

    1. **解压源代码**:首先,我们需要解压收到的资源文件`fuse-2.7.1.tar.gz`,使用`tar -zxvf fuse-2.7.1.tar.gz`命令即可。 2. **配置**:进入解压后的目录,运行`./configure`来检查系统环境并生成Makefile。 3. **...

    fuse-libs-2.9.2-7.el7.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-sshfs-2.5-1.el7.rf.x86_64.rpm

    fuse-sshfs-2.5-1.el7.rf.x86_64.rpm包 下载后使用 rpm -ivh fuse-sshfs-2.5-1.el7.rf.x86_64.rpm使用

    Linux-fuse-2.7.4.版本

    在获取到`fuse-2.7.4.tar`这个压缩包后,你可以按照以下步骤进行编译和安装: 1. **解压源代码**:首先,你需要使用`tar`命令来解压缩文件,例如: ``` tar -xvf fuse-2.7.4.tar ``` 这将创建一个名为`fuse-...

    cenos fuse-exfat

    标题中的“cenos fuse-exfat”指的是在CentOS操作系统中使用fuse-exfat工具来支持exFAT文件系统。exFAT是一种由微软开发的文件系统,适用于大容量存储设备,如U盘和移动硬盘,因为它能处理大于4GB的单个文件。在...

    fuse-2.9.0.tar.gz

    标题"FUSE-2.9.0.tar.gz"指的是FUSE(Filesystem in Userspace)的一个具体版本,2.9.0。FUSE是一种开源的Linux内核模块,它允许普通用户在用户空间创建自己的文件系统,而无需了解复杂的内核编程。这个压缩包文件...

    fuse-2.8.4.tar

    fuse-2.8.4

    fuse-sshfs-2.5-1.el7.x86_64.rpm

    fuse-sshfs-2.5-1.el7.x86_64.rpm

    fuse-exfat-1.3.0-1.el7.x86-64.rpm安装包

    linux mount u盘 exfat,CentOS 挂载 exfat 和 FAT32格式的U盘

    fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm

    离线安装包,亲测可用

    fuse-2.7.4.tar.gz和ntfs-3g_ntfsprogs-2011.4.12.tgz.zip

    在提供的文件“fuse-2.7.4.tar.gz”和“ntfs-3g_ntfsprogs-2011.4.12.tgz.zip”中,包含了两个关键的组件:FUSE(File System in Userspace)和ntfs-3g,它们是Linux系统下挂载NTFS格式U盘的重要工具。 FUSE(File ...

    fuse-overlayfs-0.7.8-1.module_el8.5.0+1004+c00a74f5.ppc64le.rpm

    官方离线安装包,亲测可用

    fuse-devel-2.9.2-11.el7.x86_64.rpm

    离线安装包,亲测可用

    fuse-2.7.4.tar.gz 解压即可使用

    官方的linuxkernel版本到2.6.14才添加了FUSE模块,因此2.4的内核模块下,用户如果要在FUSE中创建一个文件系统,需要先安装一个FUSE内核模块,然后使用FUSE库和API来创建。 FUSE具有的特点如下:  库文件简单  ...

Global site tag (gtag.js) - Google Analytics