如何选择群集中的地图和减少工作人员?

时间:2012-10-15 18:24:15

标签: mapreduce

对于mapreduce作业,我们需要指定输入数据的分区(映射进程的数量 - M)和减少进程的数量(R)。在MapReduce papers中他们经常设置的例子:拥有2 000名工人的集群,M = 200 000,R = 5 000.工人被标记为map-worker或reduce-worker。我想知道如何选择集群中的这些工人。

这样做是为了选择固定数量的地图工作者和固定数量的减少工人吗? (然后存储在reduce-workers节点中的数据必须发送到map-reduce worker) 或者映射阶段在集群中的每个节点上运行,然后选择任何节点数作为reduce-workers? 或者是以另一种方式完成的?

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

Map-Worker(Mapper)的数量取决于输入文件的输入分割数。

所以 Ex:200输入分割(它们是合乎逻辑的)= 200 Mapper

如何选择Mapper节点?
Mapper是本地数据节点,如果不可能,则将数据传输到空闲节点,并在该节点上调用Mapper

Reducer的数量可以由用户设置( Job.setNumberOfReducer(Number)),否则它也将按照Mapper的Intermediate-output的分割数量。



其他问题的答案

Q1>so in one node can run for example 10 mappers in parallel at one time, or these mappers are processed sequentially?

Ans:顺序(最大(活动/运行)映射器数量=数据节点数量)

Q2>how are chosen the nodes where are reducers invoked?
答:

  • 中间键值存储在本地文件系统中不在HDFS中,然后将其复制(HDFS)到Reducer节点。
  • 单个Mapper会将数据提供给多个reducer。所以数据的位置是不可能的因为特定的减速器的数据来自许多节点,如果不是全部的话。

因此,在节点的带宽上选择(或至少应该)减速器,记住所有以上几点

 Q3>if we need reducers count bigger then overall nodes count (for example 90 reducers in 50 nodes cluster), are the reducers on one node processed in parallel or sequentially?

Ans:顺序(最大(活动/运行)减速器数=数据节点数)