You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by re...@apache.org on 2019/07/26 03:46:44 UTC
[hbase] branch branch-1 updated: HBASE-22658 region_mover.rb should
choose same rsgroup servers as target servers
This is an automated email from the ASF dual-hosted git repository.
reidchan pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push:
new 1930856 HBASE-22658 region_mover.rb should choose same rsgroup servers as target servers
1930856 is described below
commit 1930856da6fb613715616aa37de75ed0186be3c8
Author: liang.feng <fe...@ke.com>
AuthorDate: Tue Jul 16 22:15:40 2019 +0800
HBASE-22658 region_mover.rb should choose same rsgroup servers as target servers
Co-authored-by: Reid Chan <re...@apache.org>
Signed-off-by: stack <st...@apache.org>
Signed-off-by: Andrew Purtell <ap...@apache.org>
Signed-off-by: Reid Chan <re...@apache.org>
---
bin/region_mover.rb | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/bin/region_mover.rb b/bin/region_mover.rb
index 03b7c01..3e4f020 100644
--- a/bin/region_mover.rb
+++ b/bin/region_mover.rb
@@ -41,6 +41,10 @@ import org.apache.commons.logging.LogFactory
import org.apache.hadoop.hbase.protobuf.ProtobufUtil
import org.apache.hadoop.hbase.ServerName
import org.apache.hadoop.hbase.HRegionInfo
+import org.apache.hadoop.hbase.rsgroup.RSGroupAdmin
+import org.apache.hadoop.hbase.rsgroup.RSGroupAdminClient
+import org.apache.hadoop.hbase.client.ConnectionFactory
+import org.apache.hadoop.hbase.net.Address
# Name of this script
NAME = "region_mover"
@@ -299,6 +303,17 @@ def unloadRegions(options, hostname, port)
# Get an admin instance
admin = HBaseAdmin.new(config)
servers = getServers(admin)
+ # If rsgroup enable, get servers belongs to the same rsgroup as given server
+ if isEnableRSGroup(admin)
+ $LOG.info("RegionServer group is enabled.")
+ begin
+ conn = ConnectionFactory.createConnection(config)
+ rsgroupAdmin = RSGroupAdminClient.new(conn)
+ servers = getSameRSGroupServers(servers, rsgroupAdmin, hostname, port)
+ ensure
+ conn.close()
+ end
+ end
# Remove the server we are unloading from from list of servers.
# Side-effect is the servername that matches this hostname
servername = stripServer(servers, hostname, port)
@@ -432,6 +447,29 @@ def getFilename(options, targetServer, port)
return filename
end
+# Get servers in the same regionserver group as the given server
+def getSameRSGroupServers(servers, rsgroupAdmin, hostname, port)
+ results = []
+ rsgroup = rsgroupAdmin.getRSGroupOfServer(Address.fromParts(hostname,
+ java.lang.Integer.parseInt(port)))
+ # rsgroup must be default or others, can't be nil
+ $LOG.info("Getting servers list from group: " + rsgroup.getName())
+ rsservers = rsgroup.getServers()
+ servers.each do |server|
+ servername = ServerName.parseServerName(server)
+ tmp = Address.fromParts(servername.getHostname(), servername.getPort())
+ if rsservers.contains(tmp)
+ results << servername.getServerName()
+ end
+ end
+ return results
+end
+
+# Determine whether rsgroup has been enabled
+def isEnableRSGroup(admin)
+ coprocessors = java.util.Arrays.asList(admin.getMasterCoprocessors());
+ return coprocessors.contains("RSGroupAdminEndpoint")
+end
# Do command-line parsing
options = {}