在所有的hbase文章和书籍中,它提到了以下关于hfiles:-
元块被设计成用它的键作为字符串来保存大量的数据,而fileinfo是一个简单的Map,对于键和值都是字节数组的小信息来说是首选的或者“元数据块很昂贵。用一堆序列化数据填充一个,而不是为每个元数据示例填充一个元数据块。如果元数据很小,请考虑添加到“文件信息”
我想知道为什么会这样。设计逻辑是什么,因为大数据应该保存在meta中,而小数据应该保存在meta中 FileInfo
.
我想知道的原因是我们在项目的fileinfo中存储了一些信息。然而,随着时间的推移,我们存储的信息开始增长,我们现在在fileinfo中有高达15-20mb的数据。从上面的文字看来,我们不应该这样做。但我们甚至不知道它对我们的系统造成了什么样的影响。
有人能解释一下吗。我已经看过了 HFile
以及 FileInfo
但找不到任何明显的原因。
1条答案
按热度按时间z31licg01#
看起来这毕竟是一个愚蠢的问题,但原因是fileinfo块就是所谓的“loadonopen”,顾名思义,就是在fileopen中加载的。因此,如果您在fileinfo中有一个大数据,那么即使您不需要它,它仍然会被加载到内存中。另一方面,元块可以按需加载。因此,如果您有大量数据,最好考虑将其放在meta而不是fileinfo中。