用户组:游客
使用道具 举报
这个内存缓冲区是有大小限制的,默认是100MB。当map task的输出结果很多时,就可能会撑爆内存,所以需要在一定条件下将缓冲区中的数据临时写入磁盘,然后重新利用这块缓冲区。这个从内存往磁盘写数据的过程被称为Spill,中文可译为溢写,字面意思很直观。这个溢写是由单独线程来完成,不影响往缓冲区写map结果的线程。溢写线程启动时不应该阻止map的结果输出,所以整个缓冲区有个溢写的比例spill.percent。这个比例默认是0.8,也就是当缓冲区的数据已经达到阈值(buffer size * spill percent = 100MB * 0.8 = 80MB),溢写线程启动,锁定这80MB的内存,执行溢写过程。Map task的输出结果还可以往剩下的20MB内存中写,互不影响。
sstutu 发表于 2018-8-31 13:49 这个恐怕看不到,因为map输出中间结果,都被会reduce处理,而且假如只有map,这个应该也是临时的存储。用了 ...
本版积分规则 发表回复 回帖后跳转到最后一页
中级会员
4
主题
28
帖子
3
粉丝
查看 »