使用hdfs-mount挂载HDFS
hdfs-mount是一个将HDFS挂载为本地Linux文件系统的工具,使用go语言开发,不依赖libdfs和java虚拟机。它允许将远程HDFS作为本地Linux文件系统挂载,并允许任意应用程序或shell脚本以高效和安全的方式访问HDFS作为普通文件和目录。
1、特性(计划)简介
以下翻译自 hdfs-mount/README.md
- 高性能
- 使用protocol buffers协议直接连接HDFS和Linux内核FUSE接口(无需Java虚拟机)
- 针对吞吐量密集型工作负载进行设计和优化(尽可能以延迟交换吞吐量)
- 完全流式传输和自动预读支持
- 并发操作
- 在内存中缓存元数据 (速度非常快 l!)
- 高稳定性和强大的故障处理行为
- 自动重试和故障转移,全部可配置
- 可选的延迟挂载, 在 HDFS 可用之前
- 读写操作都支持
- 支持随机写入[慢,但功能正确]
- 支持文件截断
- (可选)扩展ZIP存档,并根据需要提取内容
- 这为”数百万个小文件在HDFS上“(millions of small files on HDFS)问题提供了有效的解决方案
- 对CoreOS和Docker友好
- 可选择打包为静态链接的独立可执行文件
2、构建程序
我的系统环境是CentOS 7.0 x86_64,以下所有操作都是基于此。
先安装编译所需的必要工具软件:
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),所以需要保持网络通畅。
3、使用hdfs-mount挂载HDFS
因为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秒)
使用hdfs-mount挂载HDFS的更多相关文章
- fuse挂载hdfs目录到linux本地
1,安装fuse yum -y install hadoop-hdfs-fuse 2.修改环境变量 vi /etc/profile 增加如下配置: JAVA_HOME=/usr/jdk64/jdk1. ...
- fuse-dfs挂载hdfs实录
部署安装了最新稳定版hadoop2.2.0.然后在网上找来fuse-dfs编译教程.可是最后失败了.至今原因未知--,错误描写叙述为:Transport endpoint is not connect ...
- hdfs文件系统挂载
简要说明: 使用fuse将hdfs文件系统挂载远程服务器上,像使用nfs和glusterfs那样可以挂载共享存储 fuse安装 fuse可以编译安装或者通过CDH或ambari源yum安装 此处使用a ...
- [HDFS Manual] CH6 HDFS Federation
HDFS Federation HDFS Federation 1 Background 2.多个namenode/namespace 2.1 关键好处 3 联合配置 3.1 配置 3.2 格式化na ...
- [HDFS Manual] CH2 HDFS Users Guide
2 HDFS Users Guide 2 HDFS Users Guide 2.1目的 2.2.概述 2.3.先决条件 2.4. Web Interface 2.5. Shell Command 2. ...
- [HDFS Manual] CH1 HDFS体系结构
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...
- HDFS之四:HDFS原理解析(总体架构,读写操作流程)
前言 HDFS 是一个能够面向大规模数据使用的,可进行扩展的文件存储与传递系统.是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和 存储空间.让实际上是通过网络来访问文件 ...
- linux mount挂载设备(u盘,光盘,iso等 )使用说明
对于新手学习,mount 命令,一定会有很多疑问.其实我想疑问来源更多的是对linux系统本身特殊性了解问题. linux是基于文件系统,所有的设备都会对应于:/dev/下面的设备.如: [cheng ...
- mount挂载和交换分区swap
目录 mount挂载 挂载方法 选项 查看设备 卸载命令 文件挂载配置文件fstab 交换文件与分区 swap优先级 三个工具free,df,du 扩展 移动介质 使用光盘 挂载USB设备 mount ...
随机推荐
- pycharm 里运行 django 工程 You must either define the environment variable DJANGO_SETTINGS_MODULE 错误
pycharm 里运行 django 工程出现错误(在命令行直接运行ok): django.core.exceptions.ImproperlyConfigured: Requested settin ...
- 自定义View(四),onMeasure
转自:http://blog.csdn.net/a396901990/article/details/36475213 简介: 在自定义view的时候,其实很简单,只需要知道3步骤: 1.测量--on ...
- linux设备驱动程序-i2c(0)-i2c设备驱动源码实现
(基于4.14内核版本) 为了梳理清楚linux内核中的i2c实现框架,从本文开始,博主将分几个章节分别解析i2c总线在linux内核中的形成过程.匹配过程.以及设备驱动程序源码实现. 在介绍linu ...
- Vmware克隆Centos6.5虚拟机网卡无法启动问题
1.编辑eth0的配置文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0,删除HWADDR地址那一行及UUID的行如下: #HWADDR=:0c::::9f ...
- Nginx的特性功能-反向代理、负载均衡、缓存、动静分离、平滑升级
反向代理 nginx配置文件 events { } 事件驱动 httpd { } 关于httpd相关的配置 server { } 定义虚拟主机 location { } ...
- C++学习(12)—— 运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 1.加号运算符重载 作用:实现两个自定义数据类型相加的运算 #include <iostream> #i ...
- httprunner学习18-多进程运行模式
前言 使用Locust进行性能测试时,当一台单机不足以模拟所需的用户数量的时候,可以使用主从模式,启动一个master节点,多个slave节点. 主从模式 loucsts 是httprunner 里面 ...
- Linux下如何退出vim的一些常用命令总结
1.保存并退出 linux下安装好了vim以及gcc后,我们开始新建一个c文件,例如: vim test.c 之后进入vim的编辑框中,点击i进入插入模式,开始编辑程序,当你编写好自己的程序之后,按E ...
- libimobiledevice的安装与使用
说明:libimobiledevice相当于安卓的adb,可以使用命令对ios应用进行安装卸载等操作. 在MacOS下安装libimobiledevice: $ brew uninstall idev ...
- SpringBoot整合Spring Data Elasticsearch
Spring Data Elasticsearch提供了ElasticsearchTemplate工具类,实现了POJO与elasticsearch文档之间的映射 elasticsearch本质也是存 ...