文件数Vs HDFS中的块数

时间:2014-01-22 05:40:40

标签: hadoop hdfs

我正在运行单节点hadoop环境。当我跑$hadoop fsck /user/root/mydatadir -block时,我真的对它给出的输出感到困惑:


Status: HEALTHY
 Total size:    998562090 B
 Total dirs:    1
 Total files:   50 (Files currently being written: 1)
 Total blocks (validated):      36 (avg. block size 27737835 B) (Total open file                                                         blocks (not validated): 1)
 Minimally replicated blocks:   36 (100.0 %)
 Over-replicated blocks:        0 (0.0 %)
 Under-replicated blocks:       36 (100.0 %)
 Mis-replicated blocks:         0 (0.0 %)
 Default replication factor:    2
 Average block replication:     1.0
 Corrupt blocks:                0
 Missing replicas:              72 (200.0 %)
 Number of data-nodes:          1
 Number of racks:               1

它说我写了 50个文件,但它只使用 36个块(我只是忽略当前正在编写的文件)。

根据我的理解,每个文件使用至少1个块,即使它的大小小于HDFS块大小(对我来说它是64MB,默认大小)。但是,我希望50个文件有50个块。我的理解有什么问题?

1 个答案:

答案 0 :(得分:1)

这些文件不需要每个完整的块。关注的是管理它们的开销以及 - 如果你真的许多它们 - namenode利用率:

来自Hadoop - 权威指南:

  

小文件不占用超出需要的磁盘空间   存储文件的原始内容。例如,存储1 MB文件   块大小为128 MB时使用1 MB磁盘空间,而不是128 MB。)   Hadoop Archives或HAR文件是一个文件归档工具   将文件更有效地打包到HDFS块中,从而减少   namenode内存使用情况,同时仍然允许透明访问   文件。

但是,单个块只包含一个文件 - 除非使用专门的输入格式,如HAR,SequenceFile或CombineFileIputFormat。以下是一些更多信息Small File problem info