【发布时间】:2014-01-22 22:26:13
【问题描述】:
我了解 HDFS 中小文件和小块大小的缺点。我试图了解默认 64/128 MB 块大小背后的基本原理。大块大小(比如 2GB)是否有任何缺点。我读到比这更大的值会导致问题,我还没有深入研究这些问题的细节)。
我看到的块大小过大的问题(请纠正我,可能部分或全部这些问题并不真正存在)-
当数据节点出现故障时,复制 1 Gig 文件可能会出现问题 - 这需要集群传输整个文件。当我们考虑单个文件时,这似乎是一个问题 - 但如果我们有较小的块大小(例如 128 MB)(我认为这涉及更多开销),我们可能必须传输很多更小的文件(我认为这会带来更多开销)
可能会给映射器带来麻烦。大块可能最终与每个映射器一起,从而减少了映射器的可能数量。但是,如果我们使用较小的分割尺寸,这应该不是问题吗?
当我想到这可能是一个问题时,这听起来很愚蠢,但我想无论如何我都会把它扔掉 - 因为 namenode 事先不知道文件的大小,所以它是可能的考虑数据节点不可用,因为它没有足够的磁盘空间来存储新块(考虑到可能是 1-2 Gigs 的大块大小)。但也许它只是通过减少特定块的块大小来巧妙地解决这个问题(这可能是一个糟糕的解决方案)。
块大小可能取决于用例。我基本上想找到问题的答案 - 是否存在大块大小设置可能造成伤害的情况/用例?
感谢任何帮助。提前致谢。
【问题讨论】:
-
我猜这可能是与客户端之间传输文件的问题。我想大块的失败可能会代价高昂。