badqiu

          XPer
          隨筆 - 46, 文章 - 3, 評論 - 195, 引用 - 0
          數(shù)據(jù)加載中……

          擴(kuò)展hadoop hdfs,實現(xiàn)WebDav協(xié)議,將hdfs mount為linux本地文件系統(tǒng)

          使用hadoop的shell命令進(jìn)行hdfs的操作十分不方便,最好的辦法當(dāng)然是將hdfs映射為本地文件系統(tǒng). 而通過實現(xiàn)WebDav Http協(xié)議, ?結(jié)合WebDav的眾多客戶端,可以將hdfs映射為windows或是linux的本地文件系統(tǒng).而使用api存儲文件時,也將對應(yīng)用透明,如使用本地文件系統(tǒng)一樣使用hdfs. 這個特性hadoop也正在開發(fā)之中,還未完成,jira 地址: https://issues.apache.org/jira/browse/HADOOP-496

          ?


          1.Webdav協(xié)議介紹:
          WebDAV(Web-based Distributed Authoring and Versioning)是基于 HTTP 1.1 的一個通信協(xié)議。它為 HTTP 1.1 添加了一些擴(kuò)展(就是在 GET、POST、HEAD 等幾個 HTTP 標(biāo)準(zhǔn)方法以外添加了一些新的方法),使得應(yīng)用程序可以直接將文件寫到 Web Server 上,并且在寫文件時候可以對文件加鎖,寫完后對文件解鎖,還可以支持對文件所做的版本控制。


          2.項目介紹

          本項目是一個hadoop namenode server的webdav協(xié)議訪問代理,實現(xiàn) client => hdfs-webdav proxy => hadoop namenode server的中間層. 項目修改自tomcat的WebdavServlet,實現(xiàn)了WebDAV level 2協(xié)議.


          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遠(yuǎn)程調(diào)用實現(xiàn),并且各個版本間可能不兼容(0.17.x與0.18.x之間就不兼容),所以需要將WEB-INF/lib/hadoop-xxxx-core.jar的版本與NameNode Server的版本一致.現(xiàn)war自帶的是hadoop-0.18.1-core.jar的版本

          部署至tomcat

          以上修改完,將war包部署至tomcat或是jboss中,部署在其它服務(wù)器中時需要tomcat的catalina.jar與tomcat-coyote.jar,拷貝至WEB-INF/lib目錄,因為現(xiàn)在項目是從tomcat的WebdavServlet中修改而來的

          測試是否部署成功

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


          4.webdav客戶端訪問

          實現(xiàn)webdav的hdfs可以映射為windows或是linux本地文件夾.

          window網(wǎng)上鄰居訪問

          打開“網(wǎng)上鄰居”,添加網(wǎng)上鄰居,在“請鍵入網(wǎng)上鄰居的位置”中輸入 Web 文件夾的 URL.

          http://localhost:8080/hdfs-webdav

          然后按照向?qū)У奶崾纠^續(xù)下一步就可以了.

          Linux mount WebDav為本地文件系統(tǒng)

          linux下相要mount WebDAV server為本地文件系統(tǒng),必須要使用davfs2,項目網(wǎng)址:http://dav.sourceforge.net/

          安裝davfs2請使用編譯安裝

          davfs2編譯時依賴于neon,neon是一個WebDAV client library. neon網(wǎng)址http://www.webdav.org/neon/

          dsvfs2在mount時會使用fuse或是coda這兩個文件系統(tǒng),其中一個文件系統(tǒng)linux一般都有自帶,davfs2在mount時會首先嘗試使用fuse,失敗時再使用coda

          但在CentOs中使用coda時發(fā)生如下錯誤,所以后面安裝fuse, fuse網(wǎng)址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目錄已經(jīng)自帶了這三個包

          1.運行./configure
          2.運行make
          3.運行make install
          

          運行davfs2的mount命令

          在mount之前,davfs2需要創(chuàng)建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
          或是至項目網(wǎng)站下載: http://code.google.com/p/hdfs-webdav/downloads/list

          posted on 2008-11-24 11:21 badqiu 閱讀(2780) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 桃源县| 新安县| 沛县| 饶河县| 牟定县| 延边| 澄江县| 定结县| 连平县| 理塘县| 即墨市| 星座| 南宫市| 封开县| 临城县| 平昌县| 滦南县| 浦县| 宽城| 宿迁市| 淮滨县| 金川县| 银川市| 襄城县| 桂阳县| 印江| 永济市| 临沭县| 乌鲁木齐县| 博爱县| 光山县| 平南县| 宜都市| 崇左市| 泌阳县| 连江县| 甘孜| 长顺县| 上犹县| 武汉市| 公主岭市|