清晰分离的Hadoop阶段

清晰分离的Hadoop阶段,hadoop,mapreduce,cluster-computing,job-scheduling,Hadoop,Mapreduce,Cluster Computing,Job Scheduling,我感兴趣的是在MapReduce执行的特定阶段对Hadoop集群进行基准测试。也就是说,我希望在map阶段、shuffle阶段和reduce阶段之间有一个清晰的分离 有没有办法避免在所有地图任务完成之前洗牌或减少任何东西,以及在所有洗牌完成之前避免减少任何东西?我不关心对执行时间的影响,因为我只关心每个阶段的资源消耗 我看到另一篇关于在不应该减少的节点上将mapred.tasktracker.reduce.tasks.max设置为0,在不应该减少的节点上将mapred.tasktracker.m

我感兴趣的是在MapReduce执行的特定阶段对Hadoop集群进行基准测试。也就是说,我希望在map阶段、shuffle阶段和reduce阶段之间有一个清晰的分离

有没有办法避免在所有地图任务完成之前洗牌或减少任何东西,以及在所有洗牌完成之前避免减少任何东西?我不关心对执行时间的影响,因为我只关心每个阶段的资源消耗

我看到另一篇关于在不应该减少的节点上将
mapred.tasktracker.reduce.tasks.max
设置为
0
,在不应该减少的节点上将
mapred.tasktracker.map.tasks.max
设置为
0
来分离特定节点上的任务的SO帖子,但是在这种情况下,map和reduce任务仍然同时运行,并且我也不能在每个阶段使用我的完整集群

谢谢

有没有办法避免在所有地图任务完成之前洗牌或减少任何东西,以及在所有洗牌完成之前避免减少任何东西

mapreduce.job.reduce.slowstart.completedmaps
设置为0.05,并定义为作业中应在为作业计划reduce之前完成的映射数的分数。


将上述参数设置为1,在所有映射任务执行完成之前,洗牌不会开始。

正是我想要的。非常感谢。也许我说得太快了。。。尽管它推迟排序或缩减,直到所有的映射都完成,但它仍然执行复制步骤。也没有办法阻止它吗?我不认为在没有完成所有映射任务的情况下,通过将上述属性设置为1来启动洗牌(复制步骤),因为reduce任务尚未计划。