APP下载

Hadoop集群实现词频统计应用

2021-07-20罗利

网络安全技术与应用 2021年6期
关键词:词频代码集群

◆罗利

(湖南信息职业技术学院 湖南 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 阶段的输入输出形式为键值对。Map 阶段以单词之间的空格分隔符作为分割,Map 阶段输入:Key 是行偏移量,Value 是一行的内容;Map 阶段输出:Key 是单词,Key 是标记1;Map 阶段完成后,进行Shuffle 过程,Shuffle 对< Key,Value >进行排序、归并,将相同的键归并到一起。reduce 函数接收一个如形式的输入,然后对这个value 集合进行合并,即将1 的个数累加。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分布式集群的搭建、配置、运行测试全部完成。

猜你喜欢

词频代码集群
海上小型无人机集群的反制装备需求与应对之策研究
创世代码
创世代码
创世代码
创世代码
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
25年来中国修辞研究的关键词词频统计*——基于国家社科与教育部社科课题立项数据
勤快又呆萌的集群机器人
词频,一部隐秘的历史