中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase 0.94中的Split策略有什么用

發布時間:2021-12-08 13:55:18 來源:億速云 閱讀:110 作者:小新 欄目:云計算

這篇文章主要介紹HBase 0.94中的Split策略有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

HBase 0.94中的Split策略

HBase 0.94之前版本中,split使用的是ConstantSizeRegionSplitPolicy。當region中文件大小超過配置中所指定大小時,會進行切分。

而在0.94版本之后,默認split策略修改為了IncreasingToUpperBoundRegionSplitPolicy。該策略使用了另一種方法來計算是否應當切割,導致原先的參數失效。

該方法中的分配策略,是根據table中region的個數平方,乘以memstore的大小。得出應當切分的大小。

假設memstore size配置為128M,則在memstore第一次刷入HFile數據時,進行第一次split,1 * 1 * 128M = 128M。

當region數達到2個時,2 * 2 * 128M = 512M。

當region數達到3個時,3 * 3 * 128M = 1152M。

依此類推。

當region個數到達30個時,30 * 30 * 128 = 107648M = 105.1G。即在此時,region的切分大小已經超過了我們原先在ConstantSizeRegionSplitPolicy策略中設置的100G大小。

簡單分析

對這種策略進行簡單的分析,可以看到,在數據寫入初期,這種策略可以快速的對現有region進行split,使得在一開始就可以將熱點region切分到多個server上。同時由于region size較小,也可以避免split操作對寫入的阻塞。

而在后期,當region數量逐漸增多,單個region size逐漸增大時,split頻率會急速減少,避免在region過大時頻繁split的情況。

這種策略一方面在數據量增大的情況下減少了region的切分次數,達到了我們期望的盡量減少split的需求,避免對寫入造成影響。同時在初期的快速切分,在基本不影響寫入的同時,也減少了我們原先需要手動操作split的問題。可以認為,這種策略是符合我們需求的。當然,還需要進一步的測試來進行驗證。

源碼

源碼如下:

/**
 * @return Region max size or <code>count of regions squared * flushsize, which ever is
 * smaller; guard against there being zero regions on this server.
 */
long getSizeToCheck(final int tableRegionsCount) {
  return tableRegionsCount == 0? getDesiredMaxFileSize():
    Math.min(getDesiredMaxFileSize(),
      this.flushSize * (tableRegionsCount * tableRegionsCount));
}
 
@Override
protected boolean shouldSplit() {
  if (region.shouldForceSplit()) return true;
  boolean foundABigStore = false;
  // Get count of regions that have the same common table as this.region
  int tableRegionsCount = getCountOfCommonTableRegions();
  // Get size to check
  long sizeToCheck = getSizeToCheck(tableRegionsCount);
 
  for (Store store : region.getStores().values()) {
    // If any of the stores is unable to split (eg they contain reference files)
    // then don't split
    if ((!store.canSplit())) {
      return false;
    }
 
    // Mark if any store is big enough
    long size = store.getSize();
    if (size > sizeToCheck) {
      LOG.debug("ShouldSplit because " + store.getColumnFamilyName() +
        " size=" + size + ", sizeToCheck=" + sizeToCheck +
        ", regionsWithCommonTable=" + tableRegionsCount);
      foundABigStore = true;
      break;
    }
  }
 
  return foundABigStore;
}

以上是“HBase 0.94中的Split策略有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扬中市| 壤塘县| 渝北区| 论坛| 溧阳市| 福鼎市| 合肥市| 尚义县| 榆林市| 调兵山市| 龙胜| 黄山市| 黄冈市| 华宁县| 浙江省| 柘城县| 双峰县| 轮台县| 高平市| 庆安县| 泰和县| 松潘县| 泸州市| 海口市| 渝中区| 尼玛县| 乐业县| 沂南县| 吉林省| 长白| 贵港市| 来凤县| 内乡县| 阿拉善盟| 巴彦淖尔市| 通州市| 海晏县| 福清市| 达日县| 榆社县| 鱼台县|