MR实战:词频统计

本文详细介绍了如何使用Hadoop MapReduce框架在虚拟环境中进行词频统计任务。从创建文本文件、上传到HDFS,到在IntelliJ IDEA中建立Maven项目,配置依赖,创建Mapper、Reducer类,最后通过Driver类执行任务并展示结果。文章涵盖了从数据准备到结果展示的全过程,旨在帮助读者理解MapReduce的工作原理和应用。
摘要由CSDN通过智能技术生成

一、实战概述

本实战演练旨在利用Hadoop MapReduce框架,在虚拟环境中执行一个简单的词频统计任务。下面是具体的操作步骤:

  1. 在master节点上创建一个文本文件words.txt,其中包含多个单词行,并将该文件上传至HDFS中的指定目录/wordcount/input。
  2. 在集成开发环境IntelliJ IDEA中创建一个名为MRWordCount的Maven项目,并引入Apache Hadoop 3.3.4版本的客户端依赖和JUnit测试框架。
  3. 添加log4j.properties配置文件,用于定义日志输出格式及位置,以方便日志管理。
  4. 实现两个关键类:WordCountMapper和WordCountReducer。
  • WordCountMapper继承自Mapper接口,负责读取输入文本文件中的每一行内容。它将每行按空格分割成单词,并为每个单词生成一个键值对(<单词, 1>),以便后续计数处理。
  • WordCountReducer继承自Reducer接口,接收Mapper阶段产生的所有相同单词的键及其对应的次数。它对键值对进行合并统计,并输出格式化的"(单词, 出现次数)"键值对。
  1. 完成整个MapReduce作业的设置与执行,通过WordCountDriver驱动类实现。
  • WordCountDriver初始化Hadoop Configuration对象,并设置Job参数(包括Mapper和Reducer类、键值类型等)。
  • 指定HDFS上的输入输出路径。
  • 提交作业至集群执行。
  1. 作业完成后,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-clientjunit依赖
    在这里插入图片描述
  • 刷新项目获得依赖
    在这里插入图片描述
    在这里插入图片描述
<dependencies>                                   
    <!--hadoop客户端-->                             
    <dependency>                                 
        <groupId>org.apache.hadoop</groupId>     
        <artifactId>hadoop-client</artifactId>   
        <version>3.3.4</version>                 
    </dependency>                                
    <!--单元测试框架-->                                
    <dependency>                                 
        <groupId>junit</groupId>                 
        <artifactId>
  • 19
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值