我正在监控hbase(0.94.18)数据存储,发现存储库大小和刷新的存储数据大小不一样。
当memstore数据大小增加到 128 Mb 时,它会刷新到HFile。但是磁盘上的存储文件大小差异 36.8 Mb 。压缩已关闭。它重复每次冲洗。
为什么会这样?我错过了什么吗?
我使用HbaseAdmin +“hadoop fs -du”监视一些java util的hbase。
表格描述:
DATA_BLOCK_ENCODING => 'NONE',ENCODE_ON_DISK => '真正的'
Hbase日志:
{{1}}
答案 0 :(得分:0)
MemStore在ConcurrentSkipListMap结构中存储KeyValues(KV),在64位JVM上每个KV的开销为124字节。如果您的put有很小的有效负载,例如一个具有几个字节值的列,那么您将观察到KV堆大小与它们在磁盘上的大小之间存在很大差异。当KV持久存储在磁盘上时,ConcurrentSkipListMap,对象和引用的开销显然不存在。这意味着如果你写了很多小的看跌期权,你的memstore刷新会运行得更快,但会在磁盘上产生比预期更小的HFile。您可能需要相应地调整HBase压缩设置,例如通过增加HFiles的最大数量。