HBase什么時候作minor major compact


HBase什么時候做minor major compact
我們都知道compact分為兩類,一類叫Minor compact ,一類叫Major compact,
兩者有什么區別呢?
兩者的區別在於:Minor compact只是進行文件merge操作,而Major compact除了做文件Merge操作,還會將其中的delete項刪除。

 

hbase為了防止小文件(被刷到磁盤的menstore)過多,以保證保證查詢效率,hbase需要在必要的時候將這些小的store file合並成相對較大的store file,這個過程就稱之為compaction。在hbase中,主要存在兩種類型的compaction:minor compaction和major compaction。

major compaction 的功能是將所有的store file合並成一個,觸發major compaction的可能條件有:major_compact 命令、majorCompact() API、region server自動運行(相關參數:hbase.hregion.majoucompaction 默認為24 小時、hbase.hregion.majorcompaction.jetter 默認值為0.2 防止region server 在同一時間進行major compaction)。hbase.hregion.majorcompaction.jetter參數的作用是:對參數hbase.hregion.majoucompaction 規定的值起到浮動的作用,假如兩個參數都為默認值24和0,2,那么major compact最終使用的數值為:19.2~28.8 這個范圍。

minor compaction的運行機制要復雜一些,它由一下幾個參數共同決定:

hbase.hstore.compaction.min :默認值為 3,表示至少需要三個滿足條件的store file時,minor compaction才會啟動

hbase.hstore.compaction.max 默認值為10,表示一次minor compaction中最多選取10個store file

hbase.hstore.compaction.min.size 表示文件大小小於該值的store file 一定會加入到minor compaction的store file中

hbase.hstore.compaction.max.size 表示文件大小大於該值的store file 一定會被minor compaction排除

hbase.hstore.compaction.ratio 將store file 按照文件年齡排序(older to younger),minor compaction總是從older store file開始選擇,如果該文件的size 小於它后面hbase.hstore.compaction.max 個store file size 之和乘以 該ratio,則該store file 也將加入到minor compaction 中。

如果對minor compaction過程還是不了解,可以去看hbase中關於minor compaction 的源碼,或者:http://www.linuxidc.com/Linux/2013-05/83675.htm

本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文鏈接:http://www.linuxidc.com/Linux/2013-05/83674.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM