hadoop-mapreduce词频统计

news/2024/11/28 11:04:36/

一、Map Reduce主要阶段

二、词频统计示例

0.MapReduce 词频统计(Word Count)示例图

1. Input 阶段(输入阶段)

输入数据是一段文本,如下:

Hadoop is a big data framework.
Hadoop can store vast data.
Hadoop processes big data.
Hadoop can analyze vast data.
Hadoop is easy.

2. Split 阶段(数据分割阶段)

输入数据被切分为更小的部分,每个部分对应一行文本。
作用:将输入数据分配给不同的 Mapper 任务,实现并行处理。

Split 1: Hadoop is a big data framework.
Split 2: Hadoop can store vast data.
Split 3: Hadoop processes big data.
Split 4: Hadoop can analyze vast data.
Split 5: Hadoop is easy.

3. Mapper Phase(映射阶段)

每个 Mapper 任务读取一个输入块,应用用户定义的 Map 函数。
Map 函数会将输入文本解析为单词,并为每个单词输出一个键值对(Key-Value Pair),形式为 <单词, 1>。
例如:
  - 输入:Hadoop is a big data framework.
  - 输出:<Hadoop, 1>, <is, 1>, <a, 1>, <big, 1>, <data, 1>, <framework, 1>
作用:
Map 阶段的任务是将原始数据转化为键值对,并提取有用信息。

Mapper 输出:Split 1: <Hadoop, 1>, <is, 1>, <a, 1>, <big, 1>, <data, 1>, <framework, 1>
Split 2: <Hadoop, 1>, <can, 1>, <store, 1>, <vast, 1>, <data, 1>
Split 3: <Hadoop, 1>, <processes, 1>, <big, 1>, <data, 1>
Split 4: <Hadoop, 1>, <can, 1>, <analyze, 1>, <vast, 1>, <data, 1>
Split 5: <Hadoop, 1>, <is, 1>, <easy, 1>

4. Shuffle and Sort 阶段(洗牌和排序阶段) 

洗牌(Shuffle):

将 Mapper 阶段输出的键值对,根据键(单词)进行分组
所有相同键的键值对被发送到同一个 Reducer 任务。
例如:来自不同 Mapper 的 <Hadoop, 1> 被收集到一起:<Hadoop, [1, 1, 1, 1, 1]>

排序(Sort):

对每个键值对按照键排序(升序)。
图中展示了 Hadoop、is、a 等单词被分组和排序。

作用:实现数据分布和排序,为 Reduce 阶段的处理做好准备。

5. Reduce Phase(归约阶段)

Reduce 函数对每个键及其关联的值列表进行聚合计算
示例:
  - 输入:<Hadoop, [1, 1, 1, 1, 1]>
  - Reduce 计算:对列表中的值进行累加:1 + 1 + 1 + 1 + 1 = 5
  - 输出:<Hadoop, 5>

其他 Reduce 结果:
  - <is, 2>
  - <a, 1>
  - <big, 2>
  - <data, 4>
  - <framework, 1>
  - <easy, 1>

作用:Reduce 阶段将分组后的数据进行汇总、聚合、统计,生成最终结果。

6. output阶段(输出阶段)

a, 1
analyze, 1
big, 2
can, 2
data, 4
easy, 1
framework, 1
Hadoop, 5
is, 2
processes, 1
store, 1
vast, 2

三、过程总结

参考资料

https://www.youtube.com/watch?v=aReuLtY0YMI


http://www.ppmy.cn/news/1550601.html

相关文章

简单的TCPSocket客户端使用案例(已入OPCommon)

做一个实体操作工具类&#xff08;包含&#xff09; public delegate void TcpClientReceivedEventHandler(TcpClientStateEventArgs args);public class TCPSocketClient{ //接收委托public event TcpClientReceivedEventHandler TcpReceived;private CancellationTokenSour…

shell完结

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…

PyTorch基础学习03_数学运算自动微分

目录 一、数学运算 1、基本操作 2、三角函数 3、统计学函数 二、保存和加载 三、并行化 四、自动微分 1、相关概念 2、计算梯度 1.标量梯度计算 2.向量梯度计算 3.多标量梯度计算 4.多向量梯度计算 5.矩阵梯度计算 3、梯度上下文控制 1、梯度控制 2、梯度更新…

echarts使用示例

柱状图折线图 折柱混合&#xff1a;https://echarts.apache.org/examples/zh/editor.html?cmix-line-bar option {title:{show: true},tooltip: {trigger: axis,axisPointer: {type: cross,crossStyle: {color: #999}}},toolbox: {feature: {dataView: { show: true, readOnl…

Ubuntu20.04运行DM-VIO

目录 环境配置非ROS环境运行编译运行结果图 ROS环境参考 环境配置 Ubuntu20.04 将项目中Cmakelists.txt中C 和 opencv版本修改下 C 使用 14 opencv使用4 非ROS环境运行 编译 按照官网即可 cd dm-vio mkdir build cd build cmake .. make -j运行 DM-VIO给的命令是 bin/d…

在 JavaScript 中,将一个十进制字符串转为二进制的方法

在 JavaScript 中&#xff0c;可以使用以下几种方法将一个十进制字符串转为二进制&#xff1a; 方法一&#xff1a;使用 parseInt() 和 toString() 首先&#xff0c;使用 parseInt() 函数将十进制字符串转换为十进制整数。 parseInt() 函数会解析传入的字符串&#xff0c;并根…

firewalld防火墙阻止docker容器间通信的排查思路及解决方案

摘要 现有两个docker容器nginx、openjdk分别部署前后端服务&#xff0c;假设默认防火墙为firewalld&#xff0c;发现在默认配置下&#xff0c;本地直接curl后台服务器能正确响应&#xff0c;nginx的代理的请求proxy_pass无法得到后台服务器的响应&#xff0c;只得到502 BadGat…

[产品管理-156]:《领先的密码-BLM方法论全面解读与应用指南》- 全书概述

目录 前言&#xff1a; 一、BLM方法论概述 二、BLM方法论的核心要素 三、BLM方法论的应用指南 四、BLM方法论的实际应用案例 五、总结 前言&#xff1a; “领先的密码&#xff1a;BLM方法论全面解读与应用指南”这一主题涉及对Business Leadership Model&#xff08;业务…