當前位置: 首頁>>代碼示例>>Java>>正文


Java HRegionInfo.isSplitParent方法代碼示例

本文整理匯總了Java中org.apache.hadoop.hbase.HRegionInfo.isSplitParent方法的典型用法代碼示例。如果您正苦於以下問題:Java HRegionInfo.isSplitParent方法的具體用法?Java HRegionInfo.isSplitParent怎麽用?Java HRegionInfo.isSplitParent使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.apache.hadoop.hbase.HRegionInfo的用法示例。


在下文中一共展示了HRegionInfo.isSplitParent方法的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: isTableAvailable

import org.apache.hadoop.hbase.HRegionInfo; //導入方法依賴的package包/類
@Override
public boolean isTableAvailable(final TableName tableName) throws IOException {
  final AtomicBoolean available = new AtomicBoolean(true);
  final AtomicInteger regionCount = new AtomicInteger(0);
  MetaScannerVisitor visitor = new MetaScannerVisitorBase() {
    @Override
    public boolean processRow(Result row) throws IOException {
      HRegionInfo info = MetaScanner.getHRegionInfo(row);
      if (info != null && !info.isSplitParent()) {
        if (tableName.equals(info.getTable())) {
          ServerName server = HRegionInfo.getServerName(row);
          if (server == null) {
            available.set(false);
            return false;
          }
          regionCount.incrementAndGet();
        } else if (tableName.compareTo(info.getTable()) < 0) {
          // Return if we are done with the current table
          return false;
        }
      }
      return true;
    }
  };
  MetaScanner.metaScan(this, visitor, tableName);
  return available.get() && (regionCount.get() > 0);
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:28,代碼來源:ConnectionManager.java

示例2: getMergedRegionsAndSplitParents

import org.apache.hadoop.hbase.HRegionInfo; //導入方法依賴的package包/類
/**
 * Scans hbase:meta and returns a number of scanned rows, and a map of merged
 * regions, and an ordered map of split parents. if the given table name is
 * null, return merged regions and split parents of all tables, else only the
 * specified table
 * @param tableName null represents all tables
 * @return triple of scanned rows, and map of merged regions, and map of split
 *         parent regioninfos
 * @throws IOException
 */
Triple<Integer, Map<HRegionInfo, Result>, Map<HRegionInfo, Result>> getMergedRegionsAndSplitParents(
    final TableName tableName) throws IOException {
  final boolean isTableSpecified = (tableName != null);
  // TODO: Only works with single hbase:meta region currently.  Fix.
  final AtomicInteger count = new AtomicInteger(0);
  // Keep Map of found split parents.  There are candidates for cleanup.
  // Use a comparator that has split parents come before its daughters.
  final Map<HRegionInfo, Result> splitParents =
    new TreeMap<HRegionInfo, Result>(new SplitParentFirstComparator());
  final Map<HRegionInfo, Result> mergedRegions = new TreeMap<HRegionInfo, Result>();
  // This visitor collects split parents and counts rows in the hbase:meta table

  MetaScannerVisitor visitor = new MetaScanner.MetaScannerVisitorBase() {
    @Override
    public boolean processRow(Result r) throws IOException {
      if (r == null || r.isEmpty()) return true;
      count.incrementAndGet();
      HRegionInfo info = HRegionInfo.getHRegionInfo(r);
      if (info == null) return true; // Keep scanning
      if (isTableSpecified
          && info.getTable().compareTo(tableName) > 0) {
        // Another table, stop scanning
        return false;
      }
      if (info.isSplitParent()) splitParents.put(info, r);
      if (r.getValue(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER) != null) {
        mergedRegions.put(info, r);
      }
      // Returning true means "keep scanning"
      return true;
    }
  };

  // Run full scan of hbase:meta catalog table passing in our custom visitor with
  // the start row
  MetaScanner.metaScan(this.connection, visitor, tableName);

  return new Triple<Integer, Map<HRegionInfo, Result>, Map<HRegionInfo, Result>>(
      count.get(), mergedRegions, splitParents);
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:51,代碼來源:CatalogJanitor.java

示例3: blockUntilRegionSplit

import org.apache.hadoop.hbase.HRegionInfo; //導入方法依賴的package包/類
/** Blocks until the region split is complete in hbase:meta and region server opens the daughters */
public static void blockUntilRegionSplit(Configuration conf, long timeout,
    final byte[] regionName, boolean waitForDaughters)
    throws IOException, InterruptedException {
  long start = System.currentTimeMillis();
  log("blocking until region is split:" +  Bytes.toStringBinary(regionName));
  HRegionInfo daughterA = null, daughterB = null;
  try (Connection conn = ConnectionFactory.createConnection(conf);
      Table metaTable = conn.getTable(TableName.META_TABLE_NAME)) {
    Result result = null;
    HRegionInfo region = null;
    while ((System.currentTimeMillis() - start) < timeout) {
      result = metaTable.get(new Get(regionName));
      if (result == null) {
        break;
      }

      region = MetaTableAccessor.getHRegionInfo(result);
      if (region.isSplitParent()) {
        log("found parent region: " + region.toString());
        PairOfSameType<HRegionInfo> pair = MetaTableAccessor.getDaughterRegions(result);
        daughterA = pair.getFirst();
        daughterB = pair.getSecond();
        break;
      }
      Threads.sleep(100);
    }
    if (daughterA == null || daughterB == null) {
      throw new IOException("Failed to get daughters, daughterA=" + daughterA + ", daughterB=" +
        daughterB + ", timeout=" + timeout + ", result=" + result + ", regionName=" + regionName +
        ", region=" + region);
    }

    //if we are here, this means the region split is complete or timed out
    if (waitForDaughters) {
      long rem = timeout - (System.currentTimeMillis() - start);
      blockUntilRegionIsInMeta(conn, rem, daughterA);

      rem = timeout - (System.currentTimeMillis() - start);
      blockUntilRegionIsInMeta(conn, rem, daughterB);

      rem = timeout - (System.currentTimeMillis() - start);
      blockUntilRegionIsOpened(conf, rem, daughterA);

      rem = timeout - (System.currentTimeMillis() - start);
      blockUntilRegionIsOpened(conf, rem, daughterB);
    }
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:50,代碼來源:TestEndToEndSplitTransaction.java


注:本文中的org.apache.hadoop.hbase.HRegionInfo.isSplitParent方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。