MapReduce计算流程——史上最易理懂

用自己的话讲

        首先Map去hdfs读取文件存储信息,读到块。然后切片,切片数量跟task数量一致,所以这里可以动态调整task的数量。然后Map将这些块读到内存——环形缓冲区,环形缓冲区一般大小为100M,到80%时,开始溢写,同时在剩下的区域开辟新赤道,持续读入,这样减少了卡顿,做到了持续输入输出。而在环形缓冲区中,要对待处理文件进行分区,排序操作。分区是对key使用hash方法分区,而排序是使用快速排序。随后在溢写操作中,对文件合并,最多10个合并一个,在这里也可以使用Combiner组合器来实现预聚合到硬盘。

        然后Reduce开始拉取,当Map溢写到5%时,开始拉取,拉取到后在Reduce中实现归并操作,使用归并排序,排序之后,再分组(首先查找有没有程序员自定义分组器,如果没有则看程序员有没有自定义比较器,有则使用比较器。最后都没有则按照MapTask写出的key的比较器进行分组),分组之后再执行程序员自己写的Reduce方法,得到最终结果,然后输出到指定地,可以是HDFS,DB,NOSQL.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值