如果我将 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/