【发布时间】:2015-01-22 01:13:39
【问题描述】:
在 hadoop 中,数据被分成 64mb 或 128mb 的块。假设我有一个大小为 70mb 的文件。它是否分为 64mb 和 6mb 两个块。如果是这样,那么第二个块只占用了 6mb,该块中的其他空间是浪费了还是被另一个块占用了?
【问题讨论】:
在 hadoop 中,数据被分成 64mb 或 128mb 的块。假设我有一个大小为 70mb 的文件。它是否分为 64mb 和 6mb 两个块。如果是这样,那么第二个块只占用了 6mb,该块中的其他空间是浪费了还是被另一个块占用了?
【问题讨论】:
在 hadoop 中,块大小可以由通过 dfs.blocksize 属性写入 hdfs 的应用程序来选择:
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
对于64或128mb没有限制,但当前hadoop版本默认为128mb。
不同的文件可以设置不同的块大小。
如果文件的大小小于块大小,则不会浪费空间。 但是不建议有很多小文件。关于这个问题以及如何解决的更多信息在这里:https://developer.yahoo.com/blogs/hadoop/hadoop-archive-file-compaction-hdfs-461.html
【讨论】:
不浪费任何空间。如果第二个块占用 6mb 而不是剩余的 56mb 空间,则为其他文件分配任何空间。
【讨论】: