Apache HBase 三個重要機制 Flush Compact Split

Flush機制

1.(hbase.regionserver.global.memstore.size)默認;堆大小的40%

regionServer的全局memstore的大小,超過該大小會觸發flush到磁盤的操作,默認是堆大小的40%,

而且regionserver級別的flush會阻塞客戶端讀寫

2.(hbase.hregion.memstore.flush.size)默認:128M

單個region裏memstore的緩存大小超過128M,那麼整個HRegion就會flush,

3.(hbase.regionserver.optionalcacheflushinterval)默認:1h
內存中的文件在自動刷新之前能夠存活的最長時間

4.(hbase.regionserver.global.memstore.size.lower.limit)默認:堆大小 * 0.4 * 0.95

有時候集羣的“寫負載”非常高,寫入量一直超過flush的量,這時,我們就希望memstore不要超過一定的安全設置。

在這種情況下,寫操作就要被阻塞一直到memstore恢復到一個“可管理”的大小, 這個大小就是默認值是堆大小 * 0.4 * 0.95,也就是當regionserver級別的flush操作發送後,會阻塞客戶端寫,一直阻塞到整個regionserver級別的memstore的大小爲 堆大小 * 0.4 *0.95爲止。

5.(hbase.hregion.preclose.flush.size)默認爲:5M

當一個 region 中的 memstore 的大小大於這個值的時候,我們又觸發 了 close.會先運行“pre-flush”操作,清理這個需要關閉的memstore,然後 將這個 region 下線。當一個 region 下線了,我們無法再進行任何寫操作。 如果一個 memstore 很大的時候,flush 操作會消耗很多時間。“pre-flush” 操作意味着在 region 下線之前,會先把 memstore 清空。這樣在最終執行 close 操作的時候,flush 操作會很快。

6.(hbase.hstore.compactionThreshold)默認:超過3個
一個store裏面允許存的hfile的個數,超過這個個數會被寫到新的一個hfile裏面 也即是每個region的每個列族對應的memstore在fulsh爲hfile的時候,默認情況下當超過3個hfile的時候就會 對這些文件進行合併重寫爲一個新文件,設置個數越大可以減少觸發合併的時間,但是每次合併的時間就會越長

Compact機制

http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.14.0/book.html#compaction

把小的storeFile文件合併成大的Storefile文件。
清理過期的數據,包括刪除的數據
將數據的版本號保存爲3個

Split機制

當Region達到閾值,會把過大的Region一分爲二。
默認一個HFile達到10Gb的時候就會進行切分

重點總結

1、flush機制

hbase.regionserver.global.memstore.size: 默認;堆大小的40%
regionServer的全局memstore的大小(多個CF的memstore-多個region),超過該大小會觸發flush到磁盤的操
作,會阻塞客戶端讀寫
flush將所有的memstore全部flush.
hbase不建議配置過多列族:過多的列族會消耗大量的內存,同時數據在flush時消耗磁盤IO.
一個regionserver續寫操作可用堆內存的80%,讀取佔用40% ,寫入佔用40%。這兩個參數直接影響hbase讀寫性
能。

什麼時候觸發flush

  • hbase.hregion.memstore.flush.size:默認:128M(單個region裏memstore的緩存大小)
  • hbase.regionserver.optionalcacheflushinterval: 默認:1h
  • hbase.regionserver.global.memstore.size.lower.limit: 默認:堆大小 0.95倍
  • hbase.hregion.preclose.flush.size:默認爲:5M
    提前進行flush.(先flush一小部分,等後面數據達到閾值在flush後面的數據) 好處:比一次flush效率高

什麼時候觸發合併

hbase.hstore.compactionThreshold: 默認:3個 (flush文件的數量超過3個進行合併)

2、compact機制

默認3個
小的storeFile文件達到三個,合併成大的Storefile文件。

3、split機制

默認一個HFile達到10Gb的時候就會進行切分,一分爲二

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章