なんでCompleted major compactionってlogがたくさん出てるのさー defaultはdailyじゃないんかーい #hbase
@hamburger_kid なんか3時間くらいおきにトリガーは動いちゃうみたいですね。その時点で前回のメジャーコンパクションから24時間以上すぎているリージョンはメジャーコンパクションされちゃうっぽいです。ソースまでは確認していませんけど。 #HBase
という話になって、
@ueshin @hamburger_kid hbase.hregion.majorcompaction はデフォルト24時間です。ソースは o.a.h.hbase.regionserver.Store
2011-08-30 20:59:19 via Silver Bird to @ueshin
とか返したのですが、
メジャーコンパクションの周期はきっちり(デフォルトだと)24時間というわけではないようだ。hbase.hregion.majorcompaction.jitter という設定(デフォルト 0.20F)で24時間 ±20%(4.8時間)というブレを入れている模様。
という話が。
以下のソースコードを見ると確かにそうなってます。
CDH3u1 の org.apache.hadoop.hbase.regionserver.Store
long getNextMajorCompactTime() { // default = 24hrs long ret = conf.getLong(HConstants.MAJOR_COMPACTION_PERIOD, 1000*60*60*24); if (family.getValue(HConstants.MAJOR_COMPACTION_PERIOD) != null) { String strCompactionTime = family.getValue(HConstants.MAJOR_COMPACTION_PERIOD); ret = (new Long(strCompactionTime)).longValue(); } if (ret > 0) { // default = 20% = +/- 4.8 hrs double jitterPct = conf.getFloat("hbase.hregion.majorcompaction.jitter", 0.20F); if (jitterPct > 0) { long jitter = Math.round(ret * jitterPct); ret += jitter - Math.round(2L * jitter * Math.random()); } } return ret; }
ソースは読んでおくもんですね。
(2011/08/31 追記)
ueshin さんがツイートまとめてくれました
http://togetter.com/li/181482