如果我将 reduce task 的数量设置为100之类的值,并且在运行作业时,假设 reduce task 的数量超过了(据我了解, reduce task 的数量取决于我们从映射器获得的键值。将(1,abc)(2,bcd)设置为mapper中的键值,reduce任务的数量将为2)MapReduce将如何处理它?

最佳答案



您的理解似乎是错误的。 reduce task 的数量不取决于我们从映射器获得的键值。
在MapReduce作业中,可基于每个作业配置reducer的数量,并在驱动程序类中进行设置。

例如,如果我们需要2个reducer进行工作,则需要在MapReduce作业的驱动程序类中对其进行设置,如下所示:

job.setNumReduceTasks(2);



因此,我们必须确定工作所需的 reducer 数量。对于您的示例,如果您的中间Mapper输入为(1,abc)和(2,bcd),并且未在驱动程序类中设置reducer的数量,则Mapreduce默认情况下仅运行1个reducer和两个键值对将由单个Reducer处理,您将在指定的输出目录中获得单个输出文件。

关于hadoop - MapReduce中的mapper和reducer任务数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32636357/

10-16 03:02