2014-07-20 92 views
0

我有一个节点Hadoop群集版本 - 2.x.我设置的块大小为64 MB。我有一个大小为84 MB的HDFS输入文件。现在,当我运行MR作业时,我看到有2个分割是有效的,分别为84 MB/64 MB〜2和2个分割。单个节点群集中的Hadoop块大小需要明确

但是当我运行命令“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

[No.文件与HDFS中块的数量](http://stackoverflow.com/questions/21275082/no-of-files-vs-no-of-blocks-in-hdfs) – emeth

回答

0

当您配置块大小时,您可以设置块的最大大小。您的文件几乎不可能是块大小的精确倍数,因此很多块将小于配置的块大小。

1

您指定的最大数据块大小为64MB,但您必须非常幸运才能使您的平均数据块等于最大数据块大小。

考虑一个文件,你所提到的:
1文件,84 MB
84MB/64MB = 2块
84MB/2块=平均

42 MB /块,必须有一些其他的文件将平均下来更多。

除了块的名称节点上的内存要求以及可能的并行性损失(如果块大小过高)(在单节点集群中显然不是问题),没有太多的问题平均块大小小于最大值。

拥有64MB的最大块大小并不意味着每个块在磁盘上占用64MB。