org.apache.hadoop.hbase.zookeeper.ZKAssign类的使用及代码示例

x33g5p2x  于2022-02-05 转载在 其他  
字(12.7k)|赞(0)|评价(0)|浏览(133)

本文整理了Java中org.apache.hadoop.hbase.zookeeper.ZKAssign类的一些代码示例,展示了ZKAssign类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZKAssign类的具体详情如下:
包路径:org.apache.hadoop.hbase.zookeeper.ZKAssign
类名称:ZKAssign

ZKAssign介绍

[英]Utility class for doing region assignment in ZooKeeper. This class extends stuff done in ZKUtil to cover specific assignment operations.

Contains only static methods and constants.

Used by both the Master and RegionServer.

All valid transitions outlined below:

MASTER

  1. Master creates an unassigned node as OFFLINE. - Cluster startup and table enabling.
  2. Master forces an existing unassigned node to OFFLINE. - RegionServer failure. - Allows transitions from all states to OFFLINE.
  3. Master deletes an unassigned node that was in a OPENED state. - Normal region transitions. Besides cluster startup, no other deletions of unassigned nodes is allowed.
  4. Master deletes all unassigned nodes regardless of state. - Cluster startup before any assignment happens.

REGIONSERVER

  1. RegionServer creates an unassigned node as CLOSING. - All region closes will do this in response to a CLOSE RPC from Master. - A node can never be transitioned to CLOSING, only created.
  2. RegionServer transitions an unassigned node from CLOSING to CLOSED. - Normal region closes. CAS operation.
  3. RegionServer transitions an unassigned node from OFFLINE to OPENING. - All region opens will do this in response to an OPEN RPC from the Master. - Normal region opens. CAS operation.
  4. RegionServer transitions an unassigned node from OPENING to OPENED. - Normal region opens. CAS operation.
    [中]用于在ZooKeeper中执行区域分配的实用程序类。这个类扩展了在ZKUtil中完成的工作,以涵盖特定的赋值操作。
    只包含静态方法和常量。
    主服务器和区域服务器都使用。
    以下列出了所有有效的转换:
    主人
    1.Master将未分配的节点创建为脱机。-集群启动和表启用。
    1.主节点强制现有未分配节点脱机。-区域服务器故障。-允许从所有状态转换为脱机状态。
    1.主节点删除处于打开状态的未分配节点。-正常区域转换。除了集群启动,不允许删除其他未分配的节点。
    1.主节点删除所有未分配的节点,无论其状态如何。-在任何分配发生之前启动群集。
    区域服务器
    1.RegionServer创建一个未分配的节点作为关闭。-所有区域关闭都将响应主服务器的关闭RPC。-节点永远不能转换为关闭,只能创建。
    1.RegionServer将未分配的节点从关闭转换为关闭。-正常区域关闭。CAS操作。
    1.RegionServer将未分配的节点从脱机转换为打开。-所有打开的区域都将响应主服务器打开的RPC来执行此操作。-正常区域打开。CAS操作。
    1.RegionServer将未分配的节点从打开状态转换为打开状态。-正常区域打开。CAS操作。

代码示例

代码示例来源:origin: NGDATA/lilyproject

/**
 * Creates a znode with OPENED state.
 */
public static ZooKeeperWatcher createAndForceNodeToOpenedState(
    HBaseTestingUtility TEST_UTIL, HRegion region,
    ServerName serverName) throws ZooKeeperConnectionException,
    IOException, KeeperException, NodeExistsException {
  ZooKeeperWatcher zkw = getZooKeeperWatcher(TEST_UTIL);
  ZKAssign.createNodeOffline(zkw, region.getRegionInfo(), serverName);
  int version = ZKAssign.transitionNodeOpening(zkw, region
      .getRegionInfo(), serverName);
  ZKAssign.transitionNodeOpened(zkw, region.getRegionInfo(), serverName,
      version);
  return zkw;
}

代码示例来源:origin: co.cask.hbase/hbase

/**
 * Creates or force updates an unassigned node to the OFFLINE state for the
 * specified region.
 * <p>
 * Attempts to create the node but if it exists will force it to transition to
 * and OFFLINE state.
 *
 * <p>Sets a watcher on the unassigned region node if the method is
 * successful.
 *
 * <p>This method should be used when assigning a region.
 *
 * @param zkw zk reference
 * @param region region to be created as offline
 * @param serverName server event originates from
 * @return the version of the znode created in OFFLINE state, -1 if
 *         unsuccessful.
 * @throws KeeperException if unexpected zookeeper exception
 * @throws KeeperException.NodeExistsException if node already exists
 */
public static int createOrForceNodeOffline(ZooKeeperWatcher zkw,
  HRegionInfo region, ServerName serverName) throws KeeperException {
 return createOrForceNodeOffline(zkw, region, serverName, false, true);
}

代码示例来源:origin: co.cask.hbase/hbase

/**
 * Reset all unassigned znodes.  Called on startup of master.
 * Call {@link #assignAllUserRegions()} after root and meta have been assigned.
 * @throws IOException
 * @throws KeeperException
 */
void cleanoutUnassigned() throws IOException, KeeperException {
 // Cleanup any existing ZK nodes and start watching
 ZKAssign.deleteAllNodes(watcher);
 ZKUtil.listChildrenAndWatchForNewChildren(this.watcher,
  this.watcher.assignmentZNode);
}

代码示例来源:origin: co.cask.hbase/hbase

/**
 * Deletes an existing unassigned node that is in the OFFLINE state for the
 * specified region.
 *
 * <p>If a node does not already exist for this region, a
 * {@link NoNodeException} will be thrown.
 *
 * <p>No watcher is set whether this succeeds or not.
 *
 * <p>Returns false if the node was not in the proper state but did exist.
 *
 * <p>This method is used during master failover when the regions on an RS
 * that has died are all set to OFFLINE before being processed.
 *
 * @param zkw zk reference
 * @param regionName closed region to be deleted from zk
 * @throws KeeperException if unexpected zookeeper exception
 * @throws KeeperException.NoNodeException if node does not exist
 */
public static boolean deleteOfflineNode(ZooKeeperWatcher zkw,
  String regionName)
throws KeeperException, KeeperException.NoNodeException {
 return deleteNode(zkw, regionName, EventType.M_ZK_REGION_OFFLINE);
}

代码示例来源:origin: co.cask.hbase/hbase

RegionTransitionData data = new RegionTransitionData(
  EventType.M_ZK_REGION_OFFLINE, region.getRegionName(), serverName);
String node = getNodeName(zkw, region.getEncodedName());
Stat stat = new Stat();
zkw.sync(node);
 RegionTransitionData curDataInZNode = ZKAssign.getDataNoWatch(zkw, region
   .getEncodedName(), stat);
   ZKAssign.getData(zkw, region.getEncodedName());
  if (curData.getEventType() != data.getEventType()) {

代码示例来源:origin: harbby/presto-connectors

.getRegionMergeCoordination().processRegionMergeRequest(p, hri_a, hri_b, sn, std);
if (((ZkRegionMergeCoordination.ZkRegionMergeDetails) std).getZnodeVersion() == -1) {
 byte[] data = ZKAssign.getData(watcher, encodedName);
 EventType currentType = null;
 if (data != null) {
 successful = ZKAssign.deleteNode(watcher, encodedName,
  EventType.RS_ZK_REGION_MERGED, sn);

代码示例来源:origin: harbby/presto-connectors

region.getRegionName(), serverName, HConstants.EMPTY_BYTE_ARRAY);
byte [] data = rt.toByteArray();
String node = getNodeName(zkw, region.getEncodedName());
zkw.sync(node);
int version = ZKUtil.checkExists(zkw, node);
  byte [] bytes = ZKAssign.getData(zkw, region.getEncodedName());
  rt = getRegionTransition(bytes);
  if (rt.getEventType() != EventType.M_ZK_REGION_OFFLINE) {

代码示例来源:origin: harbby/presto-connectors

if (ZKAssign.transitionNodeOpened(watcher, hri,
 zkOrd.getServerName(), zkOrd.getVersion()) == -1) {
 String warnMsg = "Completed the OPEN of region " + name +
  " but when transitioning from " + " OPENING to OPENED ";
 try {
  String node = ZKAssign.getNodeName(watcher, hri.getEncodedName());
  if (ZKUtil.checkExists(watcher, node) < 0) {

代码示例来源:origin: co.cask.hbase/hbase

RegionTransitionData data = ZKAssign.getData(watcher,
  regionInfo.getEncodedName());
  regionInfo, result, this, this.catalogTracker);
if (assign) {
 ZKAssign.createOrForceNodeOffline(watcher, regionInfo,
   master.getServerName());
 if (!nodes.contains(regionInfo.getEncodedName())) {

代码示例来源:origin: harbby/presto-connectors

private void onRegionOpen(final HRegionInfo hri, final ServerName sn, long openSeqNum) {
 regionOnline(hri, sn, openSeqNum);
 if (useZKForAssignment) {
  try {
   // Delete the ZNode if exists
   ZKAssign.deleteNodeFailSilent(watcher, hri);
  } catch (KeeperException ke) {
   server.abort("Unexpected ZK exception deleting node " + hri, ke);
  }
 }
 // reset the count, if any
 failedOpenTracker.remove(hri.getEncodedName());
 if (getTableStateManager().isTableState(hri.getTable(),
   ZooKeeperProtos.Table.State.DISABLED, ZooKeeperProtos.Table.State.DISABLING)) {
  invokeUnAssign(hri);
 }
}

代码示例来源:origin: co.cask.hbase/hbase

/**
 * Creates a new unassigned node in the OFFLINE state for the specified region.
 *
 * <p>Does not transition nodes from other states.  If a node already exists
 * for this region, a {@link NodeExistsException} will be thrown.
 *
 * <p>Sets a watcher on the unassigned region node if the method is successful.
 *
 * <p>This method should only be used during cluster startup and the enabling
 * of a table.
 *
 * @param zkw zk reference
 * @param region region to be created as offline
 * @param serverName server event originates from
 * @throws KeeperException if unexpected zookeeper exception
 * @throws KeeperException.NodeExistsException if node already exists
 */
public static void createNodeOffline(ZooKeeperWatcher zkw, HRegionInfo region,
  ServerName serverName)
throws KeeperException, KeeperException.NodeExistsException {
 createNodeOffline(zkw, region, serverName, EventType.M_ZK_REGION_OFFLINE);
}

代码示例来源:origin: co.cask.hbase/hbase

HRegionInfo region, ServerName serverName)
throws KeeperException {
 return transitionNodeOpening(zkw, region, serverName,
  EventType.M_ZK_REGION_OFFLINE);

代码示例来源:origin: co.cask.hbase/hbase

/**
 * @param path
 * @return True if znode is in SPLIT or SPLITTING state.
 * @throws KeeperException Can happen if the znode went away in meantime.
 */
private boolean isSplitOrSplitting(final String path) throws KeeperException {
 boolean result = false;
 // This may fail if the SPLIT or SPLITTING znode gets cleaned up before we
 // can get data from it.
 RegionTransitionData data = ZKAssign.getData(master.getZooKeeper(), path);
 EventType evt = data.getEventType();
 switch (evt) {
 case RS_ZK_REGION_SPLIT:
 case RS_ZK_REGION_SPLITTING:
  result = true;
  break;
 default:
  break;
 }
 return result;
}

代码示例来源:origin: co.cask.hbase/hbase

/**
 * @param r Region we're working on.
 * @return whether znode is successfully transitioned to OPENED state.
 * @throws IOException
 */
private boolean transitionToOpened(final HRegion r) throws IOException {
 boolean result = false;
 HRegionInfo hri = r.getRegionInfo();
 final String name = hri.getRegionNameAsString();
 // Finally, Transition ZK node to OPENED
 try {
  if (ZKAssign.transitionNodeOpened(this.server.getZooKeeper(), hri,
    this.server.getServerName(), this.version) == -1) {
   LOG.warn("Completed the OPEN of region " + name +
    " but when transitioning from " +
    " OPENING to OPENED got a version mismatch, someone else clashed " +
    "so now unassigning -- closing region on server: " +
    this.server.getServerName());
  } else {
   LOG.debug("region transitioned to opened in zookeeper: " +
    r.getRegionInfo() + ", server: " + this.server.getServerName());
   result = true;
  }
 } catch (KeeperException e) {
  LOG.error("Failed transitioning node " + name +
   " from OPENING to OPENED -- closing region", e);
 }
 return result;
}

代码示例来源:origin: co.cask.hbase/hbase

/**
 * Set region as OFFLINED up in zookeeper asynchronously.
 * @param state
 * @return True if we succeeded, false otherwise (State was incorrect or failed
 * updating zk).
 */
boolean asyncSetOfflineInZooKeeper(final RegionState state,
  final AsyncCallback.StringCallback cb, final Object ctx) {
 if (!state.isClosed() && !state.isOffline()) {
   new RuntimeException("Unexpected state trying to OFFLINE; " + state);
  this.master.abort("Unexpected state trying to OFFLINE; " + state,
   new IllegalStateException());
  return false;
 }
 state.update(RegionState.State.OFFLINE);
 try {
  ZKAssign.asyncCreateNodeOffline(master.getZooKeeper(), state.getRegion(),
   this.master.getServerName(), cb, ctx);
 } catch (KeeperException e) {
  if (e instanceof NodeExistsException) {
   LOG.warn("Node for " + state.getRegion() + " already exists");
  } else { 
   master.abort("Unexpected ZK exception creating/setting node OFFLINE", e);
  }
  return false;
 }
 return true;
}

代码示例来源:origin: co.cask.hbase/hbase

versionOfClosingNode = ZKAssign.createNodeClosing(
 master.getZooKeeper(), region, master.getServerName());
if (versionOfClosingNode == -1) {

代码示例来源:origin: co.cask.hbase/hbase

/**
 * Deletes an existing unassigned node that is in the CLOSED state for the
 * specified region.
 *
 * <p>If a node does not already exist for this region, a
 * {@link NoNodeException} will be thrown.
 *
 * <p>No watcher is set whether this succeeds or not.
 *
 * <p>Returns false if the node was not in the proper state but did exist.
 *
 * <p>This method is used during table disables when a region finishes
 * successfully closing.  This is the Master acknowledging completion
 * of the specified regions transition to being closed.
 *
 * @param zkw zk reference
 * @param regionName closed region to be deleted from zk
 * @throws KeeperException if unexpected zookeeper exception
 * @throws KeeperException.NoNodeException if node does not exist
 */
public static boolean deleteClosedNode(ZooKeeperWatcher zkw,
  String regionName)
throws KeeperException, KeeperException.NoNodeException {
 return deleteNode(zkw, regionName, EventType.RS_ZK_REGION_CLOSED);
}

代码示例来源:origin: harbby/presto-connectors

if (((BaseCoordinatedStateManager) server.getCoordinatedStateManager())
  .getSplitTransactionCoordination().processTransition(p, hri_a, hri_b, sn, std) == -1) {
 byte[] data = ZKAssign.getData(watcher, encodedName);
 EventType currentType = null;
 if (data != null) {
 successful = ZKAssign.deleteNode(watcher, encodedName,
  EventType.RS_ZK_REGION_SPLIT, sn);

代码示例来源:origin: harbby/presto-connectors

try {
 ZKAssign.deleteNodeFailSilent(watcher, hri);
} catch (KeeperException ke) {
 server.abort("Unexpected ZK exception deleting node " + hri, ke);

代码示例来源:origin: harbby/presto-connectors

/**
 * Creates a new unassigned node in the OFFLINE state for the specified region.
 *
 * <p>Does not transition nodes from other states.  If a node already exists
 * for this region, a {@link org.apache.zookeeper.KeeperException.NodeExistsException} 
 * will be thrown.
 *
 * <p>Sets a watcher on the unassigned region node if the method is successful.
 *
 * <p>This method should only be used during cluster startup and the enabling
 * of a table.
 *
 * @param zkw zk reference
 * @param region region to be created as offline
 * @param serverName server transition will happen on
 * @throws KeeperException if unexpected zookeeper exception
 * @throws KeeperException.NodeExistsException if node already exists
 */
public static void createNodeOffline(ZooKeeperWatcher zkw, HRegionInfo region,
  ServerName serverName)
throws KeeperException, KeeperException.NodeExistsException {
 createNodeOffline(zkw, region, serverName, EventType.M_ZK_REGION_OFFLINE);
}

相关文章