From 3aa19c92e14b9e72dcb136541cd6e5b068b4b86d Mon Sep 17 00:00:00 2001 From: Elliott Clark Date: Mon, 15 Dec 2014 19:11:54 -0800 Subject: [PATCH] HBASE-12697 Don't use RegionLocationFinder if localityCost == 0 --- .../hadoop/hbase/master/balancer/StochasticLoadBalancer.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 9d8c7cb..5119614 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 @@ -229,10 +229,19 @@ public class StochasticLoadBalancer extends BaseLoadBalancer { clusterState.remove(masterServerName); } + // On clusters with lots of HFileLinks or lots of reference files, + // instantiating the storefile infos can be quite expensive. + // Allow turning this feature off if the locality cost is not going to + // be used in any computations. + RegionLocationFinder finder = null; + if (this.localityCost != null && this.localityCost.getMultiplier() > 0) { + finder = this.regionFinder; + } + //The clusterState that is given to this method contains the state //of all the regions in the table(s) (that's true today) // Keep track of servers to iterate through them. - Cluster cluster = new Cluster(clusterState, loads, regionFinder, rackManager); + Cluster cluster = new Cluster(clusterState, loads, finder, rackManager); if (!needsBalance(cluster)) { return null; } -- 2.1.1