当前位置: 首页>>代码示例>>Java>>正文


Java MetaReader.getDaughterRegions方法代码示例

本文整理汇总了Java中org.apache.hadoop.hbase.catalog.MetaReader.getDaughterRegions方法的典型用法代码示例。如果您正苦于以下问题:Java MetaReader.getDaughterRegions方法的具体用法?Java MetaReader.getDaughterRegions怎么用?Java MetaReader.getDaughterRegions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hbase.catalog.MetaReader的用法示例。


在下文中一共展示了MetaReader.getDaughterRegions方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: loadMetaEntries

import org.apache.hadoop.hbase.catalog.MetaReader; //导入方法依赖的package包/类
/**
 * Scan .META. and -ROOT-, adding all regions found to the regionInfo map.
 * @throws IOException if an error is encountered
 */
boolean loadMetaEntries() throws IOException {

  // get a list of all regions from the master. This involves
  // scanning the META table
  if (!recordRootRegion()) {
    // Will remove later if we can fix it
    errors.reportError("Fatal error: unable to get root region location. Exiting...");
    return false;
  }

  MetaScannerVisitor visitor = new MetaScannerVisitorBase() {
    int countRecord = 1;

    // comparator to sort KeyValues with latest modtime
    final Comparator<KeyValue> comp = new Comparator<KeyValue>() {
      public int compare(KeyValue k1, KeyValue k2) {
        return (int)(k1.getTimestamp() - k2.getTimestamp());
      }
    };

    public boolean processRow(Result result) throws IOException {
      try {

        // record the latest modification of this META record
        long ts =  Collections.max(result.list(), comp).getTimestamp();
        Pair<HRegionInfo, ServerName> pair = MetaReader.parseCatalogResult(result);
        if (pair == null || pair.getFirst() == null) {
          emptyRegionInfoQualifiers.add(result);
          return true;
        }
        ServerName sn = null;
        if (pair.getSecond() != null) {
          sn = pair.getSecond();
        }
        HRegionInfo hri = pair.getFirst();
        if (!(isTableIncluded(hri.getTableNameAsString())
            || hri.isMetaRegion() || hri.isRootRegion())) {
          return true;
        }
        PairOfSameType<HRegionInfo> daughters = MetaReader.getDaughterRegions(result);
        MetaEntry m = new MetaEntry(hri, sn, ts, daughters.getFirst(), daughters.getSecond());
        HbckInfo hbInfo = new HbckInfo(m);
        HbckInfo previous = regionInfoMap.put(hri.getEncodedName(), hbInfo);
        if (previous != null) {
          throw new IOException("Two entries in META are same " + previous);
        }

        // show proof of progress to the user, once for every 100 records.
        if (countRecord % 100 == 0) {
          errors.progress();
        }
        countRecord++;
        return true;
      } catch (RuntimeException e) {
        LOG.error("Result=" + result);
        throw e;
      }
    }
  };

  // Scan -ROOT- to pick up META regions
  MetaScanner.metaScan(getConf(), null, visitor, null, null,
    Integer.MAX_VALUE, HConstants.ROOT_TABLE_NAME);

  if (!checkMetaOnly) {
    // Scan .META. to pick up user regions
    MetaScanner.metaScan(getConf(), visitor);
  }

  errors.print("");
  return true;
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:77,代码来源:HBaseFsck.java

示例2: blockUntilRegionSplit

import org.apache.hadoop.hbase.catalog.MetaReader; //导入方法依赖的package包/类
/** Blocks until the region split is complete in 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;
  HTable metaTable = new HTable(conf, HConstants.META_TABLE_NAME);

  try {
    while (System.currentTimeMillis() - start < timeout) {
      Result result = getRegionRow(metaTable, regionName);
      if (result == null) {
        break;
      }

      HRegionInfo region = MetaReader.parseCatalogResult(result).getFirst();
      if(region.isSplitParent()) {
        log("found parent region: " + region.toString());
        PairOfSameType<HRegionInfo> pair = MetaReader.getDaughterRegions(result);
        daughterA = pair.getFirst();
        daughterB = pair.getSecond();
        break;
      }
      Threads.sleep(100);
    }

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

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

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

      rem = timeout - (System.currentTimeMillis() - start);
      blockUntilRegionIsOpened(conf, rem, daughterB);
    }
  } finally {
    IOUtils.closeQuietly(metaTable);
  }
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:46,代码来源:TestEndToEndSplitTransaction.java


注:本文中的org.apache.hadoop.hbase.catalog.MetaReader.getDaughterRegions方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。