MapRedece执行流程各个阶段的理解

本文详细解析了MapReduce的执行过程,包括split阶段,map阶段,shuffle阶段(mapshuffle和reduceshuffle)以及reduce阶段。在split阶段,大文件被逻辑切片,map阶段中数据被解析成键值对,shuffle阶段负责数据的分区、排序和合并,而reduce阶段则进行最后的数据归并。整个流程确保了数据的有效处理和传输效率。
摘要由CSDN通过智能技术生成

阶段

大致阶段:split->map->shuffle->reduce

split阶段

split是将一个大文件进行逻辑上的切片,主要记录的是数据位置而非数据本身,一个分片对应一个map,以提高map处理的并行度。由于map任务的本地化,split大小默认和block大小相同,避免跨节点block带来网络开销

map阶段

每个map任务是一个java进程,它会读取HDFS中自己的输入分片,将分片中的数据按照一定规则解析成很多的键值对

shuffle阶段

shuffle阶段完成对数据的分区,排序和合并等操作,描述着数据从map端流向reduce端的过程,分为map shuffle 和 reduce shuffle

mapshuffle

一、map输出的结果存到内存缓冲区中(其中会进行快速排序,以提高效率),该缓冲区默认大小为100M,当达到80M(80%)时,系统会系统一个spill线程,会将缓冲区数据溢写到磁盘

二、溢写文件前,先根据分区号和key进行排序,根据reduce任务数将数据划分成相同数目的partition(为避免分区导致不同reduce分配数据量不均衡。分区就是hash过程,默认按照hash(key)%numRedeceTask = 分区号)写入文件,然后对每个partition进行排序,此时如果有combiner࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值