hdfs中的文件数与块数

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

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

  1. Status: HEALTHY
  2. Total size: 998562090 B
  3. Total dirs: 1
  4. Total files: 50 (Files currently being written: 1)
  5. Total blocks (validated): 36 (avg. block size 27737835 B) (Total open file blocks (not validated): 1)
  6. Minimally replicated blocks: 36 (100.0 %)
  7. Over-replicated blocks: 0 (0.0 %)
  8. Under-replicated blocks: 36 (100.0 %)
  9. Mis-replicated blocks: 0 (0.0 %)
  10. Default replication factor: 2
  11. Average block replication: 1.0
  12. Corrupt blocks: 0
  13. Missing replicas: 72 (200.0 %)
  14. Number of data-nodes: 1
  15. 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。下面是一些小文件问题的更多信息

相关问题