关于hadoop 的shuffle 过程理解(面试题系列~~~)

本文详细解析了Hadoop MapReduce中的Shuffle过程,包括map端的写入磁盘、分区排序和合并阶段,以及reduce端的复制和合并阶段。Shuffle过程确保数据正确分区和排序,为reduce任务提供有序输入,实现高效的数据处理。
摘要由CSDN通过智能技术生成


MapReduce 确保每个reducer 的输入都是按键进行排序的。系统执行排序,将map 输出作为输入传给reducer 的过程称为shuffle。

map 端的shuffle 过程

写入磁盘

map 端会先将输出写入到内存缓冲区,当内存缓冲区到达指定的阈值时,一个后台线程就开始将缓冲区的内容spill 到磁盘。

分区&排序

在写入磁盘之前,线程首先根据数据最终要到达的reducer 将数据划分为相应的分区。在每个分区中,后台线程按键进行内存中排序。(分区的目的是将数据划分到不同的Reducer 上去,以期望达到负载均衡)

合并阶段

每个map 任务可能产生多个spill 文件,在任务完成之前,spill 文件会被合并为一个已分区已排序的输出文件。

reduce 端的shuffle 过程

复制阶段

每个reduce 任务需要若干个map 任务的输出作为输入,每个map 任务的完成时间可能不同,因此在每个任务完成时,reduce 任务就开始复制其输出。

这就是reduce 任务的复制阶段。reduce 任务有少量的复制线程,因此能够并行

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值