环形缓冲区溢写
环形缓冲区,当缓冲区的数据达到 缓冲区的 80% 时(100M 80% =80M),就启动 *溢写
每次溢写,会在磁盘上生成一个临时文件,内容如下:
(李雷,1)
(李雷,1)
(lucy,1)
(lucy,1)
(lucy,1)
可见有很多重复的数据
Combiner
在 溢写 前,执行 Combiner ,对 key 相同的 value,
进行 累加合并,然后写入磁盘,内容如下:
(李雷,2)
(lucy,3)
作用
Combiner对MapTask的输出进行汇总,以减小网络传输量
实现
Combiner的父类是 Reducer
Combiner和Reducer的区别
在于运行的位置:
- Combiner是在 环形缓冲区溢写时运行
- Mapper执行结束后,才执行Reducer
Combiner的应用场景
适合 累加,最大值 的 MapReduce 任务
不适合求 平均数,中位数 的 MapReduce 任务


