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

Andrew Purtell resolved HBASE-12762.
------------------------------------
    Resolution: Fixed

> Region with no hfiles will have the highest locality cost in 
> LocalityCostFunction
> ---------------------------------------------------------------------------------
>
>                 Key: HBASE-12762
>                 URL: https://issues.apache.org/jira/browse/HBASE-12762
>             Project: HBase
>          Issue Type: Improvement
>          Components: Balancer
>    Affects Versions: 0.99.2
>            Reporter: cuijianwei
>            Assignee: cuijianwei
>            Priority: Minor
>             Fix For: 1.0.0, 2.0.0, 0.98.10, 1.1.0
>
>         Attachments: HBASE-12762-trunk.patch
>
>
> The locality cost of region will be computed in LocalityCostFunction.cost as:
> {code}
> double cost() {
>         ...
>         int index = -1;
>         for (int j = 0; j < regionLocations.length; j++) {
>           if (regionLocations[j] >= 0 && regionLocations[j] == serverIndex) {
>             index = j;
>             break;
>           }
>         }
>         if (index < 0) {
>           cost += 1;  // ==> region with no hfiles will have the highest cost
>         } else {
>           cost += (double) index / (double) regionLocations.length;
>         }
>         ...
>     }
> {code}
> The region with no hfiles(such as empty region) will have the highest cost 
> which represents the worst case that region located in the server with no 
> locality for hfiles. However, this might be the best case because there are 
> no hlogs for the region. Although the absolute cost value won't affect the 
> balance process, will it be more reasonable to have zero cost for such 
> regions? such as:
> {code}
>    ...
>         if (index < 0) {
>           if (regionLocation.length > 0) { //  ==> only consider regions with 
> hfiles
>               cost += 1;
>           }
>         } else {
>           cost += (double) index / (double) regionLocations.length;
>         }
>    ...
> {code} 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to