【问题标题】:Deciding on the optimal number of reducers to be specified for fastest processing in a Hadoop map reduce program决定为 Hadoop map reduce 程序中最快处理指定的最佳 reducer 数量
【发布时间】:2021-01-27 13:02:03
【问题描述】:

reducer 数量的默认值为 1。Partitioner 确保来自多个 mapper 的相同键进入同一个 reducer,但这并不意味着 reducer 的数量将等于分区的数量。从驱动程序中,可以使用 JobConf 的 conf.setNumReduceTasks(int num) 或在命令行中的 mapred.reduce.tasks 指定减速器的数量。如果只需要映射器,那么我们可以将其设置为 0。

我已阅读有关设置减速器数量的信息:

  1. reducer 的数量可以在 0.95 或 1.75 乘以(节点数)*(每个节点的最大容器数)之间。我还在下面的链接中读到,增加减速器的数量可能会产生开销:

Number of reducers in hadoop

  1. 另外,我在下面的链接中读到,reducer 的数量最好设置为集群中的 reduce 插槽数(减去一些以允许失败):

What determines the number of mappers/reducers to use given a specified set of data

基于1中指定的范围,基于2,如何确定最快处理的最佳数量?

谢谢。

【问题讨论】:

  • 您的集群需要多长时间才能完成单个测试任务,以便对不同的配置进行基准测试?
  • 我想知道一般的方法。

标签: hadoop mapreduce


【解决方案1】:

我想知道一般的方法。

这个问题只能有一个经验的答案。引用this Q&A 中的答案

默认情况下,对于 1 GB 的数据,将使用一个 reducer。 [...] 同样,如果您的数据是 10 Gb,那么将使用 10 个 reducer。

默认值已经是经验法则。您可以通过进行经验测试来进一步调整默认数字,并查看性能如何变化。也就是说,目前,全部。

【讨论】:

  • 谢谢。这听起来像是从默认值开始并通过在观察性能变化的同时调整默认值来进行经验测试的好方法。但是基于 1) 和 2) 的数量可能与默认值相差甚远。1) reducer 的数量可以在 0.95 或 1.75 乘以(节点数)*(每个节点的最大容器数)2)之间reducer 的数量最好设置为集群中的 reduce 槽数(减去一些以允许失败)。
  • 是的,它可能与默认值不同,并且差距的显着宽度清楚地表明我们目前有一种经验方法
  • 好的。除了从默认值开始之外,1) 和 2) 是不同的。我已经阅读了关于减速器数量的信息,但不清楚它们之间在调整默认值时在经验方法中应该使用哪一个。
  • 尝试 1) 中的范围。无论如何,只需调整减速器的数量并对性能进行基准测试。尝试任何数字。
猜你喜欢
  • 2016-10-25
  • 2011-07-21
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多