一、实战概述
本实战演练旨在利用Hadoop MapReduce框架,在虚拟环境中执行一个简单的词频统计任务。下面是具体的操作步骤:
- 在master节点上创建一个文本文件words.txt,其中包含多个单词行,并将该文件上传至HDFS中的指定目录/wordcount/input。
- 在集成开发环境IntelliJ IDEA中创建一个名为MRWordCount的Maven项目,并引入Apache Hadoop 3.3.4版本的客户端依赖和JUnit测试框架。
- 添加log4j.properties配置文件,用于定义日志输出格式及位置,以方便日志管理。
- 实现两个关键类:WordCountMapper和WordCountReducer。
- WordCountMapper继承自Mapper接口,负责读取输入文本文件中的每一行内容。它将每行按空格分割成单词,并为每个单词生成一个键值对(<单词, 1>),以便后续计数处理。
- WordCountReducer继承自Reducer接口,接收Mapper阶段产生的所有相同单词的键及其对应的次数。它对键值对进行合并统计,并输出格式化的"(单词, 出现次数)"键值对。
- 完成整个MapReduce作业的设置与执行,通过WordCountDriver驱动类实现。
- WordCountDriver初始化Hadoop Configuration对象,并设置Job参数(包括Mapper和Reducer类、键值类型等)。
- 指定HDFS上的输入输出路径。
- 提交作业至集群执行。
- 作业完成后,WordCountDriver从HDFS上读取结果,并在控制台展示出来。
二、提出任务
- 单词文件 -
words.txt
hello hadoop world
hello hive world
hello hbase world
hadoop hive hbase
I love hadoop and hive
三、完成任务
(一)准备数据
1、在虚拟机上创建文本文件
- 在【master】虚拟机上创建
words.txt
文件
2、上传文件到HDFS指定目录
-
启动Hadoop集群,执行命令:
start-all.sh
-
创建
/wordcount/input
目录,执行命令:hdfs dfs -mkdir -p /wordcount/input
-
将文本文件
words.txt
,上传到HDFS的/wordcount/input
目录
(二)实现步骤
1、创建Maven项目
- Maven项目 -
MRWordCount
,设置了JDK版本 -1.8
,组标识 -net.linlong
- 单击【Create】按钮,得到初始化项目
2、添加相关依赖
- 在
pom.xml
文件里添加hadoop-client
和junit
依赖
- 刷新项目获得依赖
<dependencies>
<!--hadoop客户端-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.4</version>
</dependency>
<!--单元测试框架-->
<dependency>
<groupId>junit</groupId>
<artifactId>