如何在hadoop中设置数据节点的数量?它是由代码、配置或环境决定的。同样在浏览文章时,有人说“每个节点的首选Map数大约为10-100个”,那么“node”在这里是指namenode还是datanode?当谈到maptasks的数量时,有人说它等于分裂的数量,有人说它等于块的数量,而有人说它是由框架决定的,可能没有给出分裂或块的确切数量,那么哪个是正确的呢?
gv8xihay1#
问:如何在hadoop中设置数据节点的数量?用于设置或计算数据节点数。首先估计hadoop存储(h):
哪里: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)的公式为:
哪里:d=每个节点的可用磁盘空间。问题:“首选的Map数大约为每个节点10-100个Map”所以这里的“节点”是指namenode还是datanode?如您所知,mapreduce作业将转到数据进行处理,但反之亦然。所以这里的“节点”是数据节点。问:有多少张Map?Map的数量通常由输入的总大小驱动,即输入文件的总块数。Map的正确并行级别似乎是每个节点10-100个Map,尽管已经为每个cpu的光照Map任务设置了300个Map。任务设置需要一段时间,因此最好至少花一分钟执行Map。如果你有10tb的输入数据和128mb的块大小,你最终会得到82000张Map,除非 Configuration.set(MRJobConfig.NUM_MAPS, int) (它只向框架提供一个提示)用于将其设置得更高。
Configuration.set(MRJobConfig.NUM_MAPS, int)
1条答案
按热度按时间gv8xihay1#
问:如何在hadoop中设置数据节点的数量?
用于设置或计算数据节点数。首先估计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
根据上述假设,hadoop存储的大小估计是初始数据大小的4倍。
现在,估算数据节点数(n)的公式为:
n=h/d=crs/(1-i)*d
哪里:
d=每个节点的可用磁盘空间。
问题:“首选的Map数大约为每个节点10-100个Map”所以这里的“节点”是指namenode还是datanode?
如您所知,mapreduce作业将转到数据进行处理,但反之亦然。所以这里的“节点”是数据节点。
问:有多少张Map?
Map的数量通常由输入的总大小驱动,即输入文件的总块数。
Map的正确并行级别似乎是每个节点10-100个Map,尽管已经为每个cpu的光照Map任务设置了300个Map。任务设置需要一段时间,因此最好至少花一分钟执行Map。
如果你有10tb的输入数据和128mb的块大小,你最终会得到82000张Map,除非
Configuration.set(MRJobConfig.NUM_MAPS, int)
(它只向框架提供一个提示)用于将其设置得更高。