Components of Hadoop

在上一章节我们了解了如何安装及配置Hadoop。我们了解了不同节点的作用以及这些节点是如何工作的,还了解了如何配置这些节点。现在我们可以运行Hadoop了,现在我们从程序的角度了解一下Hadoop框架。

首先我们讲解HDFS,HDFS用来存储你的Hadoop应用的各种数据。之后我们讲解MapReduce框架的细节。第一章时,我们已经看到了MapReduce程序,但是我们只是停留在概念层。在这一章我们将进入Java类和方法层面,当然还包括如何部署。我们还会知道如何使用不同数据格式进行读写操作。

Working with files in HDFS

你可以将100TB的数据集作为一个单独的数据存储在HDFS中,有时仅仅这一点就足以强过其他文件系统。我们在第二章讨论了HDFS的复制机制。HDFS隐藏了这些底层的处理机制,让开发者感觉只是在处理某个单独的文件。

HDFS并不是Unix的原生的文件系统,所以标准的Unix文件工具,比如ls和cp不可用,并且也无法使用标准的Unix文件IO操作。但是,Hadoop提供一系列与Unix非常相似的命令和工具。下一节,我们将讨论这些Hadoop文件操作shell命令。之后,我们将看到Hadoop HDFS Java API

基本的文件操作命令:

hadoop fs -cmd <args>

其中cmd指具体的文件操作命令。args是命令参数。

通常来讲cmd命令与Unix的命令相同。比如说,文件列表命令就是:

hadoop fs -ls

我们看一下常见的文件操作命令包括:

1.新建文件及目录

2.检索文件

3.删除文件

新建文件及目录:

在运行Hadoop程序之前,我们需要将数据先放进HDFS。我们先假设已经格式化好了整个HDFS系统,并且运行了Hadoop程序。

HDFS的默认工作路径是 /usr/$USER,这个$USER就是指的登陆名。但是这个目录并不会自动建立,所以我们需要使用mkdir命令手动建立这个目录。比如我的用户名是chuck。当然各位看官如果想自己试试,那要使用你自己的用户名。

hadoop fs -mkdir /user/chuck

Hadoop's mkdir 命令使用-p参数回自动创建父一级的目录。

使用ls命令可以查看:

hadoop fs -ls /

这是你就会看到刚刚创建的文件目录的了。

使用 hadoop fs -lsr / 还可以看到其子目录下的内容起作用与Unix下的ls -r效果相同。


通过URI精确访问指定的目录  

Hadoop 文件命令行可以让HDFS与本地文件系统交互。同时也可以与Amazon S3交互。一个

URI 指向一个确定的文件或者目录。完整的URI格式为:scheme://authority/path。scheme

类似于协议的意思。authority是指NameNode所在的服务器host。path是指文件或者路径的位置。  

比如说,一个标准的伪分布式的HDFS运行在本机的9000端口。那么如果想要访问user/chuck目

录下的example.txt文件。其URI就是hdfs://localhost:9000/user/chuck/example.txt。 

运行的命令就是 hadoop fs -cat hdfs://localhost:9000/user/chuck/example.txt。

如你所见,大多数的设置下,URI中不需要指定scheme://authority。处理本地文件时,你可能

更愿意使用Unix 命令而不是hadoop file 命令。 所以在本地文件与hdfs的拷贝过程中,

在URI上即便不加file:scheme,put命令与get命令也会使用本地系统作为目的地或者数据源

另外,如果你在Hadoop 的配置中配置了scheme://authority部分。那么在你的命令中就可以省略

这个部分。比如:如果你的conf/hadoop-site.xml中配置如下: 

<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>

在这个配置下,URI hdfs://localhost:9000/user/chuck/example.txt可以缩写为 

/user/chuck/example.txt

此外,HDFS默认使用的目录为:/user/$USER 这个$USER就是你的登录用户名。如果你用chuck登录

,那么如果要访问的URI是 hdfs://localhost:9000/user/chuck/example.txt。你甚至可以缩写为

example.txt。

此时,你在用cat命令时,只用输入: 

hadoop fs -cat example.txt

 


 

RETRIEVING FILES(查看文件内容)

Hadoop的get命令用来hdfs文件系统中的文件拷贝到本地文件系统。如果我们想将example.txt文件

拷贝到本地目录。使用如下命令:

 hadoop fs -get example.txt

这个命令将会把example.txt文件拷贝到本地的当前目录。

另外hadoop的cat命令可以允许我们查看文件中的内容。  

hadoop fs -cat example.txt

我们当然也可以使用Unix shell的管道方式链接另一个命令。 

比如,如果一个文件很大,而这事你想快速的查看其中的内容,你可以使用hadoop 的cat命令的输出作为

Unix head命令的输入,比如:

hadoop fs -cat example.txt | head

目前,Hadoop本身也支持tail命令: 

hadoop fs -tail example.txt

DELETING FILES(删除文件)
 

ok,不废话,言简意该:如下 

hadoop fs –rm example.txt

LOOKING UP HELP(查看帮助)
 
ok,不废话,言简意该:继续如下 
 
hadoop fs –help ls
posted on 2011-11-09 17:54  John Liang  阅读(769)  评论(0编辑  收藏  举报