[
https://issues.apache.org/jira/browse/HBASE-13103?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mikhail Antonov updated HBASE-13103:
------------------------------------
Attachment: HBASE-13103-v1.patch
Here's v1 patch (will update RB as well); still draft-like a bit. Summary:
- add a field in table descriptor for normalization on-off (part of standard
table name->value configuration), so should be able to update that from shell
as well.
- addressed most of comments from RB, notably an issue when non-adjacent
regions would be attempted to get merged.
Open questions (still need discussion/improvements in this or next patch):
- I added shuffle in the code which selects next table for
normalization..Looking at the similar codepath for balancer - we don't really
do parallel balancing for tables in seems. Running normalization independently
for each table in parallel would require adding new EventType and/or
ExecutorType (or we may reuse ExecutorType#MASTER_TABLE_OPERATIONS here). Not
sure if that's needed in this patch. Thoughts?
- Didn't do part about ideal (target) size yet, this needs a bit more thinking.
Still thinking about that as a baseline to create more sophisticated
normalizers (like CompactionAwareNormalizer, which would only run if compaction
happened in last hour), as I think I need more input from operational side.
[~ndimiduk] what do you think?
> [ergonomics] add region size balancing as a feature of master
> -------------------------------------------------------------
>
> Key: HBASE-13103
> URL: https://issues.apache.org/jira/browse/HBASE-13103
> Project: HBase
> Issue Type: Improvement
> Components: Balancer, Usability
> Reporter: Nick Dimiduk
> Assignee: Mikhail Antonov
> Fix For: 2.0.0, 1.2.0
>
> Attachments: HBASE-13103-v0.patch, HBASE-13103-v1.patch
>
>
> Often enough, folks miss-judge split points or otherwise end up with a
> suboptimal number of regions. We should have an automated, reliable way to
> "reshape" or "balance" a table's region boundaries. This would be for tables
> that contain existing data. This might look like:
> {noformat}
> Admin#reshapeTable(TableName, int numSplits);
> {noformat}
> or from the shell:
> {noformat}
> > reshape TABLE, numSplits
> {noformat}
> Better still would be to have a maintenance process, similar to the existing
> Balancer that runs AssignmentManager on an interval, to run the above
> "reshape" operation on an interval. That way, the cluster will automatically
> self-correct toward a desirable state.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)