Hadoop有一个抽象的文件系统概念,HDFS只是其中的一个实现。Java抽象类 org.apache.hadoop.fs.FileSystem展示了Hadoop的一个文件系统,而且有几个具体实现,如表
文件系统
|
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或是
Google的GFS的文件
系统,用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很相似)
来解决S3的5 GB
文件大小限制
|
Hadoop提供了许多文件系统的接口,它一般使用URI 方案来选取合适的文件系统实例交互。举例来说,我们在前一小节中研究的文件系统shell可以操作所有的Hadoop文件系统。列出本地文件系统根目录下的文件,输入以下命令:
尽管运行那些可访问任何文件系统的MapReduce程序是可行的(有时也很方便),但在处理大量数据时,仍然需要选择一个有最优本地数据的分布式文件系统。
* 文件操作
* 查看目录文件
* $ hadoop dfs -ls /user/cl
*
* 创建文件目录
* $ hadoop dfs -mkdir /user/cl/temp
*
* 删除文件
* $ hadoop dfs -rm /user/cl/temp/a.txt
*
* 删除目录与目录下所有文件
* $ hadoop dfs -rmr /user/cl/temp
*
* 上传文件
* 上传一个本机/home/cl/local.txt到hdfs中/user/cl/temp目录下
* $ hadoop dfs -put /home/cl/local.txt /user/cl/temp
*
* 下载文件
* 下载hdfs中/user/cl/temp目录下的hdfs.txt文件到本机/home/cl/中
* $ hadoop dfs -get /user/cl/temp/hdfs.txt /home/cl
*
* 查看文件
* $ hadoop dfs –cat /home/cl/hdfs.txt
*
* Job操作
* 提交MapReduce Job, Hadoop所有的MapReduce Job都是一个jar包
* $ hadoop jar <local-jar-file> <java-class> <hdfs-input-file> <hdfs-output-dir>
* $ hadoop jar sandbox-mapred-0.0.20.jar sandbox.mapred.WordCountJob /user/cl/input.dat /user/cl/outputdir
*
* 杀死某个正在运行的Job
* 假设Job_Id为:job_201207121738_0001
* $ hadoop job -kill job_201207121738_0001
参考《hadoop权威指南》
(责任编辑:IT) |