使用hadoop的shell命令进行hdfs的操作十分不方便,最好的办法当然是将hdfs映射为本地文件系统. 而通过实现WebDav Http协议,
结合WebDav的众多客户端,可以将hdfs映射为windows或是linux的本地文件系统.而使用api存储文件时,也将对应用透明,如使用本地文件系统一样使用hdfs.
1.Webdav协议介绍:
WebDAV(Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1
的一个通信协议。它为 HTTP 1.1 添加了一些扩展(就是在 GET、POST、HEAD 等几个 HTTP
标准方法以外添加了一些新的方法),使得应用程序可以直接将文件写到 Web Server
上,并且在写文件时候可以对文件加锁,写完后对文件解锁,还可以支持对文件所做的版本控制。
2.项目介绍
本项目是一个hadoop namenode server的webdav协议访问代理,实现 client => hdfs-webdav
proxy => hadoop namenode server的中间层.
项目修改自tomcat的WebdavServlet,实现了WebDAV level 2协议.
3.war部署
修改配置
修改hdfs-webdav.war里面的WEB-INF/classes/hadoop-site.xml
修改fs.default.name属性,以确定hdfs-webdav要连接的hadoop NameNode Server,示例:
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.52.129:9000/</value>
<description>namenode</description>
</property>
替换hadoop-xxxx-core.jar版本
由于hadoop有自己的rpc远程调用实现,并且各个版本间可能不兼容
(0.17.x与0.18.x之间就不兼容),所以需要将WEB-INF/lib/hadoop-xxxx-core.jar的版本与NameNode Server的版本一致.现war自带的是hadoop-0.18.1-core.jar的版本
部署至tomcat
以上修改完,将war包部署至tomcat或是jboss中,部署在其它服务器中时需要tomcat的catalina.jar与tomcat-
coyote.jar,拷贝至WEB-INF/lib目录,因为现在项目是从tomcat的WebdavServlet中修改而来的
测试是否部署成功
访问http://localhost:8080/hdfs-webdav
4.webdav客户端访问
实现webdav的hdfs可以映射为windows或是linux本地文件夹.
window网上邻居访问
打开“网上邻居”,添加网上邻居,在“请键入网上邻居的位置”中输入 Web 文件夹的 URL.
http://localhost:8080/hdfs-webdav
然后按照向导的提示继续下一步就可以了.
Linux mount WebDav为本地文件系统
linux下相要mount WebDAV server为本地文件系统,必须要使用davfs2,项目网址:http://dav.sourceforge.net/
安装davfs2请使用编译安装
davfs2编译时依赖于neon,neon是一个WebDAV client library. neon网址http://www.webdav.org/neon/
dsvfs2在mount时会使用fuse或是coda这两个文件系统,其中一个文件系统linux一般都有自带,davfs2在mount时会首先尝试使用fuse,失败时再使用coda
但在CentOs中使用coda时发生如下错误,所以后面安装fuse, fuse网址http://fuse.sourceforge.net/
/sbin/mount.davfs: no free coda device to mount
/sbin/mount.davfs: trying fuse kernel file system
/sbin/mount.davfs: can't open fuse device
neon,davfs2,fuse编译安装: 项目的linux_mount_lib目录已经自带了这三个包
1.运行./configure
2.运行make
3.运行make install
运行davfs2的mount命令
在mount之前,davfs2需要创建davfs2用户及用户组
[root@datacenter5 usr]# mkdir /data/hdfs
[root@datacenter5 usr]# groupadd davfs2
[root@datacenter5 usr]# useradd -g davfs2 davfs2
[root@datacenter5 usr]# mount.davfs http://192.168.55.104:8080/hdfs-webdav
/data/hdfs
项目下载: http://hdfs-webdav.googlecode.com/files/hdfs-webdav.war
或是至项目网站下载: http://code.google.com/p/hdfs-webdav/downloads/list
相关推荐
大数据 Hadoop HDFS 详解
将Hadoop分布式文件系统以NFS形式进行挂载
深度剖析Hadoop HDFS-高清-完整目录-2017年3月。。。。
《HDFS——Hadoop分布式文件系统深度实践》
java整合spring和hadoop HDFS全部jar
Hadoop HDFS分布式文件系统 常用命令汇总
snapshot为hadoop2.1.0时新增加的功能。 主要为防止用户误删数据,和数据备份的作用 快照的对象为HDFS目录,前提是该目录是可以允许设置快照的(SnapShotable)
赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...
Hadoop HDFS和MapReduce架构浅析.pdf 更多资源请点击:https://blog.csdn.net/weixin_44155966
Hadoop存储系统HDFS的文件是分块存储,每个文件块默认大小为32MB。 T F 评测结果:答案正确(5 分) 1-2 HDFS系统采用NameNode定期向DataNode发送心跳消息,用于检测系统是否正常运行。 T F
允许将远程HDFS挂载为本地Linux文件系统,并允许任意应用程序/ Shell脚本以有效且安全的方式将HDFS作为普通文件和目录进行访问。 功能(计划中) 高性能 使用协议缓冲区直接为FUSE和HDFS连接Linux内核(不需要Java...
#资源达人分享计划#
Hadoop分布式文件系统HDFS的实战,需要的Hdfs.java文件 public static void main(String[] args) throws Exception { //上传文件到hadoop uploadFile(); createFile(); createDir(); fileRename(); deleteFile...
Hadoop HDFS文件系统技术概述.pptx
Hadoop HDFS文件系统技术概述.pdf
赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...
hadoop的 hdfs配置文件 对文件的每项property进行中文描述 希望的家支持 过几天还会献上其他
hadoop HDFS学习课件,根据hadoop权威指南和apache官网参考手册整理。整个PPT比较大,教学时需要拆分使用
分布式文件系统HADOOPHDFS与传统文件系统LINUXFS的比较与分析.pdf
从hadoop hdfs中读取数据,进行groupby 显示统计结果count、avg、max,用文字和柱状图两种图形界面表示