1、prepare階段:遍歷當前Region中的所有Memstore,將Memstore中當前資料集kvset做一個快照snapshot,然后再新建一個新的kvset。后期的所有寫入操作都會寫入新的kvset中,而整個flush階段讀操作會首先分別遍歷kvset和snapshot,如果查找不到再會到HFile中查找。prepare階段需要加一把updateLock對寫請求阻塞,結束之后會釋放該鎖。因為此階段沒有任何費時操作,因此持鎖時間很短。
2、flush階段:遍歷所有Memstore,將prepare階段生成的snapshot持久化為臨時檔案,臨時檔案會統一放到目錄.tmp下。這個程序因為涉及到磁盤IO操作,因此相對比較耗時。
3、commit階段:遍歷所有的Memstore,將flush階段生成的臨時檔案移到指定的ColumnFamily目錄下,針對HFile生成對應的storefile和Reader,把storefile添加到HStore的storefiles串列中,最后再清空prepare階段生成的snapshot。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/35002.html
標籤:其他數據庫
上一篇:快餐資料庫!!!
下一篇:4.2版本如何執行自定義的函式
