我有一个单节点hadoop集群版本-2.x。我设置的块大小是64 mb。我有一个大小为84MB的hdfs输入文件。现在,当我运行mr作业时,我看到有两个有效的分割,分别是84mb/64mb~2和2个分割。
但当我运行命令“hadoopfsck-blocks”查看块的详细信息时,我看到了这个。
Total size: 90984182 B
Total dirs: 16
Total files: 7
Total symlinks: 0
Total blocks (validated): 7 (avg. block size 12997740 B)
Minimally replicated blocks: 7 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 1
Average block replication: 1.0
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 1
Number of racks: 1
如您所见,平均块大小接近13MB。为什么会这样?理想情况下,块大小应该是64 mb?
2条答案
按热度按时间tktrz96b1#
最大的块大小是64mb,但是如果你的平均块大小等于最大的块大小,那就太幸运了。
考虑一下你提到的一个文件:
1个文件,84 mb
84mb/64mb=2块
84mb/2块=平均42 mb/块
你一定有其他文件使平均值下降得更多。
除了namenode对块的内存需求以及如果块大小太大(显然不是单节点集群的问题)可能会丢失并行性之外,平均块大小小于最大值不会有太多问题。
最大块大小为64mb并不意味着每个块都占用磁盘上的64mb。
rdlzhqv92#
配置块大小时,可以设置块的最大大小。您的文件不太可能是块大小的精确倍数,因此许多块将小于配置的块大小。