我在hadoop集群上运行mapreduce作业,其中包含88个内核和60个reducer。出于某种原因,它只使用79个集群核心。在开始时,它使用79个映射器运行,但是当完成一半分割时,它使用53个映射器和26个减少器,并且运行的映射器的数量继续缩小,这增加了作业完成时间。 Log说这些26个reducer复制计算数据。 是否有可能让hadoop首先运行所有映射器并在减速器之后运行? 就像在spark或tez作业中一样,他们使用所有核心进行映射,然后使用所有核心进行映射。
答案 0 :(得分:5)
将mapreduce.job.reduce.slowstart.completedmaps
设为1.0。引自mapred-default.xml:
mapreduce.job.reduce.slowstart.completedmaps
0.05
作业中应该在减少之前完成的地图数量的分数计划用于作业。