当前位置: > Linux集群 > Hadoop >

Hadoop文件系统和文件命令

时间:2015-10-08 10:47来源:linux.it.net.cn 作者:it.net.cn

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文件系统。列出本地文件系统根目录下的文件,输入以下命令:

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

 

尽管运行那些可访问任何文件系统的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)
------分隔线----------------------------