如何设置Hadoop中的DataNodes数量?是通过代码,配置还是环境决定的。
同样在浏览文章时,当有人说“每个节点10-100张 map 的首选 map 数”时,这里的“节点”是指NameNode还是DataNode?
当谈到MapTasks的数量时,有人说它等于拆分的数量,有人说它等于块的数量,而其他人则说它是由框架确定的,可能没有给出确切的拆分或块的数量,因此对吗?
最佳答案
问题:如何设置Hadoop中的DataNodes数量?
用于设置或计算数据节点的数量。首先估算 Hadoop存储( H ):
H = crS /(1-i)
哪里:
c =平均压缩率。它取决于使用的压缩类型(Snappy,LZOP等)和数据大小。不使用压缩时,c = 1。
r =复制因子。在生产集群中通常为3。
S =要移动到Hadoop的数据大小。这可以是历史数据和增量数据的组合。例如,增量数据可以是每日数据,并且可以预测一段时间(例如3年)。
i =中间因素。通常为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 = crS /(1-i)* d
哪里:
d =每个节点可用的磁盘空间。
问题:“每节点10-100张 map 的首选 map 数量”,因此这里的“节点”是指NameNode还是DataNode?
如您所知,MapReduce作业转到数据进行处理,但反之亦然。因此,这里的“节点”是数据节点。
问题:多少张 map ?
如果您拥有10TB的输入数据和128MB的块大小,则最终将获得82,000张 map ,除非使用
Configuration.set(MRJobConfig.NUM_MAPS, int)
(仅向framework提供提示)将其设置得更高。关于hadoop - Hadoop中的DataNode和MapTasks数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40834643/