前言:圖片是HBase架構圖,建議結合架構圖,理解flush刷寫時機
對於客戶端來說,將數據寫到內存就結束了。但是對於HBase系統來說這個流程還沒有結束,還需要做合久必分,分久必合的操作。在合久必分,分久必合操作之前,還需要做flush操作。
memstore在刷寫的時候是有條件限制的,主要包括2點,時間和大小
1、region server的累計memstore的大小,超過堆內存的40%會觸發flush到磁盤的操作
2、region server中最後一條數據到達後,1小時內沒有新的數據進來,就會自動刷寫
3、Region中,累計memstore大小到達128M的時候,這個region的數據都會刷寫HDFS
4.當 WAL 文件的數量超過 hbase.regionserver.max.logs,region 會按照時間順序依次進行刷寫,直到 WAL 文件數量減小到 hbase.regionserver.max.log 以下(該屬性名已經廢棄,
現無需手動設置,最大值爲 32)
老版本可以看見這個參數,但是在新版本中這個參數依然存在,但是這個條件不暴露給用戶了。