Class SimpleLoadBalancer
java.lang.Object
org.apache.accumulo.core.spi.balancer.SimpleLoadBalancer
- All Implemented Interfaces:
TabletBalancer
A simple tablet balancer that attempts to spread tablets out evenly across all available tablet
servers. The goal is to achieve the same number of tablets on each tablet server.
Initial assignments attempt to maintain locality by assigning tablets to their previous location if possible, but otherwise assignments are made in a random fashion across all available tablet servers.
This balancer replaces the deprecated org.apache.accumulo.server.master.balancer.DefaultLoadBalancer which will be removed in a future release. This balancer has the same functionality but uses the stable SPI which does not expose internal types on public methods.
- Since:
- 2.1.0
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.apache.accumulo.core.spi.balancer.TabletBalancer
TabletBalancer.AssignmentParameters, TabletBalancer.BalanceParameters -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionlongAsk the balancer if any migrations are necessary.getAssignment(SortedMap<TabletServerId, TServerStatus> locations, TabletServerId last) voidAssign tablets to tablet servers.booleangetMigrations(Map<TabletServerId, TServerStatus> current, List<TabletMigration> result) protected List<TabletStatistics>getOnlineTabletsForTable(TabletServerId tabletServerId, TableId tableId) voidinit(BalancerEnvironment balancerEnvironment) Initialize the TabletBalancer.
-
Field Details
-
environment
-
-
Constructor Details
-
SimpleLoadBalancer
public SimpleLoadBalancer() -
SimpleLoadBalancer
-
-
Method Details
-
init
Description copied from interface:TabletBalancerInitialize the TabletBalancer. This gives the balancer the opportunity to read the configuration.- Specified by:
initin interfaceTabletBalancer
-
getAssignment
public TabletServerId getAssignment(SortedMap<TabletServerId, TServerStatus> locations, TabletServerId last) -
getMigrations
public boolean getMigrations(Map<TabletServerId, TServerStatus> current, List<TabletMigration> result) -
getOnlineTabletsForTable
protected List<TabletStatistics> getOnlineTabletsForTable(TabletServerId tabletServerId, TableId tableId) throws AccumuloSecurityException, AccumuloException -
getAssignments
Description copied from interface:TabletBalancerAssign tablets to tablet servers. This method is called whenever the manager finds tablets that are unassigned.- Specified by:
getAssignmentsin interfaceTabletBalancer
-
balance
Description copied from interface:TabletBalancerAsk the balancer if any migrations are necessary. If the balancer is going to self-abort due to some environmental constraint (e.g. it requires some minimum number of tservers, or a maximum number of outstanding migrations), it should issue a log message to alert operators. The message should be at WARN normally and at ERROR if the balancer knows that the problem can not self correct. It should not issue these messages more than once a minute. This method will not be called when there are unassigned tablets.- Specified by:
balancein interfaceTabletBalancer- Returns:
- the time, in milliseconds, to wait before re-balancing.
-