Configuration 为什么Hadoop中正确的reduces数是0.95或1.75?

Configuration 为什么Hadoop中正确的reduces数是0.95或1.75?,configuration,hadoop,mapreduce,Configuration,Hadoop,Mapreduce,hadoop文档说明: 正确的减少数似乎是0.95或1.75乘以 (*mapred.tasktracker.reduce.tasks.max) 使用0.95,所有减速器都可以立即启动 在贴图完成时传输贴图输出。以1.75的速度更快 节点将完成第一轮reduce并启动第二轮reduce wave of reduces在负载平衡方面做得更好 这些值是非常恒定的吗?当您在这些数字之间或之外选择一个值时,结果是什么 这些值应该是您的情况所需要的值。:) 以下是我对价值观益处的理解: .95是为了最大限度

hadoop文档说明:

正确的减少数似乎是0.95或1.75乘以 (*mapred.tasktracker.reduce.tasks.max)

使用0.95,所有减速器都可以立即启动 在贴图完成时传输贴图输出。以1.75的速度更快 节点将完成第一轮reduce并启动第二轮reduce wave of reduces在负载平衡方面做得更好


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

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

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

.95是为了最大限度地利用可用的减速器。若Hadoop默认为一个reducer,那个么reduce将并没有分布,这将导致reduce花费的时间比它应该花费的时间更长。在我有限的情况下,减速机的增加和时间的减少是近似线性的。如果使用1个减速器需要16分钟,则使用8个减速器需要2分钟

1.75是一个试图优化节点中机器性能差异的值。它将创建多个单道减速器,以便速度较快的机器将采用额外的减速器,而速度较慢的机器则不会。

这个数字(1.75)比0.95的值更需要根据您的硬件进行调整。如果你有一台速度快的机器和三台速度慢的机器,也许你只需要1.10。这个数字需要更多的实验才能找到适合您的硬件配置的值。如果减速机的数量太多,速度慢的机器将再次成为瓶颈。

除了Nija上面所说的,还有一点个人经验:


0.95是有意义的,因为您正在利用集群的最大容量,但与此同时,您正在考虑一些空任务槽,以便在某些还原程序失败时发生什么。如果使用的reduce任务插槽数为1x,则失败的reduce必须等待至少一个reducer完成。如果您使用了0.85或0.75个reduce任务槽,那么您没有尽可能多地利用集群

我们可以说这些数字不再有效。现在根据《Hadoop:权威指南》一书,我们的目标是reducer应在5分钟内完成处理

书中的片段:

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