Hadoop有一個抽象的文件系統概念,HDFS只是其中的一個實現。Java抽象類 org.apache.hadoop.fs.FileSystem展現了Hadoop的一個文件系統,並且有幾個具體實現,如表 3-1所示。shell
文件系統apache |
URI |
Java實tcp 現(所有在 |
描述oop |
Localspa |
file.net |
fs.LocalFileSystem設計 |
針對有客戶端校驗和接口 的本地鏈接磁盤使用 的文件系統。針對沒 有校驗和的本 地文件系統使用 RawLocalFileSystem。 詳情參見第4章 |
HDFS |
hdfs |
hdfs.Distributed- FileSystem |
Hadoop的分佈式 文件系統。HDFS 被設計爲結合使用 Map-Reduce實現高 效工做 |
HFTP |
hftp |
hdfs.HftpFileSystem |
一個在HTTP上提 供對HDFS只讀訪 問的文件系統(雖然 其名稱爲HFTP,但 它與FTP無關)。通 常與distcp結合使用 (參見第3章),在運 行不一樣版本HDFS的 集羣間複製數據 |
HSFTP |
hsftp |
hdfs.Hsftp- |
在HTTPS上提供對 HDFS只讀訪問的 文件系統(同上,與 FTP無關) |
HAR |
har |
fs.HarFileSystem |
一個構建在其餘文 件系統上來存檔文 件的文件系統。Hadoop 存檔通常在HDFS中 的文件存檔時使用, 以減小名稱節點內存的使用 |
KFS(Cloud-Store) |
kfs |
fs.kfs.Kosmos- |
cloudstore(其前身是 Kosmos文件系統) 是類似於HDFS或是 Google的GFS的文件 系統,用C++編 寫。詳 情可參見http://kosmosfs. |
FTP |
ftp |
fs.ftp.FTP- |
由FTP服務器支持的 文件系統 |
S3(本地) |
s3n |
fs.s3native.Native- |
由Amazon S3支 持的文件 系統。可參見 http://wiki.apache.org |
S3(基於 |
s3 |
fs.s3.S3FileSystem |
由 Amazon S3支 持的文件系統, 以塊格式存儲文件 (與HDFS很類似) 來解決S3的5 GB 文件大小限制 |
Hadoop提供了許多文件系統的接口,它通常使用URI 方案來選取合適的文件系統實例交互。舉例來講,咱們在前一小節中研究的文件系統shell能夠操做全部的Hadoop文件系統。列出本地文件系統根目錄下的文件,輸入如下命令:
1. % hadoop fs -ls file:///
儘管運行那些可訪問任何文件系統的MapReduce程序是可行的(有時也很方便),但在處理大量數據時,仍然須要選擇一個有最優本地數據的分佈式文件系統,如HDFS或者KFS。