当我运行$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,默认大小)。
这些文件不需要每个完整的块。问题是管理它们的开销,以及-如果你有真正的许多的 namenode 利用率:
来自 Hadoop-权威指南:
小文件占用的磁盘空间不会超过存储文件的原始内容所需的空间。例如,块大小为 128 MB 的 1 MB 文件使用 1 MB 的磁盘空间,而不是 128 MB。)Hadoop Archives 或 HAR 文件是一种文件存档工具,可更有效地将文件打包到 HDFS 块中,从而减少 namenode 内存使用,同时仍允许对文件进行透明访问。
但是,一个块只包含一个文件-除非使用专门的输入格式,如 HAR,SequenceFile 或 CombineFileIputFormat。这里有一些更多的信息Small File problem info
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(16条)