通過Webdav共享HDFS---Server端

Webdav的war包下載路徑:http://down.51cto.com/data/845202


1.Webdav協議介紹:

WebDAVWeb-based Distributed Authoring andVersioning)是基於 HTTP 1.1 的一個通信協議。它爲 HTTP 1.1 添加了一些擴展(就是在 GETPOSTHEAD 等幾個 HTTP 標準方法以外添加了一些新的方法),使得應用程序可以直接將文件寫到 Web Server 上,並且在寫文件時候可以對文件加鎖,寫完後對文件解鎖,還可以支持對文件所做的版本控制。



2.項目介紹

本項目是一個hadoop namenode serverwebdav協議訪問代理,實現 client => hdfs-webdav proxy =>hadoop namenode server的中間層. 項目修改自tomcatWebdavServlet,實現了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.2.9:9000/</value>

  <description>namenode</description>

</property>

替換hadoop.jar版本

由於hadoop有自己的rpc遠程調用實現,並且各個版本間可能不兼容,所以需要將WEB-INF/lib/hadoop-xxxx-core.jar的版本與NameNode Server的版本一致.war自帶的是hadoop-0.18.1-core.jar的版本,這裏用到的hadoop的版本是1.3.0,而且從1.0開始這個jar文件的命名方式出現了變化,不再是以往的hadoop-x.x.x-core.jar而變成了hadoop-core-x.x.x.jar這樣的明明方式。

查看hadoop版本可以用命令,hadoop –version命令查詢。

PS.這裏部署出現了些問題,現象就是明明hadoop的版本是1.3.0,但是使用命令查看hadoop的版本顯示卻是1.4.0。解決方法,將hadoop-core-1.3.0.jar文件重命名爲hadoop-core-1.4.0.jar後解決。

部署至tomcat

以上修改完,war包部署至tomcat或是jboss,部署在其它服務器中時需要tomcatcatalina.jartomcat-coyote.jar,拷貝至WEB-INF/lib目錄,因爲現在項目是從tomcatWebdavServlet中修改而來的

測試是否部署成功

訪問elinks http://localhost:8080/hdfs-webdav --dump

如果顯示界面如下,就表示配置成功了:

DirectoryListing For /

 --------------------------------------------------------------------------

   Filename                                  Size             Last Modified

      [1]tmp/                                             Sat, 27 Apr 2013              

 --------------------------------------------------------------------------

 Apache Tomcat/6.0.20

References

  Visible links

  1. http://localhost:8080/hdfs-webdav/



4.webdav客戶端訪問

實現webdavhdfs可以映射爲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/

dsvfs2mount時會使用fuse或是coda這兩個文件系統,其中一個文件系統linux一般都有自帶,davfs2mount時會首先嚐試使用fuse,失敗時再使用coda

但在CentOs中使用coda時發生如下錯誤,所以後面安裝fuse, fuse網址http://fuse.sourceforge.net/

/sbin/mount.davfs: nofree 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

運行davfs2mount命令

mount之前,davfs2需要創建davfs2用戶及用戶組

[root@datacenter5usr]# mkdir /data/hdfs

[root@datacenter5usr]# groupadd davfs2

[root@datacenter5usr]# useradd -g davfs2 davfs2

[root@datacenter5usr]# mount.davfs http://192.168.55.104:8080/hdfs-webdav /data/hdfs





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章