【发布时间】:2017-12-11 13:25:55
【问题描述】:
这是参考问题:Small files and HDFS blocks 答案引用 Hadoop:权威指南:
与单个磁盘的文件系统不同,HDFS 中小于单个块的文件不会占用整个块的底层存储空间。
我完全同意这一点,因为根据我的理解,块只是 namenode 映射哪个文件在整个集群中的位置的一种方式。由于 HDFS 是对我们常规文件系统的抽象,因此如果块大小为 128MB,则 140 MB 不会占用 HDFS 上 256 MB 的空间,或者换句话说,块中的剩余空间不会被浪费。
但是,我在Hadoop Block size and file size issue 中偶然发现了另一个答案:
可用的块数量有限,具体取决于 HDFS 的容量。您正在浪费块,因为在使用所有实际存储容量之前您将用完它们。
这是否意味着如果我有 1280 MB 的 HDFS 存储并且我尝试加载 11 个大小为 1 MB 的文件(考虑到 128 MB 块大小和每个块 1 个复制因子),HDFS 会抛出有关存储的错误?
如果我在整个过程中假设有任何错误,请更正。谢谢!
【问题讨论】:
-
你的理解是正确的。磁盘上使用的是 Linux 存储格式,因此 10 KB 的文件不会占用 256MB 的磁盘空间。正在创建 HDFS 块来管理未管理到磁盘空间的数据量和集群资源。