如果Reducer在所有映射器完成之前没有启动那么为什么MapReduce作业的进度显示像Map(50%)Reduce(10%)?为什么在mapper尚未完成时会显示减速器进度百分比?
答案 0 :(得分:1)
这是因为mapreduce.job.reduce.slowstart.completedmaps
属性的默认值为0.05
。
这意味着只要总共5%的映射器完成执行,就会启动reducer阶段。
因此,派遣的减速器将继续保持复制阶段,直到所有映射器完成。
如果您希望仅在所有映射器完成后启动Reducer,则在作业配置中为给定属性配置1.0
值。
答案 1 :(得分:-1)
Reducers一旦可用就开始从映射器开始复制中间键值对。进度计算还考虑了通过reduce过程完成的数据传输处理,因此只要映射器的任何中间键值对可以传输到reducer,就会开始显示reduce进度。尽管还原器进度仍然更新,但程序员定义的reduce方法仅在所有映射器完成后才被调用