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


Java ZKAssign.getDataAndWatch方法代码示例

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


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

示例1: processRegionInTransition

import org.apache.hadoop.hbase.zookeeper.ZKAssign; //导入方法依赖的package包/类
/**
 * Process failover of new master for region <code>encodedRegionName</code>
 * up in zookeeper.
 * @param encodedRegionName Region to process failover for.
 * @param regionInfo If null we'll go get it from meta table.
 * @param deadServers Can be null 
 * @return True if we processed <code>regionInfo</code> as a RIT.
 * @throws KeeperException
 * @throws IOException
 */
boolean processRegionInTransition(final String encodedRegionName,
    final HRegionInfo regionInfo,
    final Map<ServerName,List<Pair<HRegionInfo,Result>>> deadServers)
throws KeeperException, IOException {
  Stat stat = new Stat();
  RegionTransitionData data = ZKAssign.getDataAndWatch(watcher,
      encodedRegionName, stat);
  if (data == null) return false;
  HRegionInfo hri = regionInfo;
  if (hri == null) {
    if ((hri = getHRegionInfo(data)) == null) return false; 
  }
  processRegionsInTransition(data, hri, deadServers, stat.getVersion());
  return true;
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:26,代码来源:AssignmentManager.java

示例2: nodeCreated

import org.apache.hadoop.hbase.zookeeper.ZKAssign; //导入方法依赖的package包/类
/**
 * New unassigned node has been created.
 *
 * <p>This happens when an RS begins the OPENING or CLOSING of a region by
 * creating an unassigned node.
 *
 * <p>When this happens we must:
 * <ol>
 *   <li>Watch the node for further events</li>
 *   <li>Read and handle the state in the node</li>
 * </ol>
 */
@Override
public void nodeCreated(String path) {
  if(path.startsWith(watcher.assignmentZNode)) {
    try {
      Stat stat = new Stat();
      RegionTransitionData data = ZKAssign.getDataAndWatch(watcher, path, stat);
      if (data == null) {
        return;
      }
      handleRegion(data, stat.getVersion());
    } catch (KeeperException e) {
      master.abort("Unexpected ZK exception reading unassigned node data", e);
    }
  }
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:28,代码来源:AssignmentManager.java

示例3: nodeDataChanged

import org.apache.hadoop.hbase.zookeeper.ZKAssign; //导入方法依赖的package包/类
/**
 * Existing unassigned node has had data changed.
 *
 * <p>This happens when an RS transitions from OFFLINE to OPENING, or between
 * OPENING/OPENED and CLOSING/CLOSED.
 *
 * <p>When this happens we must:
 * <ol>
 *   <li>Watch the node for further events</li>
 *   <li>Read and handle the state in the node</li>
 * </ol>
 */
@Override
public void nodeDataChanged(String path) {
  if(path.startsWith(watcher.assignmentZNode)) {
    try {
      Stat stat = new Stat();
      RegionTransitionData data = ZKAssign.getDataAndWatch(watcher, path, stat);
      if (data == null) {
        return;
      }
      handleRegion(data, stat.getVersion());
    } catch (KeeperException e) {
      master.abort("Unexpected ZK exception reading unassigned node data", e);
    }
  }
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:28,代码来源:AssignmentManager.java

示例4: nodeChildrenChanged

import org.apache.hadoop.hbase.zookeeper.ZKAssign; //导入方法依赖的package包/类
/**
 * New unassigned node has been created.
 *
 * <p>This happens when an RS begins the OPENING, SPLITTING or CLOSING of a
 * region by creating a znode.
 *
 * <p>When this happens we must:
 * <ol>
 *   <li>Watch the node for further children changed events</li>
 *   <li>Watch all new children for changed events</li>
 * </ol>
 */
@Override
public void nodeChildrenChanged(String path) {
  if(path.equals(watcher.assignmentZNode)) {
    try {
      List<String> children = ZKUtil.listChildrenAndWatchForNewChildren(watcher,
          watcher.assignmentZNode);
      if (children != null) {
        Stat stat = new Stat();
        for (String child : children) {
          stat.setVersion(0);
          RegionTransitionData data = ZKAssign.getDataAndWatch(watcher,
              ZKUtil.joinZNode(watcher.assignmentZNode, child), stat);
          // See HBASE-7551, handle splitting here as well, in case we miss the node change event
          if (stat.getVersion() > 0 && data.getEventType() == EventType.RS_ZK_REGION_SPLITTING) {
            handleRegion(data, stat.getVersion());
          }
        }
      }
    } catch(KeeperException e) {
      master.abort("Unexpected ZK exception reading unassigned children", e);
    }
  }
}
 
开发者ID:fengchen8086,项目名称:LCIndex-HBase-0.94.16,代码行数:36,代码来源:AssignmentManager.java

示例5: processRegionInTransition

import org.apache.hadoop.hbase.zookeeper.ZKAssign; //导入方法依赖的package包/类
/**
 * Process failover of new master for region <code>encodedRegionName</code>
 * up in zookeeper.
 * @param encodedRegionName Region to process failover for.
 * @param regionInfo If null we'll go get it from meta table.
 * @return True if we processed <code>regionInfo</code> as a RIT.
 * @throws KeeperException
 * @throws IOException
 */
boolean processRegionInTransition(final String encodedRegionName,
    final HRegionInfo regionInfo) throws KeeperException, IOException {
  // We need a lock here to ensure that we will not put the same region twice
  // It has no reason to be a lock shared with the other operations.
  // We can do the lock on the region only, instead of a global lock: what we want to ensure
  // is that we don't have two threads working on the same region.
  Lock lock = locker.acquireLock(encodedRegionName);
  try {
    Stat stat = new Stat();
    byte [] data = ZKAssign.getDataAndWatch(watcher, encodedRegionName, stat);
    if (data == null) return false;
    RegionTransition rt;
    try {
      rt = RegionTransition.parseFrom(data);
    } catch (DeserializationException e) {
      LOG.warn("Failed parse znode data", e);
      return false;
    }
    HRegionInfo hri = regionInfo;
    if (hri == null) {
      // The region info is not passed in. We will try to find the region
      // from region states map/meta based on the encoded region name. But we
      // may not be able to find it. This is valid for online merge that
      // the region may have not been created if the merge is not completed.
      // Therefore, it is not in meta at master recovery time.
      hri = regionStates.getRegionInfo(rt.getRegionName());
      EventType et = rt.getEventType();
      if (hri == null && et != EventType.RS_ZK_REGION_MERGING
          && et != EventType.RS_ZK_REQUEST_REGION_MERGE) {
        LOG.warn("Couldn't find the region in recovering " + rt);
        return false;
      }
    }
    return processRegionsInTransition(
      rt, hri, stat.getVersion());
  } finally {
    lock.unlock();
  }
}
 
开发者ID:tenggyut,项目名称:HIndex,代码行数:49,代码来源:AssignmentManager.java

示例6: processRegionInTransition

import org.apache.hadoop.hbase.zookeeper.ZKAssign; //导入方法依赖的package包/类
/**
 * Process failover of new master for region <code>encodedRegionName</code>
 * up in zookeeper.
 * @param encodedRegionName Region to process failover for.
 * @param regionInfo If null we'll go get it from meta table.
 * @return True if we processed <code>regionInfo</code> as a RIT.
 * @throws KeeperException
 * @throws IOException
 */
boolean processRegionInTransition(final String encodedRegionName,
    final HRegionInfo regionInfo) throws KeeperException, IOException {
  // We need a lock here to ensure that we will not put the same region twice
  // It has no reason to be a lock shared with the other operations.
  // We can do the lock on the region only, instead of a global lock: what we want to ensure
  // is that we don't have two threads working on the same region.
  Lock lock = locker.acquireLock(encodedRegionName);
  try {
    Stat stat = new Stat();
    byte [] data = ZKAssign.getDataAndWatch(watcher, encodedRegionName, stat);
    if (data == null) return false;
    RegionTransition rt;
    try {
      rt = RegionTransition.parseFrom(data);
    } catch (DeserializationException e) {
      LOG.warn("Failed parse znode data", e);
      return false;
    }
    HRegionInfo hri = regionInfo;
    if (hri == null) {
      // The region info is not passed in. We will try to find the region
      // from region states map/meta based on the encoded region name. But we
      // may not be able to find it. This is valid for online merge that
      // the region may have not been created if the merge is not completed.
      // Therefore, it is not in meta at master recovery time.
      hri = regionStates.getRegionInfo(rt.getRegionName());
      EventType et = rt.getEventType();
      if (hri == null && et != EventType.RS_ZK_REGION_MERGING
          && et != EventType.RS_ZK_REQUEST_REGION_MERGE) {
        LOG.warn("Couldn't find the region in recovering " + rt);
        return false;
      }
    }

    // TODO: This code is tied to ZK anyway, so for now leaving it as is,
    // will refactor when whole region assignment will be abstracted from ZK
    BaseCoordinatedStateManager cp =
      (BaseCoordinatedStateManager) this.server.getCoordinatedStateManager();
    OpenRegionCoordination openRegionCoordination = cp.getOpenRegionCoordination();

    ZkOpenRegionCoordination.ZkOpenRegionDetails zkOrd =
      new ZkOpenRegionCoordination.ZkOpenRegionDetails();
    zkOrd.setVersion(stat.getVersion());
    zkOrd.setServerName(cp.getServer().getServerName());

    return processRegionsInTransition(
      rt, hri, openRegionCoordination, zkOrd);
  } finally {
    lock.unlock();
  }
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:61,代码来源:AssignmentManager.java


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