Hadoop中的DataNode和MapTasks数量

时间:2016-11-27 22:26:08

标签: hadoop mappers

如何在Hadoop中设置DataNode的数量?是通过代码,配置还是环境决策。 当有人说“每个节点大约10-100个地图的地图的首选数量”时,在浏览文章期间,所以“节点”在这里意味着NameNode或DataNode?

当谈到MapTasks的数量时,有人说它等于分割数量,另一个说是块的数量,而另一些人说它是由框架确定的,可能不会给出确切数量的分割或块,那么哪个是正确的呢?

1 个答案:

答案 0 :(得分:1)

问题:如何在Hadoop中设置DataNode的数量?

用于设置或计算DataNode的数量。首先估算 Hadoop存储 H

H =ç - [R S /(1-i)的

其中:

c =平均压缩比。它取决于使用的压缩类型(Snappy,LZOP,...)和数据大小。如果不使用压缩,则c = 1.

r =复制因子。在生产集群中通常为3。

S =要移至Hadoop的数据大小。这可以是历史数据和增量数据的组合。增量数据可以是每天例如并且在一段时间内预测(例如3年)。

=中间因素。通常是1/3或1/4。 Hadoop的工作空间专门用于存储Map阶段的中间结果。

示例:没有压缩,即c = 1,复制因子为3,中间因子为.25 = 1/4

H= 1*3*S/(1-1/4)=3*S/(3/4)=4*S

根据上述假设,Hadoop存储估计是初始数据大小的4倍。

现在估算 数据节点数 (n)的公式:

n = H / d = c r S /(1-i)* d

其中:

d =每个节点可用的磁盘空间。

问题:“每个节点大约10-100个地图的首选地图数量”所以“节点”在这里表示NameNode或DataNode?

如您所知,MapReduce作业会转到处理数据,反之亦然。所以这里“节点”是数据节点。

问题:有多少地图?

  

地图数量通常由输入的总大小驱动,   也就是输入文件的总块数。

     

地图的正确并行度似乎约为10-100张地图   每个节点,虽然它已被设置为300个非常cpu-light的地图   地图任务。任务设置需要一段时间,因此最好是地图采用   至少要执行一分钟。

如果您拥有10TB的输入数据和128MB的块大小,那么最终会得到82,000个地图,除非使用Configuration.set(MRJobConfig.NUM_MAPS, int)(仅提供framework的提示)来设置它甚至更高。