昨天跑一个mapreduce,发现reduce跑的非常慢,以为是数据量太大或者是reduce数少的原因,改完发现还是很慢。
观察reduce的百分比很快的增加到33%和66%,询问同事才知道Reduce的Task分为三个阶段:
1、Prepare
准备数据,抓取Map过来的输出(进度:0~33%)
2、Sort
排序阶段(进度:33%~66%)
3、Reduce
真正的reduce计算阶段,执行你所写的reduce代码(进度:66%~100%)
如果前面66%速度很快,后面慢的话就是reduce部分没有写好;否则才是数据量大的问题。