我的文件大小为10mb,我将其存储在hadoop中,但hdfs中的默认块大小为64MB。因此,我的文件使用64MB中的10MB。hdfs将如何利用同一块中剩余的54MB可用空间?
lnlaulya1#
剩下的54mb将用于其他文件。这就是它的工作原理,假设你做了一个put或copyfromlocal,包含两个小文件,每个文件大小为20mb,块大小为64mb。现在hdfs计算文件系统(不可用的块)中的可用空间(假设之前您在64mb块中保存了一个10mb的文件,它也包括剩余的54mb),并根据块给出一个报告。因为您有2个文件,复制因子为3,所以即使您的文件大小小于块大小,也会为您的文件分配总共6个块。如果集群没有6个块(6*64mb),那么put进程将失败。因为报表是按空间而不是按块获取的,所以永远不会用完块。文件以块为单位度量的唯一时间是在块分配时。阅读此博客了解更多信息。
2mbi3lxu2#
从逻辑上讲,如果文件小于块大小,那么hdfs会将特定文件的块大小减小到文件大小。因此,hdfs将只使用10mb存储10mb的小文件,不会浪费54mb或将其留空。HDF中的小文件详细描述如下:http://blog.cloudera.com/blog/2009/02/the-small-files-problem/
2条答案
按热度按时间lnlaulya1#
剩下的54mb将用于其他文件。这就是它的工作原理,假设你做了一个put或copyfromlocal,包含两个小文件,每个文件大小为20mb,块大小为64mb。现在hdfs计算文件系统(不可用的块)中的可用空间(假设之前您在64mb块中保存了一个10mb的文件,它也包括剩余的54mb),并根据块给出一个报告。因为您有2个文件,复制因子为3,所以即使您的文件大小小于块大小,也会为您的文件分配总共6个块。如果集群没有6个块(6*64mb),那么put进程将失败。因为报表是按空间而不是按块获取的,所以永远不会用完块。文件以块为单位度量的唯一时间是在块分配时。
阅读此博客了解更多信息。
2mbi3lxu2#
从逻辑上讲,如果文件小于块大小,那么hdfs会将特定文件的块大小减小到文件大小。因此,hdfs将只使用10mb存储10mb的小文件,不会浪费54mb或将其留空。
HDF中的小文件详细描述如下:http://blog.cloudera.com/blog/2009/02/the-small-files-problem/