From a738ead4a61b7f6f86a7cfc9ed6d087b5e8eac4e Mon Sep 17 00:00:00 2001 From: Kahlil Oppenheimer Date: Tue, 28 Feb 2017 00:33:57 -0500 Subject: [PATCH] Fixed old table skew measure --- .../hbase/master/balancer/BaseLoadBalancer.java | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java index f27feb3..19df846 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java @@ -665,18 +665,14 @@ public abstract class BaseLoadBalancer implements LoadBalancer { } numRegionsPerServerPerTable[newServer][tableIndex]++; - //check whether this caused maxRegionsPerTable in the new Server to be updated - if (numRegionsPerServerPerTable[newServer][tableIndex] > numMaxRegionsPerTable[tableIndex]) { - numMaxRegionsPerTable[tableIndex] = numRegionsPerServerPerTable[newServer][tableIndex]; - } else if (oldServer >= 0 && (numRegionsPerServerPerTable[oldServer][tableIndex] + 1) - == numMaxRegionsPerTable[tableIndex]) { - //recompute maxRegionsPerTable since the previous value was coming from the old server - for (int serverIndex = 0 ; serverIndex < numRegionsPerServerPerTable.length; serverIndex++) { - if (numRegionsPerServerPerTable[serverIndex][tableIndex] > numMaxRegionsPerTable[tableIndex]) { - numMaxRegionsPerTable[tableIndex] = numRegionsPerServerPerTable[serverIndex][tableIndex]; - } - } - } + // if old server had max num regions, assume (for now) max num regions went down since we moved the region + if (oldServer >= 0 && + (numRegionsPerServerPerTable[oldServer][tableIndex] + 1) == numMaxRegionsPerTable[tableIndex]) { + numMaxRegionsPerTable[tableIndex]--; + } + // Now check if new server sets new max + numMaxRegionsPerTable[tableIndex] = + Math.max(numMaxRegionsPerTable[tableIndex], numRegionsPerServerPerTable[newServer][tableIndex]); // update for servers int primary = regionIndexToPrimaryIndex[region]; -- 2.10.1 (Apple Git-78)