如何在Hadoop中设置DataNodes的个数?是由代码、配置还是环境决定决定的。同样在浏览文章时,当有人说“每个节点10-100个地图的首选数量”,那么“节点”在这里指的是NameNode或DataNode?
当谈到MapTasks的数量时,一些人说它等于splits的数量,另一个人说是块的数量,而另一些人说它是由框架决定的,可能不会给出splits或blocks的确切数量,那么哪一个是正确的呢?
发布于 2016-11-29 17:32:25
问题:如何在Hadoop中设置DataNodes的数量?
用于设置或计算DataNodes的数量。首先评估Hadoop存储 (H)
H=c_r_S/(1-i)
其中:
c =平均压缩比。这取决于使用的压缩类型(Snappy、LZOP、...)和数据的大小。如果未使用压缩,则为c=1。
r =复制因子。在生产集群中通常是3。
Hadoop S=要移动到的数据大小。这可以是历史数据和增量数据的组合。例如,增量数据可以是每天的,并且可以在一段时间内(例如3年)进行预测。
i =中间因子。它通常是1/3或1/4。Hadoop的工作空间专门用于存储Map阶段的中间结果。
示例:无压缩,即c=1,复制因子为3,中间因子为0.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作业转到数据进行处理,但反之亦然。因此,这里的" Node“是Data Node。
问题:有多少个地图?
映射的数量通常由输入的总大小驱动,即输入文件的总块数。
map的正确并行级别似乎是每个节点大约10-100个map,尽管它已经被设置为300个map,用于非常cpu-light的map任务。任务设置需要一段时间,所以最好至少花一分钟来执行映射。
如果您有10TB的输入数据和128MB的块大小,那么您最终将得到82,000个地图,除非使用Configuration.set(MRJobConfig.NUM_MAPS, int)
(它只向framework提供提示)将其设置得更高。
https://stackoverflow.com/questions/40834643
复制相似问题