-
一、概述
单词计数是最简单也最能体现MapReduce思想的程序之一,单词计数的主要功能在于:统计一系列文本文件总每个但系出现的次数。本次实验预通过分析WordCount源码来进一步明确MapReduce程序的基本结构和运行机制。
二、环境准备
系统环境:Ubuntu 16.0
软件环境:Java 1.8.0
Hadoop 3.0
三、map和reduce工作原理简介:
从HDFS内部看,一个文件储存到HDFS后,被分成一个或多个数据块(block),这些数据块存储在Datenode上。数据块与MapReduce的处理单位split相对应:
1.map任务处理
(a)读取文件内容,解析成key、value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一个map函数。
(b)在map函数中可以编写自己的逻辑,对输入的key、value处理,转换成新的key、value输出。
(c)对输出的key、value进行分区。
(d)对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。
2.reduce任务处理
(a)对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
(b)对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key、reduce处理,转换成新的key、value输出。
(c)把reduce的输出保存到文件中。

对于最能体现MapReduce思想的实验Wordcount而言,其主要完成了map任务的“分块”任务,将整个文件分成若干个“简单的任务”进行执行。

四、实例开发
在Linux系统桌面上新建一个文件夹,用作本次文件的存放。初学者可以手动创建,本次实验创建的java程序名称为:WordCoun.java。创建的文件名为:wordcount。文件创建好后,可以在终端检查文件是否创建成功。

在文件夹和java程序创建好后,进行java包的编译,编译整个包里的文件。编译过程如若出现错误:

则需要重新设置环境变量:
·