You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2018/03/14 16:23:27 UTC
hbase git commit: HBASE-20186 Improve
RSGroupBasedLoadBalancer#balanceCluster() to be more efficient when
calculating cluster state for each rsgroup
Repository: hbase
Updated Branches:
refs/heads/master 84ee32c72 -> 37342220b
HBASE-20186 Improve RSGroupBasedLoadBalancer#balanceCluster() to be more efficient when calculating cluster state for each rsgroup
Signed-off-by: tedyu <yu...@gmail.com>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/37342220
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/37342220
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/37342220
Branch: refs/heads/master
Commit: 37342220b4468b868933b1acc0af307cedb80b6e
Parents: 84ee32c
Author: Xiang LI <li...@freewheel.tv>
Authored: Wed Mar 14 01:08:26 2018 +0800
Committer: tedyu <yu...@gmail.com>
Committed: Wed Mar 14 09:23:18 2018 -0700
----------------------------------------------------------------------
.../hbase/rsgroup/RSGroupBasedLoadBalancer.java | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/37342220/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index b88158d..9eb048f 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -129,17 +129,23 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer {
// for the regions which have been placed according to the region server group assignment
// into the movement list
try {
- List<RSGroupInfo> rsgi = rsGroupInfoManager.listRSGroups();
- for (RSGroupInfo info: rsgi) {
+ // Record which region servers have been processed,so as to skip them after processed
+ HashSet<ServerName> processedServers = new HashSet<>();
+
+ // For each rsgroup
+ for (RSGroupInfo rsgroup : rsGroupInfoManager.listRSGroups()) {
Map<ServerName, List<RegionInfo>> groupClusterState = new HashMap<>();
Map<TableName, Map<ServerName, List<RegionInfo>>> groupClusterLoad = new HashMap<>();
- for (Address sName : info.getServers()) {
- for(ServerName curr: clusterState.keySet()) {
- if(curr.getAddress().equals(sName)) {
- groupClusterState.put(curr, correctedState.get(curr));
- }
+ for (ServerName server : clusterState.keySet()) { // for each region server
+ if (!processedServers.contains(server) // server is not processed yet
+ && rsgroup.containsServer(server.getAddress())) { // server belongs to this rsgroup
+ List<RegionInfo> regionsOnServer = correctedState.get(server);
+ groupClusterState.put(server, regionsOnServer);
+
+ processedServers.add(server);
}
}
+
groupClusterLoad.put(HConstants.ENSEMBLE_TABLE_NAME, groupClusterState);
this.internalBalancer.setClusterLoad(groupClusterLoad);
List<RegionPlan> groupPlans = this.internalBalancer