MapReduce 运行原理---再聊MapReduce 的 Map ,Reduce 以及shuffle 过程

官网使用了三张图来描述shuffle 过程 ,Map 和 reduce 是我们自己写的程序,所以没有写进这三个图里面,今天主要围绕这三张图我们做一个简单的说明和复习 :


第一张图,从整体上把握流程


上图提供的是整个流程的一部分,全部流程应该是有 4 个  Map  ,3 个 Reduce ,这里只有一个map 一个  reduce

第一个问题 : partition 什么时候做 ?

partition 是一直会做的,不管有几个reduce 任务 ,默认是一个reduce ,所以默认也就是一个partition ,这两个在数量上是一致的 ,在这里reduce 有三个,所以 partition 也就有三个 。现在回答问题 ,partition 什么时间做的 ,上图的 buffer in memory 是map 处理后的数据写入缓存的一个步骤,partition 会在这个步骤前的步骤做  。(partition 可能会为数据加入一个标志,哈哈 现在不确定,但是这样理解应该不会产生歧义)

第二个问题 : 溢写机制

buffer in memory 的空间是有限的,所以当空间达到一定的阀值后就会写到磁盘上,按partition 写 ,上图可以看到 partitions 有三个

第三个问题: merge and sort

在有merge 地方就会有sort 发生,这个当然会影响效率问题 ,很多时间是不需要sort 的 ,map 的最后阶段 会把所有的小的merge 的数据merge 成一个更大的文件,这个文件也是分区的。

第四个问题 :reduce 阶段,也会有merge ,sort

reduce 会发出命令,到指定的datanode 的 copy 相应的partition 数据 ,并把所有的copy 过来的数据merge

第五个问题 : reduce 阶段 也需要用到内存溢写

第六个问题 : group by  发生在 reduce 结果

第七个问题: combline 发生在map 结果,目的是减少map 键值对的输出

第八个问题: 从map 到reduce 用的是http 协议,走网络通信。


=================================华丽分割线==================

亮瞎眼










评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值