我有一个Node Hadoop集群版本 - 2.x.我设置的块大小是64 MB。我有一个大小为84 MB的HDFS输入文件。现在,当我运行MR作业时,我看到有2个分割有效为84 MB / 64 MB~2,因此有2个分割。
但是当我运行命令" hadoop fsck -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
如您所见,平均块大小接近13 MB。为什么是这样?理想情况下,块大小应该是64 MB rite?
答案 0 :(得分:1)
您指定的最大块大小为64MB,但您必须非常幸运,您的平均块边数等于最大块大小。
考虑你提到的一个文件:
1个文件,84 MB
84MB / 64MB = 2块
84MB / 2块=平均42 MB /块
你必须有一些其他文件才能使平均值下降更多。
除了块名称节点上的内存要求以及块大小过高时可能会失去并行性(显然单个节点集群中不存在问题),不会出现太多问题平均块大小小于最大值
最大块大小为64MB并不意味着每个块在磁盘上占用64MB。
答案 1 :(得分:0)
配置块大小时,可以设置块的最大大小。您的文件极不可能是块大小的精确倍数,因此很多块将小于配置的块大小。