MapReduce 的工作原理

MapReduce 是一种编程模型,用于大规模数据集的并行运算。它主要包含两个核心操作:Map(映射)和 Reduce(归约),其工作原理可以细分为以下几个关键步骤:

1. 输入分片(Input Splitting)

在开始处理数据之前,输入数据会被分割成多个较小的数据块,即输入分片(Input Split)。每个分片是一个独立的工作单元,可由不同的 Map 任务并行处理。分片的大小通常根据 HDFS 块大小来确定,这样可以保证每个分片都能在一个节点上高效地处理,减少数据传输开销。

2. Map 阶段

  • 数据读取:每个 Map 任务从对应的输入分片中读取数据,通常以键值对(Key-Value)的形式进行处理。例如,在文本处理中,键可能是行号,值可能是每行的文本内容。
  • 映射处理:Map 函数对输入的键值对进行处理,生成一组中间键值对。这些中间键值对是对输入数据的初步转换和处理结果。例如,在单词计数任务中,Map 函数会将每行文本拆分成单词,并为每个单词生成一个键值对,键为单词,值为 1,表示该单词出现了一次。
  • 本地聚合(可选):为了减少数据传输量,Map 任务可以在本地对中间结果进行聚合操作。例如,在单词计数任务中,Map 任务可以先统计本地出现的每个单词的数量,然后再将结果发送给 Reduce 任务。

3. 分区(Partitioning)

Map 任务生成的中间键值对会根据键的哈希值进行分区,每个分区对应一个 Reduce 任务。分区的目的是将具有相同键的键值对发送到同一个 Reduce 任务中进行处理,确保最终的归约结果是正确的。

4. 排序和分组

在分区之后,中间键值对会按照键的顺序进行排序,并将具有相同键的键值对分组在一起。这样,每个 Reduce 任务接收到的键值对都是按照键排序的,并且相同键的所有值都被聚集在一起。

5. Shuffle 和 Sort 阶段

  • Shuffle:将 Map 任务产生的中间结果从 Map 节点传输到对应的 Reduce 节点的过程称为 Shuffle。这个过程涉及到网络传输和磁盘 I/O,是 MapReduce 中比较耗时的环节。
  • Sort:在 Reduce 节点上,接收到的中间结果会按照键进行排序,确保相同键的所有值都相邻排列。

6. Reduce 阶段

  • 归约处理:Reduce 函数对每个键对应的一组值进行处理,生成最终的输出结果。例如,在单词计数任务中,Reduce 函数会对每个单词对应的所有值(即出现次数)进行求和,得到该单词的总出现次数。
  • 输出结果:Reduce 任务将处理后的结果写入到最终的输出文件中,通常存储在 HDFS 中。

7. 输出合并

所有 Reduce 任务完成后,最终的输出结果会被合并成一个或多个文件,存储在指定的输出目录中。

相关推荐
ACP广源盛1392462567315 分钟前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
微三云-张梅1 小时前
东莞企业做GEO:AI信任体系的三个建设层级
大数据·人工智能·微三云geo·东莞系统开发·东莞geo
starzy19902 小时前
Spark 核心之 Spark-SortShuffle 原理深度剖析
大数据·spark
美狐美颜sdk4 小时前
直播APP开发技术架构解析:从音视频流到第三方美颜SDK接入的完整方案
大数据·人工智能·音视频·美颜sdk·美颜api
Capricorn19884 小时前
知芽研究问题看板无法推进?从孵化区到笔记的机制排查指南
大数据·论文阅读·人工智能·笔记·学习方法·论文笔记
凡科网小帆5 小时前
2026小程序商城平台哪家强,小程序商城平台选型怎么做
大数据·小程序·小程序商城平台
睿本云5 小时前
从“有数据”到“会用数据”,一次标签体系的升级能带来的改变
大数据·人工智能
牛奶咖啡135 小时前
大数据Hadoop运维应用实践——Hadoop平台常见问题与故障汇总、系统调优、网络规划与硬件存储选型
大数据·hadoop·hadoop集群操作系统调优·hadoop集群运维问题汇总·hadoop集群硬件规划·大数据平台网络规划·大数据平台硬件存储选型
MEIXIFU16 小时前
便利店实际经营面积怎么选最合适
大数据·人工智能·物联网·生活·迭代加深
观远数据6 小时前
AI+BI时代的数据合规三重门:传输、存储、消费如何一体化管控
大数据·数据分析