之前有一段时间,我们的hadoop2.4集群压力非常大,导致提交的job出现大量的reduce被kill掉,相同的job运行时间比在hadoop0.20.203上面长了很多,这个问题其实是reduce 任务启动时机的问题,由于yarn中没有map slot和reduce slot的概念,且ResourceManager也不知道map task和reduce task之间的依赖关系,因此MRAppMaster自己需要设计资源申请策略以防止因reduce task过早启动照成资源利用率低下和map task因分配不到资源而饿死,然后通过抢占机制,大量reduce任务被kill掉。MRAppMaster在MRv1原有策略(map task完成数目达到一定比例后才允许启动reduce task)基础上添加了更为严格的资源控制策略和抢占策略:
1、mapreduce.job.reduce.slowstart.completedmaps
当map 任务完成