HBase のメジャーコンパクション実行時間



という話になって、



とか返したのですが、



という話が。

以下のソースコードを見ると確かにそうなってます。


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