【问题标题】:Why is the right number of reduces in Hadoop 0.95 or 1.75?为什么 Hadoop 0.95 或 1.75 中的 reduce 数量正确?
【发布时间】:2023-03-15 22:56:01
【问题描述】:

hadoop 文档指出:

reduce 的正确数量似乎是 0.95 或 1.75 乘以 ( * mapred.tasktracker.reduce.tasks.maximum)。

使用 0.95 时,所有 reduce 都可以立即启动并开始 在地图完成时传输地图输出。 1.75 越快 节点将完成第一轮减少并启动第二轮 减少的浪潮在负载平衡方面做得更好。

这些值是否相当恒定?当您在这些数字之间或之外选择一个值时,结果是什么?

【问题讨论】:

    标签: configuration hadoop mapreduce


    【解决方案1】:

    这些值应该是您的情况所需要的值。 :)

    以下是我对价值观好处的理解:

    .95 是为了最大限度地利用可用的减速器。如果 Hadoop 默认使用单个 reducer,则不会有 reducer 的分布,导致它花费的时间比预期的要长。减速器的增加和时间的减少几乎是线性的(在我的有限情况下)。如果 1 个减速器需要 16 分钟,那么 8 个减速器需要 2 分钟。

    1.75 是一个试图优化节点中机器性能差异的值。它将创建不止一次的减速器,因此速度较快的机器将使用额外的减速器,而较慢的机器则不会。
    这个数字 (1.75) 需要根据您的硬件进行更多调整,而不是 0.95 值。如果您有 1 台快速机器和 3 台较慢的机器,也许您只需要 1.10。这个数字需要更多的实验才能找到适合您的硬件配置的值。如果reducer的数量太多,那么慢的机器又会成为瓶颈。

    【讨论】:

      【解决方案2】:

      补充一下Nija上面所说的,还有一点个人经验:

      0.95 有点意义,因为您正在利用集群的最大容量,但同时,您要考虑一些空任务槽,以防某些减速器发生故障。如果您使用 1 倍的 reduce 任务槽数,则失败的 reduce 必须 等待至少一个 reducer 完成。如果您使用 0.85 或 0.75 个减少任务槽,则说明您没有尽可能多地利用集群。

      【讨论】:

        【解决方案3】:

        我们可以说这些数字不再有效。现在根据“Hadoop:权威指南”一书和hadoop wiki,我们的目标是使reducer 处理时间缩短5 分钟。

        书中的片段:

        选择减速器的数量单个减速器的默认值是 Hadoop 新用户的一个陷阱。几乎所有现实世界的工作都应该 将此设置为更大的数字;否则,工作会很慢 因为所有的中间数据都流经一个reduce任务。 为一项工作选择减速器的数量更像是一门艺术,而不是一门艺术 科学。增加reducer的数量使得reduce阶段 更短,因为你得到更多的并行性。但是,如果你也接受这个 到目前为止,您可能有很多小文件,这是次优的。一条规则 经验是针对每个运行五分钟左右的减速器, 并产生至少一个 HDFS 块的输出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-25
          • 1970-01-01
          • 1970-01-01
          • 2015-11-08
          • 2012-07-25
          • 2023-04-04
          • 1970-01-01
          • 2014-12-29
          相关资源
          最近更新 更多