HBase FileInfo块

时间:2017-07-21 07:28:27

标签: hbase hfile

在所有HBase文章和书籍中,它提到了有关HFiles中的Meta和FileInfo块的以下内容: -

" Meta块用于保存大量数据及其键作为String,而FileInfo是一个简单的Map,首选小信息,其键和值都是字节数组。 " 要么 "元数据块很昂贵。使用一堆序列化数据填充一个,而不是每个元数据实例执行元数据块。如果元数据很小,请考虑添加到文件信息"

我想明白为什么会这么说。什么是设计逻辑,因为大数据应保存在Meta中,而FileInfo中的数据较小。

我想知道的原因是我们在项目的FileInfo中存储了一些信息。但是,随着时间的推移,我们存储的信息开始增长,我们现在在FileInfo中拥有高达15-20MB的数据。从上面的文字看来,我们不应该这样做。但我们甚至不知道它对我们的系统造成了什么影响(如果有的话)。

有人可以对此有所了解。我查看了HFileFileInfo代码,但无法找到任何明显的原因。

1 个答案:

答案 0 :(得分:0)

毕竟,这似乎是一个愚蠢的问题,但其原因是FileInfo块被称为“load-on-open”,正如其名称所示,它被加载到文件打开中。因此,如果你在FileInfo中有大量数据,那么即使你不需要它,它仍会被加载到内存中。另一方面,可以按需加载元块。因此,如果你有大量数据,你应该考虑把它放在Meta而不是FileInfo中。