☰
Hadoop Map Shuffle Reduce
2026/9/25 16:45:00 网站建设 项目流程

文件内容如下:

hello world hello spark hello mapreduce
需求:统计每个单词出现多少次

1、Map 阶段

Map 读取每一行文本,切割成单词,输出(单词, 1)

出现一次单词,记计数 1

输入第一行:hello world→ 切割输出

(hello,1) (world,1)

第二行:hello spark

(hello,1) (spark,1)

第三行:hello mapreduce

(hello,1) (mapreduce,1)

Map 输出全部 KV:

(hello,1) (world,1) (hello,1) (spark,1) (hello,1) (mapreduce,1)

Map 做的事:拆分数据,打上标记

多个 Map 任务并行处理不同文本块

2、Shuffle 洗牌(搬运分组)

把相同 key 的全部数据收集到一块,发给同一个 Reduce

经过 shuffle 分拣之后分组:

hello → [1, 1, 1] world → [1] spark → [1] mapreduce → [1]

✅关键点:

所有的hello全部搬运到同一个 Reduce 任务;

shuffle 要磁盘读写 + 网络传输,数据倾斜就出在这里,如果某个单词几千万条,这个 Reduce 就扛不住 OOM。

3、Reduce 阶段

Reduce 拿到同一个 key 对应的一堆数字,把数字累加求和

hello: 1+1+1 = 3 world:1 spark:1 mapreduce:1

输出最终统计结果。


快速记忆

  1. Map:拆单词,输出 (单词,1)
  2. Shuffle:把相同单词全部汇集到一处
  3. Reduce:对相同单词的 1 累加,得到总次数

MapReduce:Map 输出全部写磁盘,再 shuffle;

Spark:前面 map 操作放内存,到 shuffle 这一步才写磁盘;

WordCount 单词统计:

Map 读取文本,切分单词,输出 key‑value(word,1);

Shuffle 将相同 word 的数据分组,网络传输交给同一个 Reduce;

Reduce 对 value 集合求和,输出每个单词计数;

Shuffle 是 IO 开销最大的阶段,数据倾斜发生在此处

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询