目录java
hdfs-mount
是一个将HDFS挂载为本地Linux
文件系统的工具,使用go语言开发,不依赖libdfs和java虚拟机。它容许将远程HDFS做为本地Linux文件系统挂载,并容许任意应用程序或shell脚本以高效和安全的方式访问HDFS做为普通文件和目录。git
如下翻译自 hdfs-mount/README.mdgithub
个人系统环境是CentOS 7.0 x86_64
,如下全部操做都是基于此。golang
先安装编译所需的必要工具软件:shell
yum install make golang
而后下载hdfs-mount
的源码回来,源码仓库地址:https://github.com/microsoft/hdfs-mount.git缓存
git clone https://github.com/microsoft/hdfs-mount.git
而后就能够编译了,先进入源码目录安全
# 进入源码根目录 cd hdfs-mount # 执行构建 make
编译的过程当中由于要下载依赖(bazil/fuse、x/net/context、protobuf/proto),因此须要保持网络通畅。bash
由于hdfs-mount
基于FUSE(用户空间文件系统)框架设计,因此须要先安装fuse
内核模块,并加载(若是没有加载fuse
内核模块,则没法hdfs-mount操做时候将失败,并提示加载)。网络
# 安装fuse模块 sudo yum install fuse # 加载fuse模块 sudo modprobe fuse
而后就可使用hdfs-mount
进行HDFS的挂载了,挂载后可使用dd
命令进行一下读写速度测试。并发
# 挂载,由于hdfs-mount并不会后台运行,因此使用&放入后台 sudo ./hdfs-mount 192.168.0.32:9000 /mnt/hdfs & # 测试一下读取速度 dd bs=64k if=/mnt/hdfs/test.img of=/dev/null 记录了24421+1 的读入 记录了24421+1 的写出 1600485903字节(1.6 GB)已复制,9.56565 秒,167 MB/秒
hdfs-mount
的一些命令行参数以下,更多细节可执行hdfs-mount --help
查看。
# 查看使用帮助信息 ./hdfs-mount --help # 挂载必要选项: HDFS名字节点 端口 挂载位置 ./hdfs-mount NameNode:Port MountPoint # 下面是一些可选参数 -allowedPrefixes string # 容许的前缀字符串,以逗号分隔的远程HDFS上容许访问的路径前缀列表,若是指定了,挂载点将仅公开对这些前缀路径的访问(默认*) -expandZips # 实现zip文件的自动展开(访问zip包内部文件) -fuse.debug # 日志输出FUSE处理的线性信息 -lazy # 延迟加载,容许在HDFS就绪前挂载HDFS文件系统 -logLevel int # 日志输出级别控制。0:仅fatal/err日志;1:+warning日志;2:+info日志 -readOnly # 启用只读挂载 -retryMaxAttempts int # 失败操做的最大重试次数(默认99999999) -retryMaxDelay duration # 两次重试之间的最大延时(默认1分0秒) -retryMinDelay duration # 两次重试之间的最小延时(注意,第一次重试老是当即进行)(默认为1秒) -retryTimeLimit duration # 失败操做的全部重试尝试的时间限制 (默认为 5分0秒)