小文件如何存储在HDFS中

Nag*_*mar 1 hadoop

在 hadoop 权威指南中:

以 128 MB 块大小存储的 1 MB 文件使用 1 MB 磁盘空间,而不是 128 MB

这是什么意思 ?它是否在 128MB 的块中使用 1MB 的大小,或者使用 1MB 并且重新分配 127MB 可以被其他文件自由占用?

Chr*_*ite 6

这通常是对 HDFS 的误解 - 块大小更多的是关于单个文件如何分割/分区,而不是关于文件系统的某些保留部分。

在这些方案的背后,每个块都作为普通文件(以及关联的校验和)存储在 DataNodes 底层文件系统上。如果您查看磁盘上的数据节点文件夹,您应该能够找到该文件(如果您知道该文件的块 ID 和数据节点分配 - 您可以从 NameNode Web UI 中找到)。

所以回到你的问题,块大小为 16MB/32MB/128MB/512MB/1G/2G(你明白了)的 1MB 文件在数据节点磁盘上仍然只是一个 1MB 文件。然后,块大小和存储在该块中的数据量之间的差异可以自由地供底层文件系统使用,因为它认为合适(通过 HDFS 或其他方式)。