MapReduce中1个任务的减速器数量

Wei*_*Shi 8 hadoop mapreduce

在典型的MapReduce设置(如Hadoop)中,1个任务使用了多少个reducer,例如,计算单词?我对Google MapReduce的理解意味着只涉及1个reducer.那是对的吗?

例如,单词count将输入分成N个块,N Map将运行,产生(word,#)列表.我的问题是,一旦Map阶段完成,是否只有一个reducer实例运行来计算结果?还是会有减速器并行运行?

dil*_*iop 13

简单的答案是减速器的数量不必是1,是的,减速器可以并行运行.如上所述,这是用户定义或派生的.

为了保持上下文,我将在这种情况下引用Hadoop,以便您了解事情是如何工作的.如果您在Hadoop(0.20.2)中使用流API,则必须明确定义要运行的减少器数量,因为默认情况下,只会启动1个reduce任务.您可以通过将reducers数传递给-D mapred.reduce.tasks=# of reducers参数来实现.Java API将尝试导出您需要的reducers数量,但同样您也可以显式设置它.在这两种情况下,每个节点可以运行的reducer数量有一个硬上限,并且在您的mapred-site.xml配置文件中使用mapred.tasktracker.reduce.tasks.maximum.

在更概念性的说明中,您可以查看hadoop wiki上的这篇文章,文章讨论了选择map和reduce任务的数量.