小白都能看懂的MapReduce的运行机制

本文介绍了MapReduce的运行机制,包括Map阶段和Reduce阶段。Map阶段涉及数据读取、转换、分区、排序和归并,Reduce阶段则负责拉取Map数据、归并排序并输出。Mapper通过Inputformat读取数据,使用Mapper逻辑类处理,再由Merger组件归并排序。Reducer阶段进行数据下载、归并排序,通过Reducer逻辑处理后写出到HDFS或下一个Map阶段。

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

MR的运行机制

MR的运行机制其实就是从Input到output的一个过程,再这其中涉及到了两个阶段,Map阶段和Reduce阶段,中间还有一个Shuffle过程。再map阶段呢,就是讲数据已K,V形式读取进来,然后再通过环形缓冲区,然后分区,排序,归并。reduce阶段呢 拉取map阶段的数据,再进行归并排序,然后再已K,V的形式写出去,可以写到下一个map或者是HDFS中。map阶段涉及分区,reduce阶段涉及分组。
具体运行机制如下:
Mapper阶段
1、Maptask通过InputformatcreateRecordReader()的方法调用LineRecordReader中的nextkey()和nextValue()方法,从Split读取数据。
2、读取的数据通过Mapper的逻辑类,转换为K,V类型,通过outputCollector将k,v序列化后存入带阻塞的环形缓冲区
3、环形缓冲区默认是100M,存入数据时会记录偏移量,当写入80%开始溢出(这个地方参数可以设置)
4、溢出前会开启spiller线程,通过Partitioner.getPartition(k,v)进行分区,同时通过k1.compareTo(k2)方法进行排序,分区内是有序的
5、溢出可能多次,最少一次也可以通过局部聚合和Combiner,先聚合在溢出
6、溢出的排序的数据会通过Merger组件进行归并排序,写出到本地磁盘中,写出的文件是SequenceFile
Reduce阶段
1、Reducetask通过nodeManager提供的辅助shuffle服务</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值