2017-07-21 29 views
0

在所有的HBase的文章和书籍也提到了以下有关HFiles的元和的FileInfo块: -HBase的FileInfo的阻止

“元块的设计,保持了大量的数据,其作为一个String键,而FileInfo是一个简单的Map首选,用于输入字节数组的键和值的小信息。“ 或 ”元数据块很昂贵,用一堆序列化数据填充一个元素,而不是为每个元数据实例创建一个元数据块。如果元数据很小,请考虑添加到文件信息“

我想明白它为什么这么说。什么是设计逻辑,因为大数据应该保留在Meta中,而在FileInfo中很小。

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

有人可以请说明这一点。我查看了HFileFileInfo的代码,找不到任何明显的原因。

回答

0

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