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

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

  1. [Linux][Hadoop] 运行WordCount例子

    紧接上篇,完成Hadoop的安装并跑起来之后,是该运行相关例子的时候了,而最简单最直接的例子就是HelloWorld式的WordCount例子.   参照博客进行运行:http://xiejiangl ...

  2. 原生态在Hadoop上运行Java程序

    第一种:原生态运行jar包1,利用eclipse编写Map-Reduce方法,一般引入Hadoop-core-1.1.2.jar.注意这里eclipse里没有安装hadoop的插件,只是引入其匝包,该 ...

  3. 运行hadoop自带的wordcount例子程序

    1.准备文件 [root@master ~]# cat input.txt hello java hello python hello c hello java hello js hello html ...

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

    本篇先介绍HBase在伪分布式环境下的安装方式,然后将MapReduce编程和HBase结合起来使用,完成WordCount这个例子. HBase在伪分布环境下安装 一.   前提条件 已经成功地安装 ...

  5. hadoop安装与WordCount例子

    1.JDK安装 下载网址: http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html  ...

  6. 【hadoop】看懂WordCount例子

    前言:今天刚开始看到map和reduce类里面的内容时,说实话一片迷茫,who are you?,最后实在没办法,上B站看别人的解说视频,再加上自己去网上查java的包的解释,终于把WordCount ...

  7. Hadoop 系列文章(二) Hadoop配置部署启动HDFS及本地模式运行MapReduce

    接着上一篇文章,继续我们 hadoop 的入门案例. 1. 修改 core-site.xml 文件 [bamboo@hadoop-senior hadoop-2.5.0]$ vim etc/hadoo ...

  8. win7下idea远程连接hadoop,运行wordCount

    1.将hadoop-2.6.1.tar.gz解压到本地 配置环境变量 HADOOP_HOME E:\kaifa\hadoop-2.6.1\hadoop-2.6.1 HADOOP_BIN_PATH %H ...

  9. Hadoop(1)---运行Hadoop自带的wordcount出错问题。

    在hadoop2.9.0版本中,对namenode.yarn做了ha,随后在某一台namenode节点上运行自带的wordcount程序出现偶发性的错误(有时成功,有时失败),错误信息如下: // : ...

随机推荐

  1. IBM存储降级告警等一些服务器问题/dd/ethtool

    1.IBM存储降级告警 一般两种情况 a.端口降级 例如模块16G->8G(IBM储存端口自适应) b.系统在作raid后,有硬盘损坏,降级 黄灯告警 2. dimm error dimm内存插 ...

  2. 【week11】psp

    本周psp 项目 内容 开始时间 结束时间 被打断 净时间 11.26(星期六)  看论文 psiBlast  9:00 12:00  5  175    11.28(星期一)  做作业 设计模式作业 ...

  3. 【vue】父组件主动调用子组件 /// 非父子组件传值

    一  父组件主动调用子组件: 注意:在父组件使用子组件的标签上注入ref属性,例如: <div id="home"> <v-header ref="he ...

  4. 使用fabric1.14.0和fabric2.4.0

    fabric1.14.0(支持Python2.5-2.7版本): from  fabric.api import * env.gateway = '192.168.181.2'            ...

  5. PHP中与类有关的几个魔术常量

    与类有关的魔术常量: 以前学过的魔术常量: __FILE__ __DIR__ __LINE__ 现在: __CLASS__: 代表当前其所在的类的类名: __METHOD__:代表其当前所在的方法名:

  6. BZOJ 1924 所驼门王的宝藏(强连通分量缩点+DAG最长链)

    思路不是很难,因为宝藏只会在给出的n个点内有,于是只需要在这n个点里面连边,一个点如果能到达另一个点则连一条有向边, 这样用强连通分量缩点后答案就是DAG的最长链. 问题在于暴力建图是O(n^2)的, ...

  7. 【bzoj4695】最假女选手 线段树区间最值操作

    题目描述 给定一个长度为 N 序列,编号从 1 到 N .要求支持下面几种操作:1.给一个区间[L,R] 加上一个数x 2.把一个区间[L,R] 里小于x 的数变成x 3.把一个区间[L,R] 里大于 ...

  8. php获取字符串的编码格式的方法(函数)

    // 检测字符的编码格式 $encode = mb_detect_encoding($string, array('ASCII','UTF-8','GB2312','GBK','BIG5')); ec ...

  9. 如何实现密码输入框focus状态弹出提示信息

    一.密码输入提示框样式实现 效果图如下: 源码如下: <html> <style type="text/css"> *{ padding: 0; margi ...

  10. Combining HTML5 Web Applications with OpenCV

    The Web Dev Zone is brought to you by Stormpath—offering a pre-built Identity API for developers. Ea ...