在hadoop中,Map器的输出在shuffle阶段被复制到reducer。reducer必须从不同的Map器复制相应的分区。在开始实际的reduce过程之前,reducer在哪里存储其输入?
7gcisfzg1#
如果Map输出足够小(缓冲区的大小由mapred.job.shuffle.input.buffer.percent控制,它指定了用于此目的的堆的比例),则将它们复制到reduce任务jvm的内存中;否则,它们将被复制到磁盘。当内存缓冲区达到阈值大小(由mapred.job.shuffle.merge.percent控制)或达到阈值Map输出数(mapred.inmem.merge.threshold)时,它将被合并并溢出到磁盘。如果指定了组合器,则在合并期间将运行该组合器以减少写入磁盘的数据量。参考hadoop的权威指南
1条答案
按热度按时间7gcisfzg1#
如果Map输出足够小(缓冲区的大小由mapred.job.shuffle.input.buffer.percent控制,它指定了用于此目的的堆的比例),则将它们复制到reduce任务jvm的内存中;否则,它们将被复制到磁盘。当内存缓冲区达到阈值大小(由mapred.job.shuffle.merge.percent控制)或达到阈值Map输出数(mapred.inmem.merge.threshold)时,它将被合并并溢出到磁盘。如果指定了组合器,则在合并期间将运行该组合器以减少写入磁盘的数据量。
参考hadoop的权威指南