为什么hbase memstore大小和刷新数据大小不相等?

为什么hbase memstore大小和刷新数据大小不相等?,hbase,flush,Hbase,Flush,我在监视hbase(0.94.18)数据存储时发现memstore大小和刷新存储数据的大小不一样 当memstore数据大小增长到128 Mb时,它将刷新为HFile。但磁盘上的存储文件大小差异为36.8MB。压缩已关闭。每次冲洗都会重复 为什么会发生这种情况?我错过什么了吗? 我使用HbaseAdmin+“hadoop fs-du”使用一些java util监视hbase 表说明: 数据块编码=>'NONE',磁盘编码=>'true' Hbase日志: 2015-05-14 13:48:06,

我在监视hbase(0.94.18)数据存储时发现memstore大小和刷新存储数据的大小不一样

当memstore数据大小增长到128 Mb时,它将刷新为HFile。但磁盘上的存储文件大小差异为36.8MB。压缩已关闭。每次冲洗都会重复

为什么会发生这种情况?我错过什么了吗?

我使用HbaseAdmin+“hadoop fs-du”使用一些java util监视hbase

表说明:

数据块编码=>'NONE',磁盘编码=>'true'

Hbase日志:

2015-05-14 13:48:06,192 INFO  regionserver.StoreFile (StoreFile.java:close(1334)) - NO General Bloom and NO DeleteFamily was added to HFile (hdfs://localhost:8020/hbase/sometable/8854a960778fe379d454a79e27b653a1/.tmp/dea0e9ac00be44a1a3acba3b900bdf54)
2015-05-14 13:48:06,192 INFO  regionserver.Store (Store.java:internalFlushCache(921)) - Flushed , sequenceid=4460077, memsize=128.0m, into tmp file hdfs://localhost:8020/hbase/sometable/8854a960778fe379d454a79e27b653a1/.tmp/dea0e9ac00be44a1a3acba3b900bdf54
2015-05-14 13:48:06,232 INFO  regionserver.Store (Store.java:commitFile(968)) - Added hdfs://localhost:8020/hbase/sometable/8854a960778fe379d454a79e27b653a1/r/dea0e9ac00be44a1a3acba3b900bdf54, entries=742515, sequenceid=4460077, filesize=36.8m
2015-05-14 13:48:06,233 INFO  regionserver.HRegion (HRegion.java:internalFlushcache(1776)) - Finished memstore flush of ~128.0m/134226872, currentsize=428.4k/438664 for region sometable,,1431608601110.8854a960778fe379d454a79e27b653a1. in 3043ms, sequenceid=4460077, compaction requested=false
MemStore以ConcurrentSkipListMap结构存储键值(KV),在64位JVM上每KV的开销为124字节。如果PUT的有效负载很小,例如一列有几个字节的值,那么您将观察到KV堆大小和它们在磁盘上的大小之间有很大的差异。当KVs在磁盘上持久化时,ConcurrentSkipListMap、对象和引用的开销显然不存在。这意味着,如果您正在编写大量的小型PUT,memstore刷新将运行得更快,但会在磁盘上生成比预期更小的HFiles。您可能需要相应地调整HBase压缩设置,例如通过增加HFiles的最大数量