MapReduce : shuffle机制 -- 排序和分发

maptask数量由inputsplit切片规划是由InputFormat的具体实现子类来实现,就是调用
InputSplits[ ] getSplits() 方法,这个方法的逻辑可以自定义
在默认情况下,由FileInputFormat来实现

1多个maptask程序分别读取一部分文件内容
2每次读取一行,执行map逻辑,发给缓冲区,缓冲区大小默认100M,
3有线程监控缓冲区,当超过80%时,做溢出处理,将缓冲区内容持久化到hadoop文件
4溢出文件是分区的,根据reducetask个数决定,
5溢出文件内部是有序的,
6处理大数据时会有多个溢出文件
7将多个溢出文件的每个分区合并(归并排序)后分发给对应的reducetask
8reducetask获取到每个maptask分发的文件后再次合并(归并排序)
9再执行reduce业务逻辑

参考:
MR执行流程详解
https://blog.csdn.net/milkcoffeezhu/article/details/80551586

Yarn的工作流程(mr提交应用程序
https://blog.csdn.net/qq_34382453/article/details/83069781

YARN的工作机制
https://blog.csdn.net/kaede1209/article/details/81148606

猜你喜欢

转载自blog.csdn.net/weixin_39979119/article/details/85007706