【问题标题】:What is the benefit of the reducers in Hadoop?Hadoop 中的 reducer 有什么好处?
【发布时间】:2017-09-19 15:16:13
【问题描述】:

在以下场景中,我看不到 Hadoop 中的 reducer 的值:

  • Map 任务生成唯一键(因为我们可以将 Map/Reduce 功能合并在一起)
  • Map Tasks 的输出大小太大(如果我们等待 reducer 开始工作,这会耗尽内存)

  • 如果我们有任何不需要对键进行分组和排序的功能

如果我错了,请纠正我。

如果有人能给我一个减速器的好处的真实例子,以及何时应该使用它,我将不胜感激。

【问题讨论】:

  • 第三条语句是中心。如果你不需要分组,你应该将reducer的数量设置为0。
  • @fi11er 谢谢前两条语句
  • 这完全取决于您的任务,您不能在映射器上进行聚合(或者可以,但您可能会为此编写自己的 reduce)。 1)如果你有唯一的键,你大多不需要对你的数据进行分组,所以你不需要reducer。 2)它不依赖于大小,如果你想聚合地图输出,你将添加reducer。
  • @fi11er 谢谢兄弟,但我注意到,在监控 Hadoop 中的任务时,reducers 直到 Mappers 完成他们的任务才真正执行他们的任务。如果映射器输出像二进制文件一样大,这可能会耗尽内存(容器错误)。这就是我在第二个陈述中的意思。不是建议或假设是真实的。这就是为什么我要问什么可能是解决方案。是不使用reducers还是自己写reducers。关键是如果reducer在一个映射器完成后同时启动不会有问题,但它会等到映射器完成。

标签: hadoop mapreduce hadoop2 reduce reducers


【解决方案1】:

当您需要进行聚合/分组等操作时,Reducer 是有益的(或必需的)。

仅供参考:Reducer 用于对来自不同映射器的键的不同值进行分组。因此,对于不需要分组/聚合的用例,则没有必要使用 reducer(您可以将其设置为零,即 Map-Only 作业)。

我能想到的一个快速用例是 - 您想将一个大文件随机拆分为多个部分文件。在这种情况下,您将为 Map-Only 作业提供大文件(比如说 100G)。所有地图都会读取一个文件块并作为文件的一部分写入。

【讨论】:

  • 谢谢。前两个语句怎么样,即“映射任务生成唯一键......映射任务的输出大小太大......”我认为这里也不应该使用减速器。您提供了一个 Map Only Jobs 的示例,您能否提供一个“真实”示例(即实际示例,而不是概念),正如我在帖子中提到的那样。
猜你喜欢
  • 2016-03-31
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
相关资源
最近更新 更多