(二)Hadoop例子——运行example中的wordCount例子

Hadoop例子——运行example中的wordCount例子

一、   需求说明

单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为 MapReduce版"Hello World",该程序的完整代码可以在Hadoop安装包的"src/examples"目录下找到。单词计数主要完成功能是:统计一系列文本文件中每个 单词出现的次数,如下图所示。

二、   环境

  1. VMware® Workstation 10.04
  2. Ubuntu14.04 32位
  3. Java JDK 1.6.0
  4. hadoop1.2.1

三、       WordCount例子的运行

1. 创建本地的示例数据文件:

依次进入【Home】-【hadoop】-【hadoop-1.2.1】创建一个文件夹file用来存储本地原始数据。

并在这个目录下创建2个文件分别命名为【myTest1.txt】和【myTest2.txt】或者你想要的任何文件名。

分别在这2个文件中输入下列示例语句:

2. 在HDFS上创建输入文件夹

呼出终端,输入下面指令:

bin/hadoop fs -mkdir hdfsInput

执行这个命令时可能会提示类似安全的问题,如果提示了,请使用

bin/hadoop dfsadmin -safemode leave

来退出安全模式。

当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结 束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入 安全模式。

意思是在HDFS远程创建一个输入目录,我们以后的文件需要上载到这个目录里面才能执行。

3. 上传本地file中文件到集群的hdfsInput目录下

在终端依次输入下面指令:

cd hadoop-1.2.1

bin/hadoop fs -put file/myTest*.txt hdfsInput

4. 运行例子:

在终端输入下面指令:

bin/hadoop jar hadoop-examples-1.2.1.jar wordcount hdfsInput hdfsOutput

注意,这里的示例程序是1.2.1版本的,可能每个机器有所不一致,那么请用*通配符代替版本号

bin/hadoop jar hadoop-examples-*.jar wordcount hdfsInput hdfsOutput

应该出现下面结果:

Hadoop命令会启动一个JVM来运行这个MapReduce程序,并自动获得Hadoop的配置,同时把类的路径(及其依赖关系)加入到 Hadoop的库中。以上就是Hadoop Job的运行记录,从这里可以看到,这个Job被赋予了一个ID号:job_201202292213_0002,而且得知输入文件有两个(Total input paths to process : 2),同时还可以了解map的输入输出记录(record数及字节数),以及reduce输入输出记录。

查看HDFS上hdfsOutput目录内容:

在终端输入下面指令:

bin/hadoop fs -ls hdfsOutput

从上图中知道生成了三个文件,我们的结果在"part-r-00000"中。

使用下面指令查看结果输出文件内容

bin/hadoop fs -cat output/part-r-00000

wordcount的例子中是以空格作为单词的分隔符。

输出目录日志以及输入目录中的文件是永久存在的,如果不删除的话,如果出现结果不一致,请参考这个因素。

四、       WordCount处理过程

WordCount的详细执行步骤如下:

1)将文件拆分成splits,由于测试用的文件较小,所以每个文件为一个split,并将文件按行分割形 成<key,value>对,如图4-1所示。这一步由MapReduce框架自动完成,其中偏移量(即key值)包括了回车所占的字符数 (Windows和Linux环境会不同)。

图4-1 分割过程

2)将分割好的<key,value>对交给用户定义的map方法进行处理,生成新的<key,value>对,如图4-2所示。

图4-2 执行map方法

3)得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key至相同value值累加,得到Mapper的最终输出结果。如图4-3所示。

图4-3 Map端排序及Combine过程

4)Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的<key,value>对,并作为WordCount的输出结果,如图4-4所示。

图4-4 Reduce端排序及输出结果

文章内容图片来自:

http://www.cnblogs.com/nod0620/archive/2012/06/20/2549395.html

http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html

http://www.cnblogs.com/madyina/p/3708153.html

时间: 2024-10-21 03:58:25

(二)Hadoop例子——运行example中的wordCount例子的相关文章

[Linux][Hadoop] 运行WordCount例子

紧接上篇,完成Hadoop的安装并跑起来之后,是该运行相关例子的时候了,而最简单最直接的例子就是HelloWorld式的WordCount例子.   参照博客进行运行:http://xiejianglei163.blog.163.com/blog/static/1247276201443152533684/   首先创建一个文件夹,并创建两个文件,目录随意,为以下文件结构: examples --file1.txt --file2.txt 文件内容随意填写,我是从新闻copy下来的一段英文: 执

原生态在Hadoop上运行Java程序

第一种:原生态运行jar包1,利用eclipse编写Map-Reduce方法,一般引入Hadoop-core-1.1.2.jar.注意这里eclipse里没有安装hadoop的插件,只是引入其匝包,该eclipse可以安装在windows或者linux中,如果是在windows中安装的,且在其虚拟机安装的linux,可以通过共享文件夹来实现传递.2,编写要测试的数据,如命名为tempdata3,利用eclipse的export来打包已编写好的,在利用eclipse打包jar的时候,只需要选择sr

RedHat 安装Hadoop并运行wordcount例子

1.安装 Red Hat 环境 2.安装JDK 3.下载hadoop2.8.0 http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz 4.在用户目录下新建hadoop文件夹,并解压hadoop压缩包 mkdir Hadoop tar -zxvf hadoop-2.8.0.tar.gz 5.为hadoop配置JAVA_HOME [[email protected] ~]$

运行hadoop自带的wordcount例子程序

1.准备文件 [[email protected] ~]# cat input.txt hello java hello python hello c hello java hello js hello html hello java [[email protected] ~]# hadoop fs -mkdir /input [[email protected] ~]# hadoop fs -put input.txt /input [[email protected] ~]# hadoop

hadoop之运行官方实例二--WordCount

1.在hadoop-2.9.2目录下新建一个wcinput:mkdir wcinput 2.在wcinput下新建一个文件:touch wc.input 3.vim wc.input,在wc.input中输入: hadoop yarn hadoop mapreduce gong gong 4.回到hadoop-2.9.2目录下,输入:hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount wc

(四)伪分布式下jdk1.6+Hadoop1.2.1+HBase0.94+Eclipse下运行wordCount例子

本篇先介绍HBase在伪分布式环境下的安装方式,然后将MapReduce编程和HBase结合起来使用,完成WordCount这个例子. HBase在伪分布环境下安装 一.   前提条件 已经成功地安装了jdk1.6和hadoop1.2.1. Jdk1.6+Hadoop1.2.1在伪分布环境下具体的安装方法见:Hadoop1.2.1安装——单节点方式和单机伪分布方式 二.   环境 VMware® Workstation 10.04 Ubuntu14.04 32位 Java JDK 1.6.0 h

hadoop集群自带WordCount例子

默认当前位置是hadoop安装包位置 jar包:share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar 一 前置准备 $ cd share/hadoop/mapreduce/ 因为这个需要hdfs中的文件,需要掌握基本的hdfs命令 HDFS基本的文件命令: 格式: hadoop fs -cmd <args> 其中,cmd代表具体的文件命令,与unix对应的命令相同,args表示可变的参数. 如, hadoop fs --获取完整的

hadoop伪分布式之启动HDFS并运行MR程序(WordCount)

一.配置相关文件 在hadoop-2.9.2下etc/hadoop/core-site.xml中配置: <configuration> <!--指定HDFS中NameNode的地址--> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop01:9000</value> </property> <!--指定hadoop运行时产生文件的存储目录-

Hadoop源码分析(3): Hadoop的运行痕迹

在使用hadoop的时候,可能遇到各种各样的问题,然而由于hadoop的运行机制比较复杂,因而出现了问题的时候比较难于发现问题. 本文欲通过某种方式跟踪Hadoop的运行痕迹,方便出现问题的时候可以通过这些痕迹来解决问题. 一.环境的搭建 为了能够跟踪这些运行的痕迹,我们需要搭建一个特殊的环境,从而可以一步步的查看上一节提到的一些关键步骤所引起的变化. 我们首先搭建一个拥有一个NameNode(namenode:192.168.1.104),三个DataNode(datanode01:192.1