[ 
https://issues.apache.org/jira/browse/HBASE-8432?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13708506#comment-13708506
 ] 

Ted Yu commented on HBASE-8432:
-------------------------------

Second patch should have been taken at the root of workspace.
{code}
         if(regionCount >= max) {
           break;
         }
+        BalanceInfo balanceInfo = 
serverBalanceInfo.get(server.getKey().getServerName());
+        if(balanceInfo != null) {
+          regionCount += balanceInfo.getNumRegionsAdded();
+        }
+        if(regionCount >= max) {
+               continue;
+        }
{code}
If accounting for BalanceInfo is moved to above 'if(regionCount >= max)', we 
can save one check for 'if(regionCount >= max)'

Please attach trunk patch as well.
                
> a table with unbalanced regions will balance indefinitely with the 
> 'org.apache.hadoop.hbase.master.DefaultLoadBalancer'
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-8432
>                 URL: https://issues.apache.org/jira/browse/HBASE-8432
>             Project: HBase
>          Issue Type: Bug
>          Components: Balancer
>    Affects Versions: 0.94.5
>         Environment: Linux 2.6.32-el5.x86_64
>            Reporter: Wang Qiang
>            Priority: Critical
>         Attachments: patch_20130425_01.txt, patch.txt
>
>
> it happened that a table with unbalanced regions, as follows in my 
> cluster(the cluster has 20 regionservers, the table has 12 regions):
> http://hadoopdev19.cm6:60030/ 1
> http://hadoopdev8.cm6:60030/  2
> http://hadoopdev17.cm6:60030/ 1
> http://hadoopdev12.cm6:60030/ 1
> http://hadoopdev5.cm6:60030/  1
> http://hadoopdev9.cm6:60030/  1
> http://hadoopdev22.cm6:60030/ 1
> http://hadoopdev11.cm6:60030/ 1
> http://hadoopdev21.cm6:60030/ 1
> http://hadoopdev16.cm6:60030/ 1
> http://hadoopdev10.cm6:60030/ 1
> with the 'org.apache.hadoop.hbase.master.DefaultLoadBalancer', after 5 times 
> load-balances, the table are still unbalanced:
> http://hadoopdev3.cm6:60030/  1
> http://hadoopdev20.cm6:60030/ 1
> http://hadoopdev4.cm6:60030/  2
> http://hadoopdev18.cm6:60030/ 1
> http://hadoopdev12.cm6:60030/ 1
> http://hadoopdev14.cm6:60030/ 1
> http://hadoopdev15.cm6:60030/ 1
> http://hadoopdev6.cm6:60030/  1
> http://hadoopdev13.cm6:60030/ 1
> http://hadoopdev11.cm6:60030/ 1
> http://hadoopdev10.cm6:60030/ 1
> http://hadoopdev19.cm6:60030/ 1
> http://hadoopdev17.cm6:60030/ 1
> http://hadoopdev8.cm6:60030/  1
> http://hadoopdev5.cm6:60030/  1
> http://hadoopdev12.cm6:60030/ 1
> http://hadoopdev22.cm6:60030/ 1
> http://hadoopdev11.cm6:60030/ 1
> http://hadoopdev21.cm6:60030/ 1
> http://hadoopdev7.cm6:60030/  2
> http://hadoopdev10.cm6:60030/ 1
> http://hadoopdev16.cm6:60030/ 1
> http://hadoopdev3.cm6:60030/  1
> http://hadoopdev20.cm6:60030/ 1
> http://hadoopdev4.cm6:60030/  1
> http://hadoopdev18.cm6:60030/ 2
> http://hadoopdev12.cm6:60030/ 1
> http://hadoopdev14.cm6:60030/ 1
> http://hadoopdev15.cm6:60030/ 1
> http://hadoopdev6.cm6:60030/  1
> http://hadoopdev13.cm6:60030/ 1
> http://hadoopdev11.cm6:60030/ 1
> http://hadoopdev10.cm6:60030/ 1
> http://hadoopdev19.cm6:60030/ 1
> http://hadoopdev8.cm6:60030/  1
> http://hadoopdev17.cm6:60030/ 1
> http://hadoopdev12.cm6:60030/ 1
> http://hadoopdev5.cm6:60030/  1
> http://hadoopdev22.cm6:60030/ 1
> http://hadoopdev11.cm6:60030/ 1
> http://hadoopdev7.cm6:60030/  1
> http://hadoopdev21.cm6:60030/ 2
> http://hadoopdev16.cm6:60030/ 1
> http://hadoopdev10.cm6:60030/ 1
> http://hadoopdev3.cm6:60030/  1
> http://hadoopdev20.cm6:60030/ 1
> http://hadoopdev18.cm6:60030/ 1
> http://hadoopdev4.cm6:60030/  1
> http://hadoopdev12.cm6:60030/ 1
> http://hadoopdev15.cm6:60030/ 1
> http://hadoopdev14.cm6:60030/ 2
> http://hadoopdev6.cm6:60030/  1
> http://hadoopdev13.cm6:60030/ 1
> http://hadoopdev11.cm6:60030/ 1
> http://hadoopdev10.cm6:60030/ 1
> from the above logs, we can also find that some regions needn't move, but 
> they moved. follow into 
> 'org.apache.hadoop.hbase.master.DefaultLoadBalancer.balanceCluster()', I 
> found that 'maxToTake' is error calculated. 

--
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