gpt4 book ai didi

hadoop - 在不同的机器组上运行Mapper和Reducer

转载 作者:行者123 更新时间:2023-12-02 21:48:36 26 4
gpt4 key购买 nike

我们有一个很好的,庞大的,复杂的 flex 贴图工作,在Mapper,Collector和Reducer的硬件约束上有着截然不同的约束。

问题是:对于Mappers,我们需要大量的轻量级机器来并行运行多个Mappers(都很好);收集器需要更多的内存,但是应该给它们每个分配大约6GB的峰值堆。 。 。但是,问题在于 reducer 。当其中一个启动时,它将占用大约32-64GB的空间进行处理。

结果,由于一个盒子的全部内存被耗尽,我们得到了一种循环式的任务死亡,这导致一个映射器和化简器在其他地方重新启动。

最简单的方法是,如果我们能够以某种方式指定一种方法,使化简程序在不同的“组”(少数的巨大盒子)上运行,而使映射器/收集器在较小的盒子上运行。这也可能导致大量的成本节省,因为我们真的不应该确定映射器正在运行的节点的大小,以适应缩减器的需求。

另一种选择是“分解”工作,以便可以启动第二个集群以处理映射器收集器的输出-但这显然是“次优的”。

因此,问题是:

  • 是否可以指定映射器或化简器将“分组”哪些
    在Elastic MapReduce和/或Hadoop上运行?
  • 是否有一种方法可以防止在所有映射器完成之前还原器启动?
  • 是否有人对如何解决此问题有其他想法?

  • 干杯!

    最佳答案

    在Hadoop MapReduce作业期间,所有Mappers完成后,Reducer开始运行。在进行分区以确定哪个Reducer接收哪些数据之前,将对Map阶段的输出进行混洗和排序。因此,在随机播放/排序阶段结束后(映射器完成之后),Reducer开始运行。

    关于hadoop - 在不同的机器组上运行Mapper和Reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23025253/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com