0

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

“元数据块的设计目的是保存大量数据,其键为字符串,而 FileInfo 是一个简单的映射,首选用于键和值都是字节数组的小信息。”或“元数据块很昂贵。填充一个有一堆序列化数据,而不是为每个元数据实例做一个元数据块。如果元数据很小,请考虑添加到文件信息“

我想了解它为什么这么说。什么是设计逻辑,因为大数据应该保存在 Meta 中,而小数据应该保存在FileInfo.

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

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

4

1 回答 1

0

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

于 2017-08-09T06:58:07.170 回答