当前位置: 首页 > news >正文

mapreduce的工作原理

MapReduce 是 Hadoop 中实现分布式并行计算的核心框架,其工作原理基于“分而治之”的思想,将大规模数据处理任务分解为 Map(映射) 和 Reduce(归约) 两个阶段。

 一、MapReduce 核心流程

 1. Input 阶段

- 输入数据分片(Input Split)

输入文件被按块(默认 128MB)分割为多个分片(Input Split),每个分片由一个 Map 任务处理。

- 数据读取

使用  InputFormat (如  TextInputFormat )读取分片数据,将数据转换为  <key, value>  键值对(例如每行文本的偏移量为 Key,内容为 Value)。

2. Map 阶段

- 并行处理

每个分片数据被分发到不同节点的 Map 任务并行处理。

- 用户自定义逻辑

用户通过实现  map()  函数对每个  <key, value>  进行处理,输出中间结果  <intermediate_key, intermediate_value> 。

- 示例:在 WordCount 中,Map 阶段将每行文本拆分为单词,输出  <单词, 1> 。

 

3. Shuffle & Sort 阶段

 

- 数据分区(Partition)

中间结果按  intermediate_key  分配到不同分区(默认按哈希值分区),每个分区对应一个 Reduce 任务。

- 排序(Sort)

同一分区内的键值对按  intermediate_key  排序,确保相同 Key 的数据聚集。

- 合并(Combine)

可选步骤,在 Map 节点本地对相同 Key 的值进行合并(如累加计数),减少网络传输量。

4. Reduce 阶段

- 数据拉取(Fetch)

Reduce 任务从所有 Map 节点拉取对应分区的数据。

- 用户自定义逻辑

用户通过实现  reduce()  函数对相同 Key 的值进行聚合(如求和、去重等),输出最终结果  <output_key, output_value> 。

- 示例:在 WordCount 中,Reduce 阶段将  <单词, [1,1,1...]>  合并为  <单词, 总次数> 。

 

5. Output 阶段

 

- 结果写入

使用  OutputFormat (如  TextOutputFormat )将 Reduce 结果写入 HDFS 或本地文件。

二、关键设计理念

1. 分布式并行计算

通过多节点同时处理数据分片,显著提升大数据处理效率。

2. 容错性

节点故障时,任务会被重新调度到其他节点执行。

3. 数据本地化(Data Locality)

Map 任务优先在存储数据的节点上执行,减少网络传输开销。

 

三、经典示例:WordCount

 

1. 输入:文本文件

hello world

hadoop mapreduce

 

2. Map 阶段输出:

(hello, 1), (world, 1), (hadoop, 1), (mapreduce, 1)

3. Shuffle & Sort:

相同 Key 的值被聚合排序,如  hello  对应所有  1 。

4. Reduce 阶段输出:

(hello, 1), (world, 1), (hadoop, 1), (mapreduce, 1)

四、适用场景

- 批处理任务:日志分析、数据统计、ETL 等。

- 离线计算:对实时性要求不高的大规模数据处理。

五、局限性

- 实时性差:任务需等待所有数据处理完成。

- 迭代计算低效:多次迭代会产生大量中间磁盘读写。

- 资源管理优化:Hadoop 2.x 引入 YARN 后,资源利用率显著提升。

相关文章:

  • 【AI深度学习网络】DeepSeek的Transformer改进与优化技术:从自注意力机制到多模态突破
  • 【分布式】深入剖析 Sentinel 限流:原理、实现
  • 语音克隆(Voice Cloning)
  • vue 组件之间传递参数
  • 齐次线性方程组及python求解
  • 主成分分析(PCA)学习介绍及其高阶应用,金融风险分析
  • Sentinel实战(二)、流控规则之流控阈值类型、流控模式
  • 重建二叉树(C++)
  • Pycharm(八):字符串切片
  • python数据结构——基础、顺序表
  • UE5学习笔记 FPS游戏制作34 触发器切换关卡
  • js坐标的相关属性
  • 表格数据导出为Excel
  • 将 PyTorch Model 用可视化方法浏览 torchview,onxx, netron, summary | 撰写论文 paper
  • 漏洞预警 | Windows 文件资源管理器欺骗漏洞(CVE-2025-24071、CVE-2025-24054)
  • 《SRv6 网络编程:开启IP网络新时代》第2章、第3章:SRv6基本原理和基础协议
  • mybatis里in关键字拼接id问题
  • Java 时间处理:轻松掌握 java.time 包
  • 05-031-自考数据结构(20331)- 哈希表 - 例题分析
  • UE5学习记录part12
  • 有什么可以做建筑模型的网站/seo技术助理
  • 制作网站哪家专业/抖音关键词排名查询
  • 企业设计个网站/中国科技新闻网
  • 局域网聊天工具免费版/seo建站公司
  • 网站建设龙卡要审批多久时间/如何做网络销售产品
  • wordpress主题知言/seo下拉优化