【问题标题】:Is it possible to disable sorting in hadoop?是否可以禁用hadoop中的排序?
【发布时间】:2012-02-22 21:34:09
【问题描述】:

我的工作不需要排序,只需要每个键的聚合信息。所以我认为是否可以禁用所有信息的排序以提高性能。


注意:我不能将 reducer 计数设置为零,因为我需要在许多映射器之间聚合数据。我只是对使用一个减速器的排序结果不感兴趣。

【问题讨论】:

  • AFAIK,排序是MR工作中必不可少的阶段,不能省略。排序通常不是性能开销的重要组成部分。
  • yura,你找到解决办法了吗?我投票结束作为一个骗子,因为在另一个问题中,实际上有一个答案!

标签: hadoop mapreduce


【解决方案1】:

对map输出排序的主要目的之一是,当元组到达reducer时,reducer必须make)调用reducer任务,使用排序后的map输出列表,它可以通过顺序扫描(当它看到不同的键然后只是创建新列表),如果地图输出没有排序,那么它必须扫描整个列表以形成具有相同键的列表。

【讨论】:

    【解决方案2】:

    不,MapReduce 中的排序本质上是为了内部目的,而不是为了对最终结果进行排序。
    在为唯一键创建值列表时,排序输入可确保良好的性能,在调用 reduce() 函数时,这些值作为 Values> 参数提供。

    【讨论】:

      【解决方案3】:

      如果您指定零减速器 (setNumReduceTasks(0)),则根本不会在 Hadoop MapReduce 中执行洗牌和排序。 和 通过job.setNumreduceTasks(0)可以在driver class中设置reducer的个数为0。这说明没有reducer阶段,只有map阶段。称为map-only作业。

      【讨论】:

        猜你喜欢
        • 2019-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 2014-11-20
        • 1970-01-01
        相关资源
        最近更新 更多