hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ted Yu (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-7060) region load balancing by table does not handle the case where a table's region count is less than the number of the RS in the cluter
Date Tue, 30 Oct 2012 02:06:12 GMT

     [ https://issues.apache.org/jira/browse/HBASE-7060?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ted Yu updated HBASE-7060:
--------------------------

    Attachment: 7060-94.txt

{code}
Running org.apache.hadoop.hbase.master.TestDefaultLoadBalancer
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.606 sec
Running org.apache.hadoop.hbase.TestRegionRebalancing
2012-10-29 19:01:47.741 java[47270:1903] Unable to load realm mapping info from SCDynamicStore
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 95.949 sec
{code}
Running 0.94 test suite now.
                
> region load balancing by table does not handle the case where a table's region count
is less than the number of the RS in the cluter
> ------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-7060
>                 URL: https://issues.apache.org/jira/browse/HBASE-7060
>             Project: HBase
>          Issue Type: Bug
>          Components: master
>    Affects Versions: 0.92.0
>            Reporter: Tianying Chang
>            Assignee: Ted Yu
>         Attachments: 7060-94.txt, HBASE-7060.patch
>
>
> When the table's region count is less than the count of region servers, the region balance
algorithm will not move the region. For example, the cluster has 100 RS, the table has 50
regions sitting on one RS, they will not be moved to any of the other 99 RS.
> This is because the algorithm did not calculate the under-loaded RS correctly. This is
how the algorithm works with the above example:
> avg-regions-per-RS=0.5
> min-RS-per-RS=0
> max-RS-per-RS=1
> when they calculate the under loaded RS, the code is as below. Since regionCount=0, which
is always >=min, so it will always skip, therefore, no underloaded RS are found.
> Map<ServerName, Integer> underloadedServers = new HashMap<ServerName, Integer>();
> for (Map.Entry<ServerAndLoad, List<HRegionInfo>> server:
> serversByLoad.entrySet()) {
> int regionCount = server.getKey().getLoad();
> if (regionCount >= min) { break; }
> underloadedServers.put(server.getKey().getServerName(), min - regionCount);
> }
> Later the function returns since underloaded RS size is 0
> if (serverUnerloaded ==0) return regionsToReturn;

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message