我对在MapReduce执行的特定阶段对Hadoop集群进行基准测试感兴趣。也就是说,我希望在映射阶段,混洗阶段和缩小阶段之间进行清晰的分离。
有没有办法在所有 map task 完成之前避免改组或减少任何内容,并避免减少直到所有混排完成?我不在乎对执行时间的影响,因为我只对每个阶段的资源消耗感兴趣。
我看到了另一篇关于在特定节点上分离任务的帖子,方法是在不应映射的节点上将mapred.tasktracker.reduce.tasks.maximum
设置为0
,在不应映射的节点上将mapred.tasktracker.map.tasks.maximum
设置为0
,但是在这种情况下,map和reduce任务仍可同时运行,因此我我也无法在每个阶段使用我的完整集群。
谢谢!
最佳答案
Is there a way to refrain from shuffling or reducing anything before all map tasks have finished, and refraining from reducing until all shuffles are finished?
mapreduce.job.reduce.slowstart.completedmaps
设置为0.05,并定义为Fraction of the number of maps in the job which should be complete before reduces are scheduled for the job.
将上述参数设置为1,直到完成所有 map task 的执行,混洗才会开始。
关于hadoop - 完全独立的Hadoop阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088744/