hdfs中的文件数与块数

ht4b089n  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(469)

我运行的是单节点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,默认大小)。我的理解有什么问题?

djp7away

djp7away1#

每个文件不需要完整的块。需要考虑的是管理它们的开销以及(如果确实有很多)namenode利用率:
来自hadoop-权威指南:
小文件占用的磁盘空间不会超过存储文件原始内容所需的空间。例如,块大小为128 mb的1 mb文件使用1 mb的磁盘空间,而不是128 mb。)hadoop archives(har文件)是一种文件归档工具,它可以更有效地将文件打包到hdfs块中,从而减少namenode内存的使用,同时仍然允许对文件进行透明访问。
但是,一个块只包含一个文件,除非使用特殊的输入格式,如har、sequencefile或combinefleiputformat。下面是一些小文件问题的更多信息

相关问题