这是个很细节很细节的问题,没看过源码,但是偏偏遇到了
hadoop MapReduce在reduce阶段分为三步,即:shuffle,sort,reduce。当然也有说5步的,这里的内容我之后单独写一篇文章来说明白。
就题目的问题,在mapred-site.xml中有个参数可以调整什么时候开始执行reduce操作,
# 以前
mapred.reduce.slowstart.completed.maps
# 新版
mapreduce.job.reduce.slowstart.completedmaps
默认值是0.95,即在mapper执行完95%时开始执行reduce操作,我们可以根据自己的需要调整,0.0到1.00之间。
毕竟reduce没必要启动的太早,太早也是启动线程监听map的执行情况,没有这个必要,也浪费资源,所以可以通过设置,稍晚一些进行启动执行。
参考博客:
https://blog.csdn.net/shufanshijie/article/details/84427465
https://blog.csdn.net/lipeng_bigdata/article/details/51285687