org.apache.hadoop.hbase.master
Interface LoadBalancer

All Superinterfaces:
org.apache.hadoop.conf.Configurable
All Known Implementing Classes:
BaseLoadBalancer, DefaultLoadBalancer, StochasticLoadBalancer

@InterfaceAudience.Public
public interface LoadBalancer
extends org.apache.hadoop.conf.Configurable

Makes decisions about the placement and movement of Regions across RegionServers.

Cluster-wide load balancing will occur only when there are no regions in transition and according to a fixed period of a time using balanceCluster(Map).

Inline region placement with immediateAssignment(java.util.List, java.util.List) can be used when the Master needs to handle closed regions that it currently does not have a destination set for. This can happen during master failover.

On cluster startup, bulk assignment can be used to determine locations for all Regions in a cluster.

This classes produces plans for the AssignmentManager to execute.


Method Summary
 List<RegionPlan> balanceCluster(Map<ServerName,List<HRegionInfo>> clusterState)
          Perform the major balance operation
 Map<HRegionInfo,ServerName> immediateAssignment(List<HRegionInfo> regions, List<ServerName> servers)
          Sync assign a region
 ServerName randomAssignment(HRegionInfo regionInfo, List<ServerName> servers)
          Get a random region server from the list
 Map<ServerName,List<HRegionInfo>> retainAssignment(Map<HRegionInfo,ServerName> regions, List<ServerName> servers)
          Assign regions to the previously hosting region server
 Map<ServerName,List<HRegionInfo>> roundRobinAssignment(List<HRegionInfo> regions, List<ServerName> servers)
          Perform a Round Robin assignment of regions.
 void setClusterStatus(ClusterStatus st)
          Set the current cluster status.
 void setMasterServices(MasterServices masterServices)
          Set the master service.
 
Methods inherited from interface org.apache.hadoop.conf.Configurable
getConf, setConf
 

Method Detail

setClusterStatus

void setClusterStatus(ClusterStatus st)
Set the current cluster status. This allows a LoadBalancer to map host name to a server

Parameters:
st -

setMasterServices

void setMasterServices(MasterServices masterServices)
Set the master service.

Parameters:
masterServices -

balanceCluster

List<RegionPlan> balanceCluster(Map<ServerName,List<HRegionInfo>> clusterState)
Perform the major balance operation

Parameters:
clusterState -
Returns:
List of plans

roundRobinAssignment

Map<ServerName,List<HRegionInfo>> roundRobinAssignment(List<HRegionInfo> regions,
                                                       List<ServerName> servers)
Perform a Round Robin assignment of regions.

Parameters:
regions -
servers -
Returns:
Map of servername to regioninfos

retainAssignment

Map<ServerName,List<HRegionInfo>> retainAssignment(Map<HRegionInfo,ServerName> regions,
                                                   List<ServerName> servers)
Assign regions to the previously hosting region server

Parameters:
regions -
servers -
Returns:
List of plans

immediateAssignment

Map<HRegionInfo,ServerName> immediateAssignment(List<HRegionInfo> regions,
                                                List<ServerName> servers)
Sync assign a region

Parameters:
regions -
servers -
Returns:
Map regioninfos to servernames

randomAssignment

ServerName randomAssignment(HRegionInfo regionInfo,
                            List<ServerName> servers)
Get a random region server from the list

Parameters:
regionInfo - Region for which this selection is being done.
servers -
Returns:
Servername


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