一、 任务描述
面对大数据,大数据的存储和处理,就好比一个人的左右手,显得尤为重要。Hadoop比较适合解决大数据问题,很大程度上依赖其大数据存储系统,即HDFS和大数据处理系统,即MapReduce。而对于MapReduce,单词计数是最简单也是最能体现 MapReduce 思想的程序之一,可以称为 MapReduce 版 “Hello World“,该程序的完整代码可以在 Hadoop 安装包的“src/examples“目录下找到。 单词计数主要完成功能是:统计一系列文本文件中每个单词出现的次数,如下图所示。
本实验以ubuntu环境为基础,练习wordcount统计单词的例子,练习完对信息进行整理并填写工作任务报告。
二、 任务目标
了解mapreduce的原理流程。体验大数据统计的方便。
三、 任务环境
本次环境是:Ubuntu16.04 + jdk1.8.0_151
四、 任务分析
在 Hadoop 中,每个 MapReduce 任务都被初始化为一个 Job,每个 Job 又可以分为两种 阶段:map 阶段和 reduce 阶段。这两个阶段分别用两个函数表示,即 map 函数和 reduce 函 数。map 函数接收一个形式的输入,然后同样产生一个形式的中间输 出,Hadoop 函数接收一个如形式的输入,然后对这个 value 集合进行处 理,每个 reduce 产生 0 或 1 个输出,reduce 的输出也是形式的。
♥ 知识链接
html表单
HTML的表单用于收集用户的输入,表单中包含很多表单元素,指的是不同类型的 input 元素、复选框、单选按钮、提交按钮等等。< input>元素是最重要的表单元素。
五、 任务实施
步骤1、单词准备
启动hadoop服务,如图1所示
图1 启动hadoop服务
右击Ubuntu操作系统桌面,从弹出菜单中选择【Open in Terminal】命令打开终端。我们需要找到这个例子的位置:执行命令【cd /simple/hadoop/share/hadoop/mapreduce
】进入该目录下。【ls
】查看该目录下发现有很多jar包,这些都是小程序的jar包。如图2所示
图2 查看文件位置
使用命令【echo "hello world bye world">count.txt
】建立count.txt文件并且输入信息,然后同样往count1.txt中输入信息。如图3所示
图3 建立文件
在HDFS上创建目录,命令如下【hadoop fs -mkdir /wordcount
】。如图4所示
图4 创建目录
使用命令【rm -rf employee.txt
】删除与本实验无关文件,将本地文件count.txt和count1.txt上传到HDFS上的wordcount目录:命令为【hadoop fs -put *.txt /wordcount
】,其中’.txt‘表示所有以”txt”结尾的文件。如图5所示。
图5 上传文件
我们要运行的例子在hadoop的安装目录下,名称叫做hadoop-mapreduce-examples-2.7.3.jar。
下面,运行WordCount例子,执行如下命令:【hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /wordcount /output
】。使用【hadoop jar
】命令将/wordcount目录中的单词统计到output目录下的文件中。 其中,“wordcount“是程序主类名,output是输出文件夹,它由程序自动创建。如图6所示
图6 运行WordCount例子
♥ 知识链接
MapReduce过程分析
Hadoop 命令会启动一个 JVM 来运行这个 MapReduce 程序,并自动获得 Hadoop 的配置, 同时把类的路径(及其依赖关系)加入到 Hadoop 的库中。以上就是 Hadoop Job 的运行记录, 从这里可以看到,这个 Job 被赋予了一个 ID 号:job_201202292213_0002,而且得知输入文 件有两个(Total input paths to process : 2),同时还可以了解 map 的输入输出记录(record 数 及字节数),以及 reduce 输入输出记录。
六、 任务测试
查看output目录下生成的文件。其中“part-r-00000“文件为统计结果的文件。如图7所示
图7 查看生成文件
使用命令【hadoop fs -cat /output/part-r-00000
】查看文件,结果如图8所示
图8 查看统计结果