[MapReduce]MapReduce详细工作流程图

Map端

微信截图_20200224171355.png

  • outputController 会把map处理后的数据先存放到环形缓冲区(内存), 该缓冲区 左侧为k-v的元数据包括了分区标记、k/v起始位置等,右侧是k-v数据,先向中间分割点写 到了溢写比时,写入磁盘,然后从中间往两侧写,达到溢写比,再从两侧往中间写....以此往复
  • 两次排序: 1)到达溢写比时,在内存中先用快排排序,使得数据有序地溢写到磁盘。2) 数据处理完毕后 对磁盘上所有文件进行归并排序

Reduce端

微信截图_20200224171843.png

  • Reduce端的排序: 1)从MapTask拷贝相应的数据文件,如果文件太大超过溢写比,则写入到磁盘,否则存在内存中。磁盘上的文件数目到达一定阈值则进行一次归并排序,生成一个更大的文件;2)当所有数据拷贝完成后,ReduceTask对内存和磁盘上的所有数据进行一次归并排序
  • 归并后分组, 按照分组的Key 把数据依次传入reducer中

你可能感兴趣的:(mapreduce)