Class HostRegexTableLoadBalancer
- java.lang.Object
-
- org.apache.accumulo.server.master.balancer.TabletBalancer
-
- org.apache.accumulo.server.master.balancer.TableLoadBalancer
-
- org.apache.accumulo.server.master.balancer.HostRegexTableLoadBalancer
-
- All Implemented Interfaces:
TabletBalancer
@Deprecated(since="2.1.0") public class HostRegexTableLoadBalancer extends TableLoadBalancer
Deprecated.since 2.1.0. UseHostRegexTableLoadBalancer
insteadThis balancer creates groups of tablet servers using user-provided regular expressions over the tablet server hostnames. Then it delegates to the table balancer to balance the tablets within the resulting group of tablet servers. All tablet servers that do not match a regex are grouped into a default group.
Regex properties for this balancer are specified as:
table.custom.balancer.host.regex.<tablename>=<regex>
Periodically (default 5m) this balancer will check to see if a tablet server is hosting tablets that it should not be according to the regex configuration. If this occurs then the offending tablets will be reassigned. This would cover the case where the configuration is changed and the manager is restarted while the tablet servers are up. To change the out of bounds check time period, set the following property:
table.custom.balancer.host.regex.oob.period=5m
Regex matching can be based on either the host name (default) or host ip address. To set this balancer to match the regular expressions to the tablet server IP address, then set the following property:
table.custom.balancer.host.regex.is.ip=true
It's possible that this balancer may create a lot of migrations. To limit the number of migrations that are created during a balance call, set the following property (default 250):
table.custom.balancer.host.regex.concurrent.migrations This balancer can continue balancing even if there are outstanding migrations. To limit the number of outstanding migrations in which this balancer will continue balancing, set the following property (default 0):
table.custom.balancer.host.regex.max.outstanding.migrations
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.accumulo.server.master.balancer.TabletBalancer
TabletBalancer.BalancerProblem, TabletBalancer.NoTservers, TabletBalancer.OutstandingMigrations
-
Nested classes/interfaces inherited from interface org.apache.accumulo.core.spi.balancer.TabletBalancer
TabletBalancer.AssignmentParameters, TabletBalancer.BalanceParameters
-
-
Field Summary
Fields Modifier and Type Field Description protected static String
DEFAULT_POOL
Deprecated.static String
HOST_BALANCER_OOB_CHECK_KEY
Deprecated.static String
HOST_BALANCER_OUTSTANDING_MIGRATIONS_KEY
Deprecated.static String
HOST_BALANCER_PREFIX
Deprecated.static String
HOST_BALANCER_REGEX_MAX_MIGRATIONS_KEY
Deprecated.static String
HOST_BALANCER_REGEX_USING_IPS_KEY
Deprecated.-
Fields inherited from class org.apache.accumulo.server.master.balancer.TabletBalancer
context, TIME_BETWEEN_BALANCER_WARNINGS
-
-
Constructor Summary
Constructors Constructor Description HostRegexTableLoadBalancer()
Deprecated.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description long
balance(SortedMap<TServerInstance,TabletServerStatus> current, Set<KeyExtent> migrations, List<TabletMigration> migrationsOut)
Deprecated.Ask the balancer if any migrations are necessary.void
getAssignments(SortedMap<TServerInstance,TabletServerStatus> current, Map<KeyExtent,TServerInstance> unassigned, Map<KeyExtent,TServerInstance> assignments)
Deprecated.Assign tablets to tablet servers.int
getMaxMigrations()
Deprecated.int
getMaxOutstandingMigrations()
Deprecated.protected String
getNameFromIp(String hostIp)
Deprecated.long
getOobCheckMillis()
Deprecated.protected String
getPoolNameForTable(String tableName)
Deprecated.Matches table name against pool names, returns matching pool name or DEFAULT_POOL.protected List<String>
getPoolNamesForHost(String host)
Deprecated.Matches host against the regexes and returns the matching pool namesMap<String,Pattern>
getPoolNameToRegexPattern()
Deprecated.void
init(ServerContext context)
Deprecated.Initialize the TabletBalancer.boolean
isIpBasedRegex()
Deprecated.protected Map<String,SortedMap<TServerInstance,TabletServerStatus>>
splitCurrentByRegex(SortedMap<TServerInstance,TabletServerStatus> current)
Deprecated.Group the set of current tservers by pool name.String
toString()
Deprecated.-
Methods inherited from class org.apache.accumulo.server.master.balancer.TableLoadBalancer
getBalancerForTable, getLoadBalancerClassNameForTable, getTableOperations
-
Methods inherited from class org.apache.accumulo.server.master.balancer.TabletBalancer
balance, checkMigrationSanity, constraintNotMet, getAssignments, getOnlineTabletsForTable, init, init, resetBalancerErrors
-
-
-
-
Field Detail
-
HOST_BALANCER_PREFIX
public static final String HOST_BALANCER_PREFIX
Deprecated.
-
HOST_BALANCER_OOB_CHECK_KEY
public static final String HOST_BALANCER_OOB_CHECK_KEY
Deprecated.
-
HOST_BALANCER_REGEX_USING_IPS_KEY
public static final String HOST_BALANCER_REGEX_USING_IPS_KEY
Deprecated.
-
HOST_BALANCER_REGEX_MAX_MIGRATIONS_KEY
public static final String HOST_BALANCER_REGEX_MAX_MIGRATIONS_KEY
Deprecated.
-
DEFAULT_POOL
protected static final String DEFAULT_POOL
Deprecated.- See Also:
- Constant Field Values
-
HOST_BALANCER_OUTSTANDING_MIGRATIONS_KEY
public static final String HOST_BALANCER_OUTSTANDING_MIGRATIONS_KEY
Deprecated.
-
-
Method Detail
-
splitCurrentByRegex
protected Map<String,SortedMap<TServerInstance,TabletServerStatus>> splitCurrentByRegex(SortedMap<TServerInstance,TabletServerStatus> current)
Deprecated.Group the set of current tservers by pool name. Tservers that don't match a regex are put into a default pool. This could be expensive in the terms of the amount of time to recompute the groups, so HOST_BALANCER_POOL_RECHECK_KEY should be specified in the terms of minutes, not seconds or less.- Parameters:
current
- map of current tservers- Returns:
- current servers grouped by pool name, if not a match it is put into a default pool.
-
getPoolNamesForHost
protected List<String> getPoolNamesForHost(String host)
Deprecated.Matches host against the regexes and returns the matching pool names- Parameters:
host
- tablet server host- Returns:
- pool names, will return default pool if host matches more no regex
-
getNameFromIp
protected String getNameFromIp(String hostIp) throws UnknownHostException
Deprecated.- Throws:
UnknownHostException
-
getPoolNameForTable
protected String getPoolNameForTable(String tableName)
Deprecated.Matches table name against pool names, returns matching pool name or DEFAULT_POOL.- Parameters:
tableName
- name of table- Returns:
- tablet server pool name (table name or DEFAULT_POOL)
-
getMaxMigrations
public int getMaxMigrations()
Deprecated.
-
getMaxOutstandingMigrations
public int getMaxOutstandingMigrations()
Deprecated.
-
getOobCheckMillis
public long getOobCheckMillis()
Deprecated.
-
isIpBasedRegex
public boolean isIpBasedRegex()
Deprecated.
-
init
public void init(ServerContext context)
Deprecated.Description copied from class:TabletBalancer
Initialize the TabletBalancer. This gives the balancer the opportunity to read the configuration.- Overrides:
init
in classTabletBalancer
-
getAssignments
public void getAssignments(SortedMap<TServerInstance,TabletServerStatus> current, Map<KeyExtent,TServerInstance> unassigned, Map<KeyExtent,TServerInstance> assignments)
Deprecated.Description copied from class:TabletBalancer
Assign tablets to tablet servers. This method is called whenever the manager finds tablets that are unassigned.- Overrides:
getAssignments
in classTableLoadBalancer
- 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 long balance(SortedMap<TServerInstance,TabletServerStatus> current, Set<KeyExtent> migrations, List<TabletMigration> migrationsOut)
Deprecated.Description copied from class:TabletBalancer
Ask 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.- Overrides:
balance
in classTableLoadBalancer
- 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.
-
-