【问题标题】:Cleanly separate Hadoop phases干净地分离 Hadoop 阶段
【发布时间】:2012-02-01 11:56:49
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: hadoop mapreduce cluster-computing job-scheduling


    【解决方案1】:

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

    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任务执行完成后才开始shuffle。

    【讨论】:

    • 正是我想要的。谢谢!
    • 或者我说的太早了...尽管事实上它会推迟排序或缩小直到所有地图都完全完成,但它仍然会执行复制步骤。也没有办法阻止它吗?
    • 我不认为通过将提到的属性设置为 1 来完成所有映射任务也不会开始洗牌(复制步骤),因为尚未安排归约任务。
    猜你喜欢
    • 2017-06-12
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    相关资源
    最近更新 更多