Class GroupBalancer
java.lang.Object
org.apache.accumulo.core.spi.balancer.GroupBalancer
- All Implemented Interfaces:
TabletBalancer
- Direct Known Subclasses:
RegexGroupBalancer
A balancer that evenly spreads groups of tablets across all tablet server. This balancer
accomplishes the following two goals :
- Evenly spreads each group across all tservers.
- Minimizes the total number of groups on each tserver.
To use this balancer you must extend it and implement getPartitioner(). See
RegexGroupBalancer as an example.
- 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.voidAssign tablets to tablet servers.protected Map<TabletId,TabletServerId> protected intThe maximum number of migrations to perform in a single pass.protected longThe amount of time to wait between balancing.voidinit(BalancerEnvironment balancerEnvironment) Initialize the TabletBalancer.protected booleanshouldBalance(SortedMap<TabletServerId, TServerStatus> current, Set<TabletId> migrations)
-
Field Details
-
environment
-
lastRunTimes
-
-
Constructor Details
-
GroupBalancer
-
-
Method Details
-
init
Description copied from interface:TabletBalancerInitialize the TabletBalancer. This gives the balancer the opportunity to read the configuration.- Specified by:
initin interfaceTabletBalancer
-
getPartitioner
- Returns:
- A function that groups tablets into named groups.
-
getLocationProvider
-
getWaitTime
protected long getWaitTime()The amount of time to wait between balancing. -
getMaxMigrations
protected int getMaxMigrations()The maximum number of migrations to perform in a single pass. -
shouldBalance
protected boolean shouldBalance(SortedMap<TabletServerId, TServerStatus> current, Set<TabletId> migrations) - Returns:
- Examine current tserver and migrations and return true if balancing should occur.
-
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.
-