HDFS中的最佳块大小 - 大块大小会受到影响

Pra*_*rma 6 hadoop hdfs

我理解HDFS中小文件和小块大小的缺点.我试图理解默认的64/128 MB块大小背后的基本原理.是否存在大块大小(例如2GB)的任何缺点.我读到比这更大的值导致问题,我尚未挖掘的细节).

我看到的块大小太大的问题(请纠正我,可能是部分或全部这些问题并不存在) -

  1. 可能在数据节点出现故障时复制1 Gig文件可能会出现问题 - 这需要群集传输整个文件.当我们考虑单个文件时,这似乎是一个问题 - 但如果我们有更小的块大小说128 MB(我认为涉及更多的开销),我们可能不得不转移很多较小的文件

  2. 可能麻烦mappers.大块可能最终会与每个映射器结束,从而减少可能的映射器数量.但如果我们使用较小的分割尺寸,这应该不是问题?

  3. 当我发现这可能是一个问题时,这听起来很愚蠢但是我想我会把它扔进去 - 因为namenode事先不知道文件的大小,所以它可能会考虑数据节点而不是可用,因为它没有足够的磁盘空间用于新块(考虑到大块大小可能是1-2 Gigs).但可能只是通过减少特定块的块大小来巧妙地解决这个问题(这可能是一个糟糕的解决方案).

块大小可能取决于用例.我基本上想找到问题的答案 - 是否存在大块大小设置可能会造成伤害的情况/用例?

任何帮助表示赞赏.提前致谢.

jav*_*dba 2

我对 hadoop 上的高端集群进行了广泛的性能验证,并且我们将块大小从 64 Meg 更改为 2GB。回答这个问题:想象一下通常需要处理小文件(例如 10 个兆字节)的工作负载。在这种情况下,您认为哪种块大小性能更好 - 64MEg 还是 1024Meg?

对于大文件的情况,是的,大块大小往往会带来更好的性能,因为映射器的开销不可忽略。