Hadoop HDFS 的 HttpFS


參考

  • Hadoop權威指南 第3章中3.4節

背景

要寫一個操作HDFS的web后台(文件CRUD),雖然可以直接使用HDFS提供的FileSystem類然后通過get方法獲取到一個DistributedFileSystem(假設提供的文件url的模式是hdfs://開頭)的實例來操作HDFS,但是這種方法有個限制就是調用方必須能和HDFS集群中的所有主機通信。然后這個要求有時並不能滿足,比如HDFS集群部署在一個內部隔離網絡中,而WEB服務器部署在另外一個網絡中,雖然namenode做了NAT可以被外部網絡訪問,但如前所述這是不夠的。

WebHDFS

WebHDFS提供了訪問HDFS的RESTful接口,在自己安裝的Hadoop 2.6中是默認啟動的。它和Web管理界面同在namenode的50070端口下,比如可以通過如下地址來列出HDFS根目錄的文件:

http://10.214.208.138:50070/webhdfs/v1/?op=LISTSTATUS

{"FileStatuses":{"FileStatus":[
{"accessTime":0,"blockSize":0,"childrenNum":1,"fileId":16389,"group":"supergroup","length":0,"modificationTime":1438583475410,"owner":"ubuntu","pathSuffix":"user","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},
{"accessTime":0,"blockSize":0,"childrenNum":0,"fileId":16387,"group":"supergroup","length":0,"modificationTime":1438583448451,"owner":"ubuntu","pathSuffix":"users","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"},
{"accessTime":0,"blockSize":0,"childrenNum":0,"fileId":16391,"group":"supergroup","length":0,"modificationTime":1438584555313,"owner":"ubuntu","pathSuffix":"yellowbook","permission":"755","replication":0,"storagePolicy":0,"type":"DIRECTORY"}
]}}

通過將HDFS文件路徑的模式部分換成webhdfs可以獲得WebHdfsFileSystem,但是使用它還是需要跟集群不同機器進行交互的。

HttpFS

HttpFS本質上是一個代理服務,它部署在能夠完全訪問HDFS集群的網絡內,對於文件CURD的操作全部提交給HttpFS服務,然后由它去更HDFS集群交互,所以客戶端不需要能夠訪問所有HDFS主機。HttpFS服務提供的操作接口是HTTP協議的RESTful接口,但是官方沒有提供現成的Java客戶端。HttpFS服務默認沒有啟動,可以使用在hadoop-2.6.0/sbin中提供的httpfs.sh腳本來啟動。HttpFS相關的文件在hadoop-2.6.0/share/hadoop/httpfs目錄下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM