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

Lars Hofhansl updated HBASE-7060:
---------------------------------

    Resolution: Fixed
        Status: Resolved  (was: Patch Available)

Marking as fixed.
                
> Region load balancing by table does not handle the case where a table's 
> region count is lower than the number of the RS in the cluster
> --------------------------------------------------------------------------------------------------------------------------------------
>
>                 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
>             Fix For: 0.94.3, 0.96.0
>
>         Attachments: 7060-94.txt, 7060-94-v2.txt, 7060-test-tentative-94.txt, 
> 7060-trunk.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

Reply via email to