Hadoop有一个抽象的文件系统概念,HDFS只是其中的一个实现。Java抽象类 org.apache.hadoop.fs.FileSystem展示了Hadoop的一个文件系统,而且有几个具体实现,如表 3-1所示。

文件系统

URI

 方案

Java

(全部在

 org.apache.hadoop)

描述

Local

file

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-

 FileSystem

HTTPS上提供对

HDFS只读访问的

文件系统(同上,与

FTP无关)

HAR

har

fs.HarFileSystem

一个构建在其他文

件系统上来存档文

件的文件系统。Hadoop

存档一般在HDFS

的文件存档时使用,

以减少名称节点内存的使用

KFS(Cloud-Store)

kfs

fs.kfs.Kosmos-

 FleSystem

cloudstore(其前身是

Kosmos文件系统)

是相似于HDFS或是

GoogleGFS的文件

系统,用C++

写。详

情可参见http://kosmosfs.

 sourceforge.net/

FTP

ftp

fs.ftp.FTP-

 FileSystem

FTP服务器支持的

文件系统

S3(本地)

s3n

fs.s3native.Native-

 S3FileSystem.

Amazon S3

持的文件

系统。可参见

http://wiki.apache.org

 /hadoop/AmazonS3

S3(基于

 )

s3

fs.s3.S3FileSystem

Amazon S3

持的文件系统

以块格式存储文件

(HDFS很相似)

来解决S35 GB

文件大小限制

Hadoop提供了许多文件系统的接口,它一般使用URI 方案来选取合适的文件系统实例交互。举例来说,我们在前一小节中研究的文件系统shell可以操作所有的Hadoop文件系统。列出本地文件系统根目录下的文件,输入以下命令:

1.  % hadoop fs -ls file:/// 

尽管运行那些可访问任何文件系统的MapReduce程序是可行的(有时也很方便),但在处理大量数据时,仍然需要选择一个有最优本地数据的分布式文件系统,如HDFS或者KFS