从“Hadoop权威指南” [每个映射任务都有一个循环内存缓冲区,它将输出写入到其中。默认情况下,缓冲区大小为 100 MB,可以通过更改io.sort.mb属性来调整大小。当 缓冲器的内容达到特定阈值的大小(io.sort.spill.percent, 具有默认0.80,或80%),后台线程将开始溢出内容 到磁盘]循环缓冲区如何用于hadoop中的溢出处理?
这里的问题是,由于每个map任务在单个输入分割上工作(或多或少会等于HDFS块的大小,即64 MB),所以回溢到磁盘的条件决不会产生。我错过了什么。请帮忙。
好的!我明白,大块大小肯定会调用这种情况。但是,由于多次溢出,大块大小还会增加磁盘I/O的数量。如何考虑这种交易? – user2925172
如果块大小很大,并且您注意到性能的瓶颈位于缓冲区溢出到磁盘的位置,则需要:选项1)将分割大小更改为小于块大小的值。帮助减少缓冲溢出。选项2)如果你有更多的内存来增加io.sort.mb内存。 – Thejas