You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2018/05/16 01:50:41 UTC

[1/3] hbase git commit: HBASE-20545 Improve performance of BaseLoadBalancer.retainAssignment

Repository: hbase
Updated Branches:
  refs/heads/branch-1 944a221b7 -> 2a309d71c
  refs/heads/branch-1.3 75e7714d2 -> 8491967f0
  refs/heads/branch-1.4 294499949 -> 7e65dfaf4


HBASE-20545 Improve performance of BaseLoadBalancer.retainAssignment

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/2a309d71
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/2a309d71
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/2a309d71

Branch: refs/heads/branch-1
Commit: 2a309d71cccb4cd87278ad505fe6f4513b3e6547
Parents: 944a221
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Tue May 8 14:16:12 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue May 15 18:17:52 2018 -0700

----------------------------------------------------------------------
 .../hbase/master/balancer/BaseLoadBalancer.java | 41 ++++++++++++++------
 1 file changed, 29 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/2a309d71/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 97a4cb1..41cbeaa 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1563,6 +1563,9 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
     // after the cluster restart.
     Set<String> oldHostsNoLongerPresent = Sets.newTreeSet();
 
+    // If the old servers aren't present, lets assign those regions later.
+    List<HRegionInfo> randomAssignRegions = Lists.newArrayList();
+
     int numRandomAssignments = 0;
     int numRetainedAssigments = 0;
 
@@ -1576,37 +1579,51 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
         localServers = serversByHostname.get(oldServerName.getHostname());
       }
       if (localServers.isEmpty()) {
-        // No servers on the new cluster match up with this hostname,
-        // assign randomly.
-        ServerName randomServer = randomAssignment(cluster, region, servers);
-        assignments.get(randomServer).add(region);
-        numRandomAssignments++;
-        if (oldServerName != null) oldHostsNoLongerPresent.add(oldServerName.getHostname());
+        // No servers on the new cluster match up with this hostname, assign randomly, later.
+        randomAssignRegions.add(region);
+        if (oldServerName != null) {
+          oldHostsNoLongerPresent.add(oldServerName.getHostname());
+        }
       } else if (localServers.size() == 1) {
         // the usual case - one new server on same host
         ServerName target = localServers.get(0);
         assignments.get(target).add(region);
-        cluster.doAssignRegion(region, target);
         numRetainedAssigments++;
       } else {
         // multiple new servers in the cluster on this same host
         if (localServers.contains(oldServerName)) {
           assignments.get(oldServerName).add(region);
-          cluster.doAssignRegion(region, oldServerName);
+          numRetainedAssigments++;
         } else {
           ServerName target = null;
-          for (ServerName tmp: localServers) {
+          for (ServerName tmp : localServers) {
             if (tmp.getPort() == oldServerName.getPort()) {
               target = tmp;
+              assignments.get(tmp).add(region);
+              numRetainedAssigments++;
               break;
             }
           }
           if (target == null) {
-            target = randomAssignment(cluster, region, localServers);
+            randomAssignRegions.add(region);
           }
-          assignments.get(target).add(region);
         }
-        numRetainedAssigments++;
+      }
+    }
+
+    // If servers from prior assignment aren't present, then lets do randomAssignment on regions.
+    if (randomAssignRegions.size() > 0) {
+      for (Map.Entry<ServerName, List<HRegionInfo>> entry : assignments.entrySet()) {
+        ServerName sn = entry.getKey();
+        for (HRegionInfo region : entry.getValue()) {
+          cluster.doAssignRegion(region, sn);
+        }
+      }
+      for (HRegionInfo region : randomAssignRegions) {
+        ServerName target = randomAssignment(cluster, region, servers);
+        assignments.get(target).add(region);
+        cluster.doAssignRegion(region, target);
+        numRandomAssignments++;
       }
     }
 


[2/3] hbase git commit: HBASE-20545 Improve performance of BaseLoadBalancer.retainAssignment

Posted by ap...@apache.org.
HBASE-20545 Improve performance of BaseLoadBalancer.retainAssignment

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7e65dfaf
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7e65dfaf
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7e65dfaf

Branch: refs/heads/branch-1.4
Commit: 7e65dfaf4fb02368a46325cbb4b7accbdf44ba0e
Parents: 2944999
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Tue May 8 14:16:12 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue May 15 18:17:56 2018 -0700

----------------------------------------------------------------------
 .../hbase/master/balancer/BaseLoadBalancer.java | 41 ++++++++++++++------
 1 file changed, 29 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/7e65dfaf/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 97a4cb1..41cbeaa 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1563,6 +1563,9 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
     // after the cluster restart.
     Set<String> oldHostsNoLongerPresent = Sets.newTreeSet();
 
+    // If the old servers aren't present, lets assign those regions later.
+    List<HRegionInfo> randomAssignRegions = Lists.newArrayList();
+
     int numRandomAssignments = 0;
     int numRetainedAssigments = 0;
 
@@ -1576,37 +1579,51 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
         localServers = serversByHostname.get(oldServerName.getHostname());
       }
       if (localServers.isEmpty()) {
-        // No servers on the new cluster match up with this hostname,
-        // assign randomly.
-        ServerName randomServer = randomAssignment(cluster, region, servers);
-        assignments.get(randomServer).add(region);
-        numRandomAssignments++;
-        if (oldServerName != null) oldHostsNoLongerPresent.add(oldServerName.getHostname());
+        // No servers on the new cluster match up with this hostname, assign randomly, later.
+        randomAssignRegions.add(region);
+        if (oldServerName != null) {
+          oldHostsNoLongerPresent.add(oldServerName.getHostname());
+        }
       } else if (localServers.size() == 1) {
         // the usual case - one new server on same host
         ServerName target = localServers.get(0);
         assignments.get(target).add(region);
-        cluster.doAssignRegion(region, target);
         numRetainedAssigments++;
       } else {
         // multiple new servers in the cluster on this same host
         if (localServers.contains(oldServerName)) {
           assignments.get(oldServerName).add(region);
-          cluster.doAssignRegion(region, oldServerName);
+          numRetainedAssigments++;
         } else {
           ServerName target = null;
-          for (ServerName tmp: localServers) {
+          for (ServerName tmp : localServers) {
             if (tmp.getPort() == oldServerName.getPort()) {
               target = tmp;
+              assignments.get(tmp).add(region);
+              numRetainedAssigments++;
               break;
             }
           }
           if (target == null) {
-            target = randomAssignment(cluster, region, localServers);
+            randomAssignRegions.add(region);
           }
-          assignments.get(target).add(region);
         }
-        numRetainedAssigments++;
+      }
+    }
+
+    // If servers from prior assignment aren't present, then lets do randomAssignment on regions.
+    if (randomAssignRegions.size() > 0) {
+      for (Map.Entry<ServerName, List<HRegionInfo>> entry : assignments.entrySet()) {
+        ServerName sn = entry.getKey();
+        for (HRegionInfo region : entry.getValue()) {
+          cluster.doAssignRegion(region, sn);
+        }
+      }
+      for (HRegionInfo region : randomAssignRegions) {
+        ServerName target = randomAssignment(cluster, region, servers);
+        assignments.get(target).add(region);
+        cluster.doAssignRegion(region, target);
+        numRandomAssignments++;
       }
     }
 


[3/3] hbase git commit: HBASE-20545 Improve performance of BaseLoadBalancer.retainAssignment

Posted by ap...@apache.org.
HBASE-20545 Improve performance of BaseLoadBalancer.retainAssignment

Signed-off-by: Andrew Purtell <ap...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/8491967f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/8491967f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/8491967f

Branch: refs/heads/branch-1.3
Commit: 8491967f0f5d764dcfdf4d7e8357b2c7f1c3f4ca
Parents: 75e7714
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Tue May 8 14:16:12 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Tue May 15 18:18:04 2018 -0700

----------------------------------------------------------------------
 .../hbase/master/balancer/BaseLoadBalancer.java | 41 ++++++++++++++------
 1 file changed, 29 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/8491967f/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 1770003..3e00080 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1422,6 +1422,9 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
     // after the cluster restart.
     Set<String> oldHostsNoLongerPresent = Sets.newTreeSet();
 
+    // If the old servers aren't present, lets assign those regions later.
+    List<HRegionInfo> randomAssignRegions = Lists.newArrayList();
+
     int numRandomAssignments = 0;
     int numRetainedAssigments = 0;
 
@@ -1435,37 +1438,51 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
         localServers = serversByHostname.get(oldServerName.getHostname());
       }
       if (localServers.isEmpty()) {
-        // No servers on the new cluster match up with this hostname,
-        // assign randomly.
-        ServerName randomServer = randomAssignment(cluster, region, servers);
-        assignments.get(randomServer).add(region);
-        numRandomAssignments++;
-        if (oldServerName != null) oldHostsNoLongerPresent.add(oldServerName.getHostname());
+        // No servers on the new cluster match up with this hostname, assign randomly, later.
+        randomAssignRegions.add(region);
+        if (oldServerName != null) {
+          oldHostsNoLongerPresent.add(oldServerName.getHostname());
+        }
       } else if (localServers.size() == 1) {
         // the usual case - one new server on same host
         ServerName target = localServers.get(0);
         assignments.get(target).add(region);
-        cluster.doAssignRegion(region, target);
         numRetainedAssigments++;
       } else {
         // multiple new servers in the cluster on this same host
         if (localServers.contains(oldServerName)) {
           assignments.get(oldServerName).add(region);
-          cluster.doAssignRegion(region, oldServerName);
+          numRetainedAssigments++;
         } else {
           ServerName target = null;
-          for (ServerName tmp: localServers) {
+          for (ServerName tmp : localServers) {
             if (tmp.getPort() == oldServerName.getPort()) {
               target = tmp;
+              assignments.get(tmp).add(region);
+              numRetainedAssigments++;
               break;
             }
           }
           if (target == null) {
-            target = randomAssignment(cluster, region, localServers);
+            randomAssignRegions.add(region);
           }
-          assignments.get(target).add(region);
         }
-        numRetainedAssigments++;
+      }
+    }
+
+    // If servers from prior assignment aren't present, then lets do randomAssignment on regions.
+    if (randomAssignRegions.size() > 0) {
+      for (Map.Entry<ServerName, List<HRegionInfo>> entry : assignments.entrySet()) {
+        ServerName sn = entry.getKey();
+        for (HRegionInfo region : entry.getValue()) {
+          cluster.doAssignRegion(region, sn);
+        }
+      }
+      for (HRegionInfo region : randomAssignRegions) {
+        ServerName target = randomAssignment(cluster, region, servers);
+        assignments.get(target).add(region);
+        cluster.doAssignRegion(region, target);
+        numRandomAssignments++;
       }
     }