Hadoop基本介绍(4)

Map的输出到内存

  • Map的输出先写入环形缓冲区(默认大小100M-可以认为调整)(可以再输出的同时写入数据),当缓冲区内的数据达到阈值(默认0.8-可以人为调整)时,
  • 对数据进行flash。flash 出去的数据的数量达到一定量(默认4个)时,进行数据的合并
    Hadoop基本介绍(4)

Reduce数据读取

  • Reduce 主动发出拷贝进程(默认5个copy进程)到Map端获取数据。
  • 获取到数据后,将数据写入内存,当数据达到阈值,将数据flash出去。
  • 当flash出去文件达到一定的量时,进行数据的合并。最终将数据发送给reduce
    Hadoop基本介绍(4)

Map到reduce内存角度宏观流程

Hadoop基本介绍(4)

Map到reduce处理流程角度宏观步骤

Hadoop基本介绍(4)

Shuffle阶段

从Map的输出到reduce的输入

  • 流程角度
    Hadoop基本介绍(4)

  • 内存角度
    Hadoop基本介绍(4)

如何能够让Map执行效率最高

尽量减少环形缓冲区flush的次数(减少IO 的使用)

  • 1、调大环形缓冲区的大小,将100M调更大。
  • 2、调大环形缓冲区阈值大的大小。
  • 3、对Map输出的数据进行压缩。(数据在压缩和解压的过程中会消耗CPU)

如何能够让Reduce执行效率最高

Hadoop基本介绍(4)