org.apache.hadoop.hbase.zookeeper
Class MasterAddressTracker

java.lang.Object
  extended by org.apache.hadoop.hbase.zookeeper.ZooKeeperListener
      extended by org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker
          extended by org.apache.hadoop.hbase.zookeeper.MasterAddressTracker

@InterfaceAudience.Private
public class MasterAddressTracker
extends ZooKeeperNodeTracker

Manages the location of the current active Master for the RegionServer.

Listens for ZooKeeper events related to the master address. The node /master will contain the address of the current master. This listener is interested in NodeDeleted and NodeCreated events on /master.

Utilizes ZooKeeperNodeTracker for zk interactions.

You can get the current master via getMasterAddress() or via getMasterAddress(ZooKeeperWatcher) if you do not have a running instance of this Tracker in your context.

This class also includes utility for interacting with the master znode, for writing and reading the znode content.


Field Summary
 
Fields inherited from class org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker
abortable, node
 
Fields inherited from class org.apache.hadoop.hbase.zookeeper.ZooKeeperListener
watcher
 
Constructor Summary
MasterAddressTracker(ZooKeeperWatcher watcher, Abortable abortable)
          Construct a master address listener with the specified zookeeper reference.
 
Method Summary
static boolean deleteIfEquals(ZooKeeperWatcher zkw, String content)
          delete the master znode if its content is same as the parameter
 ServerName getMasterAddress()
          Get the address of the current master if one is available.
 ServerName getMasterAddress(boolean refresh)
          Get the address of the current master if one is available.
static ServerName getMasterAddress(ZooKeeperWatcher zkw)
          Get master address.
 boolean hasMaster()
          Check if there is a master available.
static boolean setMasterAddress(ZooKeeperWatcher zkw, String znode, ServerName master)
          Set master address into the master znode or into the backup subdirectory of backup masters; switch off the passed in znode path.
 
Methods inherited from class org.apache.hadoop.hbase.zookeeper.ZooKeeperNodeTracker
blockUntilAvailable, blockUntilAvailable, checkIfBaseNodeAvailable, getData, getNode, nodeCreated, nodeDataChanged, nodeDeleted, start, stop
 
Methods inherited from class org.apache.hadoop.hbase.zookeeper.ZooKeeperListener
nodeChildrenChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MasterAddressTracker

public MasterAddressTracker(ZooKeeperWatcher watcher,
                            Abortable abortable)
Construct a master address listener with the specified zookeeper reference.

This constructor does not trigger any actions, you must call methods explicitly. Normally you will just want to execute ZooKeeperNodeTracker.start() to begin tracking of the master address.

Parameters:
watcher - zk reference and watcher
abortable - abortable in case of fatal error
Method Detail

getMasterAddress

public ServerName getMasterAddress()
Get the address of the current master if one is available. Returns null if no current master.

Returns:
Server name or null if timed out.

getMasterAddress

public ServerName getMasterAddress(boolean refresh)
Get the address of the current master if one is available. Returns null if no current master. If refresh is set, try to load the data from ZK again, otherwise, cached data will be used.

Parameters:
refresh - whether to refresh the data by calling ZK directly.
Returns:
Server name or null if timed out.

getMasterAddress

public static ServerName getMasterAddress(ZooKeeperWatcher zkw)
                                   throws org.apache.zookeeper.KeeperException,
                                          IOException
Get master address. Use this instead of getMasterAddress() if you do not have an instance of this tracker in your context.

Parameters:
zkw - ZooKeeperWatcher to use
Returns:
ServerName stored in the the master address znode or null if no znode present.
Throws:
org.apache.zookeeper.KeeperException
IOException

setMasterAddress

public static boolean setMasterAddress(ZooKeeperWatcher zkw,
                                       String znode,
                                       ServerName master)
                                throws org.apache.zookeeper.KeeperException
Set master address into the master znode or into the backup subdirectory of backup masters; switch off the passed in znode path.

Parameters:
zkw - The ZooKeeperWatcher to use.
znode - Where to create the znode; could be at the top level or it could be under backup masters
master - ServerName of the current master
Returns:
true if node created, false if not; a watch is set in both cases
Throws:
org.apache.zookeeper.KeeperException

hasMaster

public boolean hasMaster()
Check if there is a master available.

Returns:
true if there is a master set, false if not.

deleteIfEquals

public static boolean deleteIfEquals(ZooKeeperWatcher zkw,
                                     String content)
delete the master znode if its content is same as the parameter



Copyright © 2013 The Apache Software Foundation. All Rights Reserved.