大数据存储内存写缓冲
MemStore 是什么?
写入先进内存并记 WAL,写满再刷成磁盘文件
类比:先在草稿纸上记,攒够一页再誊到正式本子上
写入路径
一次 put 的顺序是:先追加到 WAL(顺序写磁盘,保证不丢)→ 再写 MemStore(内存,按 RowKey 排序)→ 返回成功。用户感知到的延迟是内存级的。
MemStore 达到阈值(默认 128MB,按列族算)后整体刷成一个 HFile。刷盘是异步的,不阻塞写入。
为什么读会变慢
因为同一个 RowKey 的最新值可能散落在 MemStore 和多个 HFile 里,读请求要把它们都查一遍再按时间戳取最新。文件越多,读放大越严重——这就是需要 compaction 的原因。
写性能调优
MemStore 调大能减少刷盘次数、提升写吞吐,但会占用更多堆内存,且刷盘时抖动更大。堆紧张时容易触发 BlockingMemStoreFlush,写入直接被卡住,表现为“突然变慢”。