搜档网
当前位置:搜档网 › hadoop入门手册

hadoop入门手册

Hadoop入门实战手册

北京宽连十方数字技术有限公司

技术研究部

(2011年7月)

目录

1概述 (3)

1.1什么是Hadoop? (3)

1.2为什么要选择Hadoop? (4)

1.2.1系统特点 (4)

1.2.2使用场景 (4)

2术语 (5)

3Hadoop的单机部署 (5)

3.1目的 (5)

3.2先决条件 (6)

3.2.1支持平台 (6)

3.2.2所需软件 (6)

3.2.3安装软件 (6)

3.3下载 (6)

3.4运行Hadoop集群的准备工作 (6)

3.5单机模式的操作方法 (7)

3.6伪分布式模式的操作方法 (7)

3.6.1配置 (7)

3.6.2免密码ssh设置 (8)

3.6.3执行 (8)

4Hadoop集群搭建过程手记 (11)

4.1免密码SSH设置 (11)

4.2Hadoop软件安装 (12)

4.3Master(85)配置 (12)

4.4Slave(60,245上)配置 (14)

4.5初始化和启动hadoop集群 (14)

4.5.1初始化文件系统 (14)

4.5.2启动Hadoop (15)

4.5.3停止Hadoop (16)

4.6测试 (17)

4.7管理界面与命令 (19)

4.7.1hdfs运行状态界面 (19)

4.7.2Map-reduce的运行状态界面 (19)

4.7.3直接的命令行查看 (19)

4.7.1运行的进程查看 (20)

5架构分析 (22)

5.1HDFS (22)

5.1.1HDFS的三个重要角色 (23)

5.1.2HDFS设计特点 (24)

5.2MapReduce (25)

5.2.1算法介绍 (25)

5.2.2Hadoop框架下的mapreduce (27)

5.3综合架构分析 (28)

6Hadoop的应用 (37)

7系统维护 (38)

7.1Hadoop的系统监控 (38)

7.2Hadoop中的命令(Command)总结...................................... 错误!未定义书签。

7.3NameNode与JobTracker单点故障说明 (39)

7.4经验总结 (39)

7.5如何在一个hadoop集群新增或删除一些机器而不重启 (40)

7.5.1新增节点 (40)

7.5.2删除节点 (40)

7.6其它日常问题说明 (42)

7.6.1datanode启动失败,各slave节点的namespaceIDs与masters不同 (42)

7.6.2taskTracker和jobTracker 启动失败 (43)

7.6.3Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out (44)

7.6.4Too many fetch-failures (44)

7.6.5能够启动datanode,但无法访问,也无法结束的错误 (44)

7.6.6java.io.IOException: Could not obtain block: (45)

https://www.sodocs.net/doc/1f15341839.html,ng.OutOfMemoryError: Java heap space (45)

7.6.8解决hadoop OutOfMemoryError问题: (45)

7.6.9Hadoop java.io.IOException: (45)

7.7防火墙的端口开放要求 (46)

7.7.1与HDFS有关的地址及端口属性 (46)

7.7.2与MapReduce 有关的地址及端口属性 (47)

8附录 (48)

8.1hadoop历史 (48)

8.2Hadoop大记事 (49)

8.3Hadoop的几个主要子项目 (50)

8.4官方集群搭建参考 (50)

8.4.1配置文件 (50)

8.4.2集群配置说明 (51)

1 概述

作什么事情之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How (怎么做)。避免将技术误用于不适合的场景,这一点非常重要。

1.1 什么是Hadoop?

Hadoop 由Apache Software Foundation 公司于2005 年秋天作为Lucene 的子项目Nutch 的一部分正式引入。它受到最先由Google Lab 开发的MapReduce 和Google File System 的启发。2006 年3 月份,MapReduce 和Nutch Distributed File System (NDFS) 分别被纳入称为Hadoop 的项目中。

Hadoop并不仅仅是一个用于存储的分布式文件系统,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的基础框架。它由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。

下图是Hadoop的体系结构:

Hadoop框架中最核心的设计就是:MapReduce和HDFS。

1) MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释

MapReduce就是“任务的分解与结果的汇总”。

2) HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布

式计算存储提供了底层支持。

1.2 为什么要选择Hadoop?

1.2.1 系统特点

下面列举hadoop主要的一些特点:

1) 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。

2) 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计

可达数千个节点。

3) 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,

这使得处理非常的快速。

4) 可靠性(Reliable):hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署

(redeploy)计算任务。

1.2.2 使用场景

个人觉得最适合的就是海量数据的分析,其实Google最早提出MapReduce也就是为了海量数据分析。同时HDFS最早是为了搜索引擎实现而开发的,后来才被用于分布式计算框架中。海量数据被分割于多个节点,然后由每一个节点并行计算,将得出的结果归并到输出。同时第一阶段的输出又可以作为下一阶段计算的输入,因此可以想象到一个树状结构的分布式计算图,在不同阶段都有不同产出,同时并行和串行结合的计算也可以很好地在分布式集群的资源下得以高效的处理。

2 术语

1)Namenode:HDFS采用master/slave架构。一个HDFS集群是由一个Namenode

和一定数目的Datanodes组成。Namenode是一个中心服务器,负责管理文件系统

的名字空间(namespace)以及客户端对文件的访问。Namenode执行文件系统的名

字空间操作,比如打开、关闭、重命名文件或目录。它也负责确定数据块到具体

Datanode节点的映射

2)Datanode: 集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存

储。HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。

从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode

上。Datanode负责处理文件系统客户端的读写请求。在Namenode的统一调度下进

行数据块的创建、删除和复制。

3)Secondnamenode: 光从字面上来理解,很容易让一些初学者先入为主的认为:

SecondaryNameNode(snn)就是NameNode(nn)的热备进程。其实不是。snn是

HDFS架构中的一个组成部分,但是经常由于名字而被人误解它真正的用途,其实

它真正的用途,是用来保存namenode中对HDFS metadata的信息的备份,并减少

namenode重启的时间。

4)Jobtracker和Tasktracher: JobTracker是MapReduce框架中最主要的类之一,

所有job的执行都由它来调度,而且Hadoop系统中只配置一个JobTracker 应

用。它们都是由一个master服务JobTracker和多个运行于多个节点的

slaver服务TaskTracker两个类提供的服务调度的。 master负责调度

job的每一个子任务task运行于slave上,并监控它们,如果发现有失

败的task就重新运行它,slave则负责直接执行每一个task。

TaskTracker都需要运行在HDFS的DataNode上,而JobTracker则不需

要,一般情况应该把JobTracker 部署在单独的机器上。

3 Hadoop的单机部署

参考:

https://www.sodocs.net/doc/1f15341839.html,/common/docs/current/single_node_setup.html#Supported+Plat forms

3.1目的

本章节的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。

3.2先决条件

3.2.1支持平台

1)GNU/Linux是产品开发和运行的平台。Hadoop已在有2000个节点的GNU/Linux

主机组成的集群系统上得到验证。

2)Win32平台是作为开发平台支持的。由于分布式操作尚未在Win32平台上充分测试,

所以还不作为一个生产平台被支持。

3.2.2所需软件

Linux和Windows所需软件包括:

1.Sun Java TM1.6.x,必须安装。

2.ssh必须安装并且保证sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护

进程。

3.2.3安装软件

如果你的集群尚未安装所需软件,你得首先安装它们。

以Linux为例:

$ sudo apt-get install ssh

$ sudo apt-get install rsync

3.3下载

为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的稳定发行版。

下载地址:https://www.sodocs.net/doc/1f15341839.html,/apache/hadoop/common/stable/

3.4运行Hadoop集群的准备工作

解压所下载的Hadoop发行版。编辑conf/hadoop-env.sh文件,至少需要将JAVA_HOME 设置为Java安装根路径。

尝试如下命令:

$ bin/hadoop

将会显示hadoop脚本的使用文档。

现在你可以用以下三种支持的模式中的一种启动Hadoop集群:

?单机模式

?伪分布式模式

?完全分布式模式

3.5单机模式的操作方法

默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。这对调试非常有帮助。

下面的实例将已解压的conf目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。输出写入到指定的output目录。

$ mkdir input

$ cp conf/*.xml input

$ bin/hadoop jar hadoop-examples-0.20.203.0.jar grep input output 'dfs[a-z.]+' $ cat output/*

注:语法不理解没关系看下面进一步说明

显示结果

1 dfsadmin

3.6伪分布式模式的操作方法

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。

3.6.1配置

注:以前的版本是hadoop-site.xml,可hadoop在0.20版本,配置文件由以前的

hadoop-site.xml文件变成三个配置文件core-site.xml,hdfs- site.xml,mapred-site.xml.

内在的原因是因为hadoop代码量越来越宠大,拆解成三个大的分支进行独立开发,配置文件也独立了

conf/core-site.xml:

https://www.sodocs.net/doc/1f15341839.html,

hdfs://localhost:9000

conf/hdfs-site.xml:

dfs.replication

1

conf/mapred-site.xml:

mapred.job.tracker

localhost:9001

3.6.2免密码ssh设置

现在确认能否不输入口令就用ssh登录localhost:

$ ssh localhost

如果不输入口令就无法用ssh登陆localhost,执行下面的命令:

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

3.6.3执行

首先使用hadoop命令对Hadoop File System (HDFS) 进行格式化。

首先,请求namenode 对DFS 文件系统进行格式化。在安装过程中完成了这个步骤,但是了解是否需要生成干净的文件系统是有用的。

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/hadoop namenode –format

注:在确认请求之后,文件系统进行格式化并返回一些信息:

11/07/12 17:47:12 INFO https://www.sodocs.net/doc/1f15341839.html,Node: STARTUP_MSG:

/************************************************************

STARTUP_MSG: Starting NameNode

STARTUP_MSG: host = TEST085/202.102.110.206

STARTUP_MSG: args = [-format]

STARTUP_MSG: version = 0.20.203.0

STARTUP_MSG: build =

https://www.sodocs.net/doc/1f15341839.html,/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by 'oom' on Wed May 4 07:57:50 PDT 2011

************************************************************/

11/07/12 17:47:12 INFO util.GSet: VM type = 32-bit

11/07/12 17:47:12 INFO util.GSet: 2% max memory = 19.33375 MB

11/07/12 17:47:12 INFO util.GSet: capacity = 2^22 = 4194304 entries

11/07/12 17:47:12 INFO util.GSet: recommended=4194304, actual=4194304

11/07/12 17:47:13 INFO namenode.FSNamesystem: fsOwner=hadoop

11/07/12 17:47:13 INFO namenode.FSNamesystem: supergroup=supergroup

11/07/12 17:47:13 INFO namenode.FSNamesystem: isPermissionEnabled=true

11/07/12 17:47:13 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100

11/07/12 17:47:13 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)

11/07/12 17:47:13 INFO https://www.sodocs.net/doc/1f15341839.html,Node: Caching file names occuring more than 10 times

11/07/12 17:47:13 INFO common.Storage: Image file of size 112 saved in 0 seconds.

11/07/12 17:47:13 INFO common.Storage: Storage directory

/tmp/hadoop-hadoop/dfs/name has been successfully formatted.

11/07/12 17:47:13 INFO https://www.sodocs.net/doc/1f15341839.html,Node: SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG: Shutting down NameNode at TEST085/202.102.110.206

************************************************************/

接下来,启动Hadoop 守护进程。

启动Hadoop守护进程:

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/start-all.sh

注:1)Hadoop守护进程的日志写入到${HADOOP_LOG_DIR}目录(默认

是${HADOOP_HOME}/logs)

2)启动hadoop,但ssh 端口不是默认的22怎么样?好在它可以配置。在

conf/hadoop-env.sh里改下。如:

export HADOOP_SSH_OPTS="-p 1234"

浏览NameNode和JobTracker的网络接口,它们的地址默认为:

?NameNode - http://localhost:50070/

?JobTracker - http://localhost:50030/

将输入文件拷贝到分布式文件系统:

$ bin/hadoop fs -put conf input

运行发行版提供的示例程序:

$ bin/hadoop jar hadoop-examples-0.20.203.0.jar grep input output 'dfs[a-z.]+'查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:

$ bin/hadoop fs -get output output

$ cat output/*

或者

在分布式文件系统上查看输出文件:

$ bin/hadoop fs -cat output/*

完成全部操作后,停止守护进程:

$ bin/stop-all.sh

Hadoop 在这个伪分布式配置中启动5 个守护进程:namenode、secondarynamenode、datanode、jobtracker 和tasktracker。在启动每个守护进程时,会看到一些相关信息(指出存储日志的位置)。每个守护进程都在后台运行。图1 说明完成启动之后伪分布式配置的架构。

图1. 伪分布式Hadoop 配置

4 Hadoop集群搭建过程手记

参考:https://www.sodocs.net/doc/1f15341839.html,/common/docs/r0.19.2/cn/cluster_setup.html

先用了三台服务器作了hadoop集群的部署测试,服务器有192.168.10.85(下面简称85), 192.168.10.160(下面简称160), 192.168.10.254(下面简称254),架构规化如下:

1)85作为NameNode,SecondaryNameNode,JobTracker;

2)160和254作为 DataNode,TaskTracker

4.1 免密码SSH设置

打通ssh,让85免登陆到160,254。打通过程如下:

1)名称节点85和数据节点(160,254)各自创建用户hadoop,使用相同的密码。

2)以hadoop用户名登陆名称节点(85)执行ssh-keygen -t rsa 然后一路回车,完毕

后生成文件.ssh/id_rsa.pub,把这个文件复制到当前位置,命名为authorized_keys;

然后执行命令 ssh 127.0.0.1,如果不需要密码则直接登陆进去的话,就达到要求;否则需检查authorized_keys的权限,看是否为644(-rw-r--r--)。

3)接下来,同样也hadoop用户登陆数据节点服务器(160,254),创建.ssh目录,并给

与600权限(chmod 600 .ssh); 再把名称服务器上的authorized_keys复制到目录数据节点(160,254)./ssh,注意权限和目录结构跟名称节点保持一致,然后再从名称节点用ssh登陆数据节点,如果不需要密码能登陆成功,则ssh的配置结束。

4.2 Hadoop软件安装

以hadoop用户登陆,将安装软件解压到集群内的所有机器上,编辑conf/hadoop-env.sh 文件,至少需要将JAVA_HOME设置为Java安装根路径(安装过程参考“3 hadoop的单机部署”)。

我们用HADOOP_HOME指定安装的根路径。通常集群里的所有机器的HADOOP_HOME路径相同,安装路径定为:/home/hadoop/hadoop-0.20.203.0

1) 进行JDK和内存占用配置:

conf/hadoop-env.sh需要修改的内容:

# The java implementation to use. Required.

export JAVA_HOME=/usr/local/java --修改成你自己jdk安装的目录

# The maximum amount of heap to use, in MB. Default is 1000.

export HADOOP_HEAPSIZE=200 --根据你的内存大小调整

2) 修改masters和slaves配置

修改文件/usr/local/hadoop/conf/slaves及/usr/local/hadoop/conf/masters,把数据节点的主机名加到slaves、名称节点主机名加到masters。可以加多个,每行一个。注意主机名需要在每个服务器的/etc/hosts映射好。

[hadoop@TEST085 hadoop-0.20.203.0]$ vi conf/slaves

192.168.10.160

192.168.10.245

[hadoop@TEST085 hadoop-0.20.203.0]$ vi conf/master

192.168.10.85

4.3 Master(85)配置

85为master结点,则85的配置文件如下:

hadoop在0.20版本,配置文件由以前的hadoop-site.xml文件变成三个配置文件core-site.xml,hdfs- site.xml,mapred-site.xml。内在的原因是因为hadoop代码量越来越宠大,拆解成三个大的分支进行独立开发,配置文件也独立了。

下面是三个配置文件示例:

[root@192.168.10.85 conf]# cat core-site.xml

https://www.sodocs.net/doc/1f15341839.html,

hdfs://192.168.168.85:9000

[root@192.168.10.85 conf]# cat hdfs-site.xml

dfs.replication

3

Default block replication.

The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time.

[root@192.168.10.85 conf]# cat mapred-site.xml

mapred.job.tracker

192.168.168.85:9001

设置系统环境,以方便执行hadoop命令

在/home/hadoop/.bashrc加入

export HADOOP_HOME=/root/hadoop/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/conf

export PATH=/root/hadoop/hadoop/bin:$PATH

4.4 Slave(60,245上)配置

在Slave(60,245上)上的配置文件如下(hdfs-site.xml不需要配置):[root@192.168.10.160 conf]# cat core-site.xml

https://www.sodocs.net/doc/1f15341839.html,

hdfs://192.168.10.85:9000

[root@192.168.10.160 conf]# cat mapred-site.xml

mapred.job.tracker

192.168.10.85:9001

4.5 初始化和启动hadoop集群

4.5.1 初始化文件系统

初始化namenode,为HDFS作第一次运行的准备。

$ bin/hadoop namenode –format

注:一看到format就和磁盘格式化联想到一起,然后这个format是对hdfs来说的,所以有些人害怕真的是格式化自己的文件系统了,其实大可不必担心,namenode format只是初始化一些目录和文件而已。

4.5.2 启动Hadoop

在master结点配置用户环境变量,在master结点192.168.10.85启动hadoop集群程序,

执行bin目录下的start-all.sh

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/start-all.sh

starting namenode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-namenode-TEST085.out

192.168.10.160: starting datanode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-datanode-DBSERVER.out

192.168.10.245: starting datanode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-datanode-localhost.localdomain.out 192.168.10.85: starting secondarynamenode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-secondarynamenode-TEST085.out starting jobtracker, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-jobtracker-TEST085.out

192.168.10.160: starting tasktracker, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-tasktracker-DBSERVER.out

192.168.10.245: starting tasktracker, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-tasktracker-localhost.localdomain.out

另也可以分步执行:

第一步启动hdfs;

[hadoop@TEST085 hadoop-0.20.203.0]$bin/start-dfs.sh

starting namenode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-namenode-TEST085.out 192.168.10.160: starting datanode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-datanode-DBSERVER.out 192.168.10.245: starting datanode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-datanode-localhost.loc aldomain.out

192.168.10.85: starting secondarynamenode, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-secondarynamenode-TEST 085.out

第二步启动map-reduce;

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/start-mapred.sh

starting jobtracker, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-jobtracker-TEST085.out 192.168.10.160: starting tasktracker, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-tasktracker-DBSERVER.o ut

192.168.10.245: starting tasktracker, logging to

/home/hadoop/hadoop-0.20.203.0/bin/../logs/hadoop-hadoop-tasktracker-localhost. localdomain.out

注:实际应用中NameNode和Jobtrachker不在同一台服务器上,则需要按下

面方式进行启动

在分配的NameNode上,运行下面的命令启动HDFS:

$ bin/start-dfs.sh

bin/start-dfs.sh脚本会参照NameNode上

${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上

启动DataNode守护进程。

在分配的JobTracker上,运行下面的命令启动Map/Reduce:

$ bin/start-mapred.sh

bin/start-mapred.sh脚本会参照JobTracker上

${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上

启动TaskTracker守护进程。

4.5.3 停止Hadoop

在分配的NameNode上,执行下面的命令停止HDFS:

$ bin/stop-dfs.sh

bin/stop-dfs.sh脚本会参照NameNode上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上停止DataNode守护进程。

在分配的JobTracker上,运行下面的命令停止Map/Reduce:

$ bin/stop-mapred.sh

bin/stop-mapred.sh脚本会参照JobTracker上${HADOOP_CONF_DIR}/slaves文件的内容,在所有列出的slave上停止TaskTracker守护进程。

4.6 测试

在hdfs上创建test1文件夹,上传文件到此目录下

[hadoop@TEST085 hadoop-0.20.203.0]$bin/hadoop fs -mkdir test1

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/hadoop fs -put ./README.txt test1

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/hadoop fs -ls

Found 1 items

drwxr-xr-x - hadoop supergroup 0 2011-07-21 19:58 /user/hadoop/test1

运行一个map-reduce示例程序wordcount,运行结果如下:

[hadoop@TEST085 hadoop-0.20.203.0]$ hadoop jar hadoop-examples-0.20.203.0.jar wordcount

/user/hadoop/test1/README.txt output1

结果如下:

11/07/22 15:21:29 INFO input.FileInputFormat: Total input paths to process : 1

11/07/22 15:21:30 INFO mapred.JobClient: Running job: job_201107221440_0001

11/07/22 15:21:31 INFO mapred.JobClient: map 0% reduce 0%

11/07/22 15:21:51 INFO mapred.JobClient: map 100% reduce 0%

11/07/22 15:22:09 INFO mapred.JobClient: map 100% reduce 100%

11/07/22 15:22:15 INFO mapred.JobClient: Job complete: job_201107221440_0001

11/07/22 15:22:15 INFO mapred.JobClient: Counters: 25

11/07/22 15:22:15 INFO mapred.JobClient: Job Counters

11/07/22 15:22:15 INFO mapred.JobClient: Launched reduce tasks=1

11/07/22 15:22:15 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=18252

11/07/22 15:22:15 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0

11/07/22 15:22:15 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0

11/07/22 15:22:15 INFO mapred.JobClient: Launched map tasks=1

11/07/22 15:22:15 INFO mapred.JobClient: Data-local map tasks=1

11/07/22 15:22:15 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=15479

11/07/22 15:22:15 INFO mapred.JobClient: File Output Format Counters

11/07/22 15:22:15 INFO mapred.JobClient: Bytes Written=1306

11/07/22 15:22:15 INFO mapred.JobClient: FileSystemCounters

11/07/22 15:22:15 INFO mapred.JobClient: FILE_BYTES_READ=1836

11/07/22 15:22:15 INFO mapred.JobClient: HDFS_BYTES_READ=1485

11/07/22 15:22:15 INFO mapred.JobClient: FILE_BYTES_WRITTEN=45989

11/07/22 15:22:15 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=1306

11/07/22 15:22:15 INFO mapred.JobClient: File Input Format Counters

11/07/22 15:22:15 INFO mapred.JobClient: Bytes Read=1366

11/07/22 15:22:15 INFO mapred.JobClient: Map-Reduce Framework

11/07/22 15:22:15 INFO mapred.JobClient: Reduce input groups=131

11/07/22 15:22:15 INFO mapred.JobClient: Map output materialized bytes=1836

11/07/22 15:22:15 INFO mapred.JobClient: Combine output records=131

11/07/22 15:22:15 INFO mapred.JobClient: Map input records=31

11/07/22 15:22:15 INFO mapred.JobClient: Reduce shuffle bytes=1836

11/07/22 15:22:15 INFO mapred.JobClient: Reduce output records=131

11/07/22 15:22:15 INFO mapred.JobClient: Spilled Records=262

11/07/22 15:22:15 INFO mapred.JobClient: Map output bytes=2055

11/07/22 15:22:15 INFO mapred.JobClient: Combine input records=179

11/07/22 15:22:15 INFO mapred.JobClient: Map output records=179

11/07/22 15:22:15 INFO mapred.JobClient: SPLIT_RAW_BYTES=119

11/07/22 15:22:15 INFO mapred.JobClient: Reduce input records=131

[hadoop@TEST085 hadoop-0.20.203.0]$ bin/hadoop fs -ls output1

查看输出结果文件,这个文件在hdfs上:

[hadoop@TEST085 hadoop-0.20.203.0]$ hadoop fs -ls output1

Found 3 items

-rw-r--r-- 3 hadoop supergroup 0 2011-07-22 15:22 /user/hadoop/output1/_SUCCESS drwxr-xr-x - hadoop supergroup 0 2011-07-22 15:21 /user/hadoop/output1/_logs

-rw-r--r-- 3 hadoop supergroup 1306 2011-07-22 15:22 /user/hadoop/output1/part-r-00000

[hadoop@TEST085 hadoop-0.20.203.0]$ hadoop fs -cat output1/part-r-00000

(BIS), 1

(ECCN) 1

(TSU) 1

(see 1

5D002.C.1, 1

740.13) 1

1

Administration 1

Apache 1

BEFORE 1

BIS 1

Bureau 1

Commerce, 1

...........省略

4.7 管理界面与命令

4.7.1 hdfs运行状态界面

查看hdfs运行状态,可以通过web界面来访问

http://192.168.10.85:50070/dfshealth.jsp;

4.7.2 Map-reduce的运行状态界面

查看map-reduce信息,可以通过web界面来访问:

http://192.168.10.85:50030/jobtracker.jsp

4.7.3 直接的命令行查看

下面是直接命令行看到的结果。

[root@192.168.10.85 ~]# hadoop dfsadmin -report Configured Capacity: 291104653312 (271.11 GB) Present Capacity: 74432905216 (69.32 GB)

DFS Remaining: 74432823296 (69.32 GB)

DFS Used: 81920 (80 KB)

DFS Used%: 0%

Under replicated blocks: 1

Blocks with corrupt replicas: 0

Missing blocks: 0

-------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.10.160:50010

Decommission Status : Normal

Configured Capacity: 37169479680 (34.62 GB)

DFS Used: 36864 (36 KB)

Non DFS Used: 30097534976 (28.03 GB)

DFS Remaining: 7071907840(6.59 GB)

DFS Used%: 0%

DFS Remaining%: 19.03%

Last contact: Fri Jul 22 15:16:36 CST 2011

Name: 192.168.10.245:50010

Decommission Status : Normal

Configured Capacity: 253935173632 (236.5 GB)

DFS Used: 45056 (44 KB)

Non DFS Used: 186574213120 (173.76 GB)

DFS Remaining: 67360915456(62.73 GB)

DFS Used%: 0%

DFS Remaining%: 26.53%

Last contact: Fri Jul 22 15:16:37 CST 2011

4.7.1 运行的进程查看

在master机器上通过ps命令查看,可以看到namenode/secondarynamenode/j obtracker 在运行,如下:

[hadoop@TEST085 hadoop-0.20.203.0]$ ps uax |grep ha

hadoop 27440 0.9 5.8 1195576 59428 pts/0 S 14:40 0:05

/usr/local/java/bin/java -Dproc_namenode -Xmx1000m

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote

-Dhadoop.log.dir=/home/hadoop/hadoop-0.20.203.0/bin/../logs

-Dhadoop.log.file=hadoop-hadoop-namenode-TEST085.log

-Dhadoop.home.dir=/home/hadoop/

相关主题