看图说mapreduce的shuffle机制

来源:互联网 发布:中国保险保险网络大学 编辑:程序博客网 时间:2024/05/16 15:42

这里写图片描述

看图说shuffle过程:
  mapreduce中,map阶段处理的数据如何传递给reduce阶段,是mapreduce框架中最关键的一个流程,这个流程就叫shuffle
1、shuffle是MR处理流程中的一个过程,它的每一个处理步骤是分散在各个map task和reduce task节点上完成的,整体来看,分为3个操作:

  1. partition分区(shuffle必要操作)。
  2. sort排序,根据key排序(shuffle必要操作)。
  3. combiner进行局部的value的合并(shuffle非必要要操作)。

2、shuffle详细过程

  1. maptask收集kv对到内存缓存(buffer in memory)。
  2. 从内存缓存中不断溢出文件到本地磁盘,可能会溢出很多文件,溢出的大小默认是100M。
  3. 在文件溢出的过程中会对文件进行分区(分组)、和针对key排序(parition,sort)。
  4. 会对分区、排序的多个文件进行一次归并排序(merger on disk)。
  5. reducetask会根据自己分分区号,去各个maptask机器上取相应的结果分区数据。
  6. reduce会取到同一个分区的来自不同maptask的结果文件(other maps),然后reducetask会将这些文件进行再次合并(同样会做一次归并排序)。
  7. 合并文件结束后整个shuffle也结束了,最后会进入reduce的业务逻辑。