我理解hdfs中小文件和小块大小的缺点。我试图理解默认64/128MB块大小背后的基本原理。大数据块(比如2gb)有什么缺点吗。我了解到,比这更大的价值观会导致问题,具体细节我还没有深入研究)。
我看到的块大小过大的问题(请更正,可能部分或所有这些问题都不存在)-
可能在数据节点关闭时复制1G文件会出现问题,这需要集群传输整个文件。这似乎是一个问题,当我们考虑一个单一的文件-但我们可能要传输很多较小的文件,如果我们有较小的块大小说128 mb(我认为这涉及更多的开销)
可能会给Map绘制者带来麻烦。大的块可能最终与每个Map器一起使用,从而减少可能的Map器数量。但如果我们使用较小的拆分大小,这应该不是一个问题?
当我想到这可能是一个问题时,这听起来很愚蠢,但我想无论如何我都会把它扔进去——因为namenode事先不知道文件的大小,它可能认为数据节点不可用,因为它没有足够的磁盘空间来容纳新的块(考虑到大的块大小可能是1-2 gigs)。但它可能通过减少特定块的块大小来聪明地解决这个问题(这可能是一个糟糕的解决方案)。
块大小可能取决于用例。我基本上想找到一个问题的答案-是否有一种情况/用例会影响大块大小的设置?
感谢您的帮助。提前谢谢。
1条答案
按热度按时间ltqd579y1#
我在hadoop上对高端集群进行了广泛的性能验证,我们将块大小从64兆到2gb不等。回答这个问题:想象一下工作负载中通常需要处理较小的文件,比如10个meg。在这种情况下,您认为哪种块尺寸更具性能-64meg或1024meg?
对于大文件的情况,那么是的,大的块大小趋向于更好的性能,因为Map器的开销是不可忽略的。