From fe776306d09b1e37551a3ccfef800a720866963f Mon Sep 17 00:00:00 2001 From: Clara Xiong Date: Sun, 13 Sep 2020 14:10:58 +0530 Subject: [PATCH] HBASE-25006 Make the cost functions optional for StochastoicBalancer Closes #2386 Signed-off-by: Nick Dimiduk Signed-off-by: Viraj Jasani --- .../balancer/StochasticLoadBalancer.java | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java index 786becd5303..e123787b8f3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.java @@ -205,19 +205,19 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { regionReplicaRackCostFunction = new RegionReplicaRackCostFunction(conf); costFunctions = new ArrayList<>(); - costFunctions.add(new RegionCountSkewCostFunction(conf)); - costFunctions.add(new PrimaryRegionCountSkewCostFunction(conf)); - costFunctions.add(new MoveCostFunction(conf)); - costFunctions.add(localityCost); - costFunctions.add(rackLocalityCost); - costFunctions.add(new TableSkewCostFunction(conf)); - costFunctions.add(regionReplicaHostCostFunction); - costFunctions.add(regionReplicaRackCostFunction); - costFunctions.add(regionLoadFunctions[0]); - costFunctions.add(regionLoadFunctions[1]); - costFunctions.add(regionLoadFunctions[2]); - costFunctions.add(regionLoadFunctions[3]); - costFunctions.add(regionLoadFunctions[4]); + addCostFunction(new RegionCountSkewCostFunction(conf)); + addCostFunction(new PrimaryRegionCountSkewCostFunction(conf)); + addCostFunction(new MoveCostFunction(conf)); + addCostFunction(localityCost); + addCostFunction(rackLocalityCost); + addCostFunction(new TableSkewCostFunction(conf)); + addCostFunction(regionReplicaHostCostFunction); + addCostFunction(regionReplicaRackCostFunction); + addCostFunction(regionLoadFunctions[0]); + addCostFunction(regionLoadFunctions[1]); + addCostFunction(regionLoadFunctions[2]); + addCostFunction(regionLoadFunctions[3]); + addCostFunction(regionLoadFunctions[4]); loadCustomCostFunctions(conf); curFunctionCosts= new Double[costFunctions.size()]; @@ -514,6 +514,12 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { } } + private void addCostFunction(CostFunction costFunction) { + if (costFunction.getMultiplier() > 0) { + costFunctions.add(costFunction); + } + } + private String functionCost() { StringBuilder builder = new StringBuilder(); for (CostFunction c:costFunctions) {