总结来说,combiner就是一个reduce,一个可有可无的reduce,在传输的数据量大的时候,适合加入combiner,可减少网络传输,提升效率。
在数据量不大的时候,combiner成了一个负担,因为多加了一个过程:
mapper -> shuffle -> reducer ------- mapper -> combiner -> shuffle -> reducer
另外,也可以用combiner干其他的事,比如mapper之后再把数据做进一步的必须处理之后传给reducer,这时把combiner改造成一个必须的模块,也是一种使用方式。