Map阶段环形缓冲区详细分析
- 这几天不是很忙,抽了点闲着的时间回头看了一下hadoop,看到map阶段的环形缓冲区想到自己刚开始的的时候每太弄明白,这次好好仔细看了一下,顺便把学习成果记录了下来
- 在map阶段,每个map都有一个环形缓冲区,用于存储map的输出。这个环形缓冲区的默认大小是100MB,一旦数据达到我们的阈值0.8(可修改)的时候,会有一个后台线程将内容溢写到磁盘的指定目录下的一个新建的文件中。
- 内容溢写出去以后形成一个个文件,我们首先键这些文件进行分区排序得到一个排序后的文件
- 这是会为每个文件的不同分区进行一个简单的combiner聚合操作(主要是为了减少数据量,减少后面所需要的IO的时间)
- 我们将一个map产生的不同的文件进行一个简单的合并 在进行压缩后shuffle的磁盘中
- 然后就就是后面的reduce操作了
- 结合上面的图来说 这个过程还是很简单明了的