org.apache.accumulo.server.master.balancer
Class TabletBalancer

java.lang.Object
  extended by org.apache.accumulo.server.master.balancer.TabletBalancer
Direct Known Subclasses:
ChaoticLoadBalancer, DefaultLoadBalancer, TableLoadBalancer

public abstract class TabletBalancer
extends Object


Constructor Summary
TabletBalancer()
           
 
Method Summary
abstract  long balance(SortedMap<TServerInstance,TabletServerStatus> current, Set<KeyExtent> migrations, List<TabletMigration> migrationsOut)
          Ask the balancer if any migrations are necessary.
static List<TabletMigration> checkMigrationSanity(Set<TServerInstance> current, List<TabletMigration> migrations)
          Utility to ensure that the migrations from balance() are consistent: Tablet objects are not null Source and destination tablet servers are not null and current
abstract  void getAssignments(SortedMap<TServerInstance,TabletServerStatus> current, Map<KeyExtent,TServerInstance> unassigned, Map<KeyExtent,TServerInstance> assignments)
          Assign tablets to tablet servers.
 List<TabletStats> getOnlineTabletsForTable(TServerInstance tserver, String tableId)
          Fetch the tablets for the given table by asking the tablet server.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TabletBalancer

public TabletBalancer()
Method Detail

getAssignments

public abstract void getAssignments(SortedMap<TServerInstance,TabletServerStatus> current,
                                    Map<KeyExtent,TServerInstance> unassigned,
                                    Map<KeyExtent,TServerInstance> assignments)
Assign tablets to tablet servers. This method is called whenever the master finds tablets that are unassigned.

Parameters:
current - The current table-summary state of all the online tablet servers. Read-only. The TabletServerStatus for each server may be null if the tablet server has not yet responded to a recent request for status.
unassigned - A map from unassigned tablet to the last known tablet server. Read-only.
assignments - A map from tablet to assigned server. Write-only.

balance

public abstract long balance(SortedMap<TServerInstance,TabletServerStatus> current,
                             Set<KeyExtent> migrations,
                             List<TabletMigration> migrationsOut)
Ask the balancer if any migrations are necessary.

Parameters:
current - The current table-summary state of all the online tablet servers. Read-only.
migrations - the current set of migrations. Read-only.
migrationsOut - new migrations to perform; should not contain tablets in the current set of migrations. Write-only.
Returns:
the time, in milliseconds, to wait before re-balancing. This method will not be called when there are unassigned tablets.

getOnlineTabletsForTable

public List<TabletStats> getOnlineTabletsForTable(TServerInstance tserver,
                                                  String tableId)
                                           throws ThriftSecurityException,
                                                  org.apache.thrift.TException
Fetch the tablets for the given table by asking the tablet server. Useful if your balance strategy needs details at the tablet level to decide what tablets to move.

Parameters:
tserver - The tablet server to ask.
tableId - The table id
Returns:
a list of tablet statistics
Throws:
ThriftSecurityException - tablet server disapproves of your internal System password.
org.apache.thrift.TException - any other problem

checkMigrationSanity

public static List<TabletMigration> checkMigrationSanity(Set<TServerInstance> current,
                                                         List<TabletMigration> migrations)
Utility to ensure that the migrations from balance() are consistent:

Parameters:
current -
migrations -
Returns:
A list of TabletMigration object that passed sanity checks.


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