hadoopmapreduce:关于reducer数量的说明

fcipmucu  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(447)

在mapreduce框架中,Map器生成的每个键都使用一个reducer。
因此,您可能认为在hadoopmapreduce中指定reducer的数量没有任何意义,因为它依赖于程序。但是,hadoop允许您指定要使用的缩减器的数量(-d mapred.reduce.tasks=#of reducers)。
这是什么意思?减速器数量的参数值是否指定有多少机器资源流向减速器,而不是实际使用的减速器数量?

i2byvkas

i2byvkas1#

Map器生成的每个键都使用一个缩减器
这个评论是不正确的。对由分组比较器分组的每个键执行一次reduce()方法调用。reducer(task)是一个处理零个或多个reduce()调用的进程。您所指的属性是关于reducer任务的数量。

gstyhher

gstyhher2#

为了简化@judge mental的回答(非常准确):一个reducer任务一次可以处理多个键,但是mapred.reduce.tasks=#参数声明了一个特定作业将同时运行多少个reducer任务。
mapred.reduce.tasks=10的示例:
您有2000个键,每个键有50个值(对于均匀分布的10000 k:v对)。每个减速机应大致处理200个键(1000 k:v对)。
例如,如果mapred.reduce.tasks=20:
您有2000个键,每个键有50个值(对于均匀分布的10000 k:v对)。每个减速器应大致处理100个键(500 k:v对)。
在上面的例子中,每个减速机使用的键越少,整个工作就越快。。。当然,只要集群中有可用的reducer资源。

相关问题