Hadoop集群实现词频统计应用
2021-07-20罗利
◆罗利
(湖南信息职业技术学院 湖南 410299)
Hadoop 是Apache 基金会支持,采用Java 语言开发[1],以分布式文件系统HDFS 和分布式计算框架MapReduce 为核心[2],以及一些其他子项目组成的分布式系统架构。词频统计是大数据分析中经常要使用的功能,利用Hadoop 平台可以实现词频统计,Wordcount 案例是Hadoop 的经典案例之一,以空格的形式对英文进行词频统计,初学者在学习Mapreduce 编程时都是以Wordcount 案例作为入门。本文利用Hadoop 分布式数据处理,实现Wordcount 案例统计单词出现次数的功能。
1 Hadoop 集群搭建
1.1 环境配置
本实验Hadoop 完全分布式集群搭建环境由3 台服务器构成,需要的软件和系统环境要求如表1所示。
表1 集群环境信息
1.2 集群搭建
Hadoop 集群主要有一个NameNode 节点和3 个DataNode 节点构成,搭建主要步骤如下:
(1)安装Centos7 操作系统的虚拟机。
(2)安装JDK。
(3)安装Hadoop 2.7.2。
(4)SSH 免密登录。
(5)配置集群。
(6)启动集群。
2 词频统计实现
2.1 开发环境配置
用于开发的电脑需要安装JDK 和hadoop2.7.2(本文在Win10 中开发),同时把hadoop2.7.2/bin 目录下的hadooo.dll 文件拷贝到C:WindowsSystem32 目录下。然后添加环境变量HADOOP_HOME,变量值为HADOOP 安装路径:E:hadoop-2.7.2。并在Path 环境变量中添加%HADOOP_HOME%in。在Windows 的控制台下java-version、hadoop version 出现正确的jdk 版本和Hadoop 版本,说明环境准备成功。
然后在Eclipse 中配置Hadoop 开发环境,将下载的hadoop 插件hadoop-eclipse-plugin-2.7.2.jar 复制到eclipse 安装目录下的plugins 目录下,重启eclipse。
接着打开 Eclipse,增加 Map/Reduce 功能区,打开Window-Perspective-open Perspective-other,选择Map/Reduce 选项,添加进来。然后导入 MapReduce 运行依赖的 jar 包,打开Window-Preferences,选择 Hadoop Map/Reduce,浏览hadoop 的安装路径,点击Apply,如图1所示。
图1 Hadoop 依赖设置
2.2 词频统计原理
把需要统计的文档放入目录src_data 中,运行程序,文档执行Map 和Reduce 两个阶段。Map 和Reduce 阶段的输入输出形式为键值对
2.3 代码实现
启动hadoop 集群,Eclipse 连接集群编写mapreduce 程序(基于Java 语言)统计单词出现次数。改写Mapper 类和Reducer 类,核心代码如下:
编写 WordcountMapper 、 WordcountReducer 类后,编写WordcountDriver 驱动类(主类),然后设置输入输出目录在Windows系统上,调试程序是否正确。
3 HDFS 上测试程序
在Eclipse 中导出wordcount 工程为wordcount.jar 包,将其放到HDFS 系统上运行。
(1)将wordcount.jar 放入/opt/module/hadoop2.7.2 下。
(2)新建目录。在Linux 本地/opt/module/hadoop2.7.2 下新建目录winput,在该目录下创建测试文件word.txt,并写入相应内容,代码如下:
[root@master hadoop-2.7.2]# mkdir winput
[root@maste hadoop-2.7.2]# cd winput/
[root@maste winput]# touch word.txt
[root@master winput]# cat word.txt
hadoop hdfs yarn mapreduce
spark hbase hdfs
hadoop hadoop spark
(3)HDFS 系统上新建目录。在HDFS 的根目录下创建目录testinput,代码如下:
图2 HDFS 查看输出文件
图3 单词统计结果
至此,统计出了word.txt 文件中每个单词出现的次数。Hadoop分布式集群的搭建、配置、运行测试全部完成。