|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.hadoop.hbase.master.ServerManager
@InterfaceAudience.Private public class ServerManager
The ServerManager class manages info about region servers.
Maintains lists of online and dead servers. Processes the startups, shutdowns, and deaths of region servers.
Servers are distinguished in two different ways. A given server has a location, specified by hostname and port, and of which there can only be one online at any given time. A server instance is specified by the location (hostname and port) as well as the startcode (timestamp from when the server was started). This is used to differentiate a restarted instance of a given server from the original instance.
If a sever is known not to be running any more, it is called dead. The dead server needs to be handled by a ServerShutdownHandler. If the handler is not enabled yet, the server can't be handled right away so it is queued up. After the handler is enabled, the server will be submitted to a handler to handle. However, the handler may be just partially enabled. If so, the server cannot be fully processed, and be queued up for further processing. A server is fully processed only after the handler is fully enabled and has completed the handling.
Field Summary | |
---|---|
static String |
WAIT_ON_REGIONSERVERS_INTERVAL
|
static String |
WAIT_ON_REGIONSERVERS_MAXTOSTART
|
static String |
WAIT_ON_REGIONSERVERS_MINTOSTART
|
static String |
WAIT_ON_REGIONSERVERS_TIMEOUT
|
Constructor Summary | |
---|---|
ServerManager(Server master,
MasterServices services)
Constructor. |
Method Summary | |
---|---|
boolean |
addServerToDrainList(ServerName sn)
|
boolean |
areDeadServersInProgress()
Checks if any dead servers are currently in progress. |
List<ServerName> |
createDestinationServersList()
Calls createDestinationServersList(org.apache.hadoop.hbase.ServerName) without server to exclude. |
List<ServerName> |
createDestinationServersList(ServerName serverToExclude)
Creates a list of possible destinations for a region. |
void |
expireServer(ServerName serverName)
|
double |
getAverageLoad()
Compute the average load across all region servers. |
DeadServer |
getDeadServers()
|
List<ServerName> |
getDrainingServersList()
|
long |
getLastFlushedSequenceId(byte[] encodedRegionName)
|
ServerLoad |
getLoad(ServerName serverName)
|
Map<ServerName,ServerLoad> |
getOnlineServers()
|
List<ServerName> |
getOnlineServersList()
|
boolean |
isClusterShutdown()
|
boolean |
isServerDead(ServerName serverName)
Check if a server is known to be dead. |
boolean |
isServerOnline(ServerName serverName)
|
boolean |
isServerReachable(ServerName server)
Check if a region server is reachable and has the expected start code |
void |
processDeadServer(ServerName serverName)
|
void |
processDeadServer(ServerName serverName,
boolean shouldSplitHlog)
|
void |
registerListener(ServerListener listener)
Add the listener to the notification list. |
boolean |
removeServerFromDrainList(ServerName sn)
|
boolean |
sendRegionClose(ServerName server,
HRegionInfo region,
int versionOfClosingNode)
|
boolean |
sendRegionClose(ServerName server,
HRegionInfo region,
int versionOfClosingNode,
ServerName dest,
boolean transitionInZK)
Sends an CLOSE RPC to the specified server to close the specified region. |
RegionOpeningState |
sendRegionOpen(ServerName server,
HRegionInfo region,
int versionOfOfflineNode,
List<ServerName> favoredNodes)
Sends an OPEN RPC to the specified server to open the specified region. |
List<RegionOpeningState> |
sendRegionOpen(ServerName server,
List<Triple<HRegionInfo,Integer,List<ServerName>>> regionOpenInfos)
Sends an OPEN RPC to the specified server to open the specified region. |
void |
sendRegionsMerge(ServerName server,
HRegionInfo region_a,
HRegionInfo region_b,
boolean forcible)
Sends an MERGE REGIONS RPC to the specified server to merge the specified regions. |
void |
shutdownCluster()
|
void |
stop()
Stop the ServerManager. |
boolean |
unregisterListener(ServerListener listener)
Remove the listener from the notification list. |
void |
waitForRegionServers(MonitoredTask status)
Wait for the region servers to report in. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String WAIT_ON_REGIONSERVERS_MAXTOSTART
public static final String WAIT_ON_REGIONSERVERS_MINTOSTART
public static final String WAIT_ON_REGIONSERVERS_TIMEOUT
public static final String WAIT_ON_REGIONSERVERS_INTERVAL
Constructor Detail |
---|
public ServerManager(Server master, MasterServices services) throws IOException
master
- services
-
ZooKeeperConnectionException
IOException
Method Detail |
---|
public void registerListener(ServerListener listener)
listener
- The ServerListener to registerpublic boolean unregisterListener(ServerListener listener)
listener
- The ServerListener to unregisterpublic long getLastFlushedSequenceId(byte[] encodedRegionName)
public ServerLoad getLoad(ServerName serverName)
serverName
-
public double getAverageLoad()
public Map<ServerName,ServerLoad> getOnlineServers()
public DeadServer getDeadServers()
public boolean areDeadServersInProgress()
public void expireServer(ServerName serverName)
public void processDeadServer(ServerName serverName)
public void processDeadServer(ServerName serverName, boolean shouldSplitHlog)
public boolean removeServerFromDrainList(ServerName sn)
public boolean addServerToDrainList(ServerName sn)
public RegionOpeningState sendRegionOpen(ServerName server, HRegionInfo region, int versionOfOfflineNode, List<ServerName> favoredNodes) throws IOException
Open should not fail but can if server just crashed.
server
- server to open a regionregion
- region to openversionOfOfflineNode
- that needs to be present in the offline node
when RS tries to change the state from OFFLINE to other states.favoredNodes
-
IOException
public List<RegionOpeningState> sendRegionOpen(ServerName server, List<Triple<HRegionInfo,Integer,List<ServerName>>> regionOpenInfos) throws IOException
Open should not fail but can if server just crashed.
server
- server to open a regionregionOpenInfos
- info of a list of regions to open
IOException
public boolean sendRegionClose(ServerName server, HRegionInfo region, int versionOfClosingNode, ServerName dest, boolean transitionInZK) throws IOException
A region server could reject the close request because it either does not have the specified region or the region is being split.
server
- server to open a regionregion
- region to openversionOfClosingNode
- the version of znode to compare when RS transitions the znode from
CLOSING state.dest
- - if the region is moved to another server, the destination server. null otherwise.
IOException
public boolean sendRegionClose(ServerName server, HRegionInfo region, int versionOfClosingNode) throws IOException
IOException
public void sendRegionsMerge(ServerName server, HRegionInfo region_a, HRegionInfo region_b, boolean forcible) throws IOException
A region server could reject the close request because it either does not have the specified region.
server
- server to merge regionsregion_a
- region to mergeregion_b
- region to mergeforcible
- true if do a compulsory merge, otherwise we will only merge
two adjacent regions
IOException
public boolean isServerReachable(ServerName server)
public void waitForRegionServers(MonitoredTask status) throws InterruptedException
InterruptedException
public List<ServerName> getOnlineServersList()
public List<ServerName> getDrainingServersList()
public boolean isServerOnline(ServerName serverName)
public boolean isServerDead(ServerName serverName)
public void shutdownCluster()
public boolean isClusterShutdown()
public void stop()
public List<ServerName> createDestinationServersList(ServerName serverToExclude)
serverToExclude
- can be null if there is no server to excludepublic List<ServerName> createDestinationServersList()
createDestinationServersList(org.apache.hadoop.hbase.ServerName)
without server to exclude.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |