【发布时间】:2016-12-15 22:36:04
【问题描述】:
在 Hadoop 中,如果我们没有设置 reducer 的数量,那么会创建多少个 reducer?
映射器的数量取决于(总数据大小)/(输入拆分大小), 例如。如果数据大小为 1 TB,输入拆分大小为 100 MB。那么映射器的数量将是(1000*1000)/100 = 10000(一万)。
reducer 的数量取决于哪些因素?为一个作业创建了多少个 reducer?
【问题讨论】:
-
reducer 的数量默认为 1,除非您使用
job.setNumReduceTasks(n);将其设置为对您的应用程序有意义的任何自定义数字。我建议跳过现有的“经验法则”。 -
@vefthym 还是真的吗?我忘了指定任何数字,并且有 56Gb 的数据,它被分成 7 个文件,每个文件 8Gb。如果 1 个 reducer 的数据过多,是否会自动回退?
-
@Thomas 你指的是输出文件的数量,还是输入分割的数量?默认值 1 用于输出文件(减少任务)。我相信它仍然是真的。如果您没有以编程方式设置它,您也可以将其设置为运行时参数。
-
@vefthym 换一种说法:我没有以编程方式/在参数中设置任何数字。而且我不明白为什么我有 7 个每个 8Gb 的文件。为什么不是 19Gb 的 3 个文件或 4Gb 的 14 个文件或...?
-
@Thomas 没有关于您运行的代码的信息,我不能多说。如果您愿意,请添加一个新问题并在此处发布链接。具有与输入大小相同的输出大小(通常)并非如此。请在问题中说明您要做什么。