- 博客(5)
- 收藏
- 关注
原创 HBase 源码学习 ---- Flush (5)
上次写到HBase 1.4 版本MemStore 如何实现Snapshot,本文梳理Snapshot之后的flush过程。Flush是用一个internalScanner scan出每个cell,然后一个一个写入临时文件,因为internal scan不涉及外部文件,只扫描内存,所以速度相对较快。StoreFlusher 类的createScanner方法通过snapshot中的KeyValueScanner创建了一个StoreScanner:Scan scan = new Scan();
2021-02-16 17:02:29
120
原创 HBase 源码学习 ---- Flush(4)
根据前三篇文章,HBase flush主要分三个阶段,snapshot,flush,commit,这篇深入HBase MemStore,梳理snapshot的流程。volatile Section activeSection;volatile Section snapshotSection;MemStore 主要包含这两个Section,写入的Cell保存在activeSection中,volatile关键字保证线程可见性。接下来是snapshot方法:@Override public Mem
2021-02-16 14:00:48
108
原创 HBase 源码学习 ---- Flush (3)
上一篇主要梳理了Flush的大致流程,包括prepare,flush,commit三个阶段,其中最耗时,涉及磁盘IO的阶段是将memstore的快照写入临时文件的flush阶段,这篇深入flush阶段进行梳理。Store通过调用flushCache() 方法,将快照写入临时文件,实际是调用storeEngine中,StoreFlusher的flushSnapshot方法:StoreFlusher flusher = storeEngine.getStoreFlusher(); IOExcepti
2021-02-11 10:56:53
120
原创 HBase 源码学习 ---- Flush(2)
HBase Flush 流程梳理HRegioninternalFlushcache() 方法internalPrepareFlushCache() 方法检查阶段写入日志接上一篇继续梳理HBase Flush。HRegionpublic FlushResult flushcache(boolean forceFlushAllStores, boolean writeFlushRequestWalMarker) throws IOException { if (this.closing
2021-02-10 14:39:36
162
原创 HBase 源码学习 ---- Flush(1)
HBase Flush 流程梳理HBase Flush 流程梳理HRegionServerPeriodicMemstoreFlusherMemStoreFlusherMemStoreFlusher包含的超参FlushHandlerHBase Flush 流程梳理最近在做HBase 写入方面的优化,因为刚接触HBase,在此把HBase Flush流程记录下来,方便以后查阅。HRegionServer在HRegionServer类中,首先调用initializeThread()方法进行初始化,与Flu
2021-02-09 17:17:43
373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人