Map-output源码分析

本文详细分析了MapReduce中Map-output的源码,包括MapTask的执行流程,NewOutputCollector如何处理输出,HashPartitioner的分区策略,以及Map阶段的溢写、排序、合并和Combiner的使用。通过对MapTask内部机制的探讨,揭示了MapReduce如何优化数据处理,减少网络IO,提升处理效率。
摘要由CSDN通过智能技术生成

大数据

Map-output源码分析

*MapTask

​ *runNewMapper

​ (output)

​ *NewOutputCollector 攻破输出

​ partitioner分区器 分区数量的2种情况: 1分区号都是0,都在一个reduce中,都在同一个分区

​ >1 getPartitioner 进入JobContextImpl实现类

​ *JobContextImpl

​ *HashPartitioner Hash映射方式:散列,破坏数据的原有特征

​ 取numReduce模的数量

​ collector容器 进入createSortingCollector方法 --准备一个对象

​ *createSortingCollector

​ *MapOutBuffer

输出初始化环节

​ 1字节数组默认100M,环形缓冲区 80%溢写 向磁盘中写入数据,当超过80%,发生溢写,将数据移出,另外的20%可以继续写入数据

​ 2 sorter排序器 默认QuickSort(快速排序),将数据的乱序排有序,排序之后产生IO,写出n个文件

​ 3 comperator比较器 用户可以配置 进入getOutputKeyCompartor

​ *getOutputKeyCompartor
​ --在MapTask任务中,分两步取比较用户有无配置比较器,默认是K的比较器

​ 4 combiner处理本Map的数据量,在溢写80%时,

​ --combiner出现的次数在于用户是否配置,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值