hadoop shuffle

本文详细介绍了Hadoop中Shuffle的工作原理,包括从Map到Reduce的整个过程:数据的输入、Map任务处理、溢写与合并操作、Reduce端的数据拉取及排序等关键步骤,并解释了如何通过配置优化Shuffle过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shuffle


1.发生的阶段,map->reduce的中间过程
2.流程
input数据输入-> <keyvalue> -> <0,hadoop spark>
map接受输入的数据,<0,hadoop spark>  
3.进入shuffle阶段
map的结果输出到内存中(每个map任务)
内存大小默认是100M //用户可以自定义
环形缓冲区,<hadoop,1><spark,1>
当内存到达一定大小的时候,默认是80%      //用户可以自定义
触发溢写操作spill
溢写到本地磁盘中,
1.分区,partition,划分区域
决定了map输出数据,被哪个reduce任务进行处理
默认情况下使用哈希值取余的方式来制定规则的
分区规则,可以用户自己制定
2.排序sort
对分区中的数据进行排序
在内存中排序速度非常快
比较
3.溢写spill
当排序完成以后才会进行溢写操作,将内存数据写入到磁盘中
溢写的操作是单独开启一个线程来进行的
所以后续的数据也是可以继续写入的
不断的溢写之后,在本地磁盘中就会形成很多的溢写文件
4.合并merge

将各个分区的文件合并在一起,形成一个大文件

------------------------map部分------------------------------------------------------
------------------------reduce端-----------------------------------------------------
5.去map开启开启线程,通过HTTP网络方式去,copy对应的数据
加载到内存,同样的内存也有大小
流程同map一样
6.分组,group(将相同key的value加在一起)
判断key


指定环形缓冲区的配置
<property>
<name>mapreduce.task.io.sort.mb</name>
<value>100</value>
</property>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值