Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
[email protected] webmail now available. Want one? Go here.
Cannot use outlook/hotmail/live here to register as they blocking our mail servers. #microsoftdeez
Obey the Epel!

Paste

Pasted as Ruby by Sebastian Bauer ( 13 years ago )
Index: src/main/ruby/shell/commands/rebalance.rb
===================================================================
--- src/main/ruby/shell/commands/rebalance.rb (revision 0)
+++ src/main/ruby/shell/commands/rebalance.rb (revision 0)
@@ -0,0 +1,35 @@
+#
+# Copyright 2010 The Apache Software Foundation
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+module Shell
+  module Commands
+    class Rebalance < Command
+      def help
+        return <<-EOF
+Rebalance server by region requests load
+EOF
+      end
+
+      def command()
+        admin.rebalance()
+      end
+    end
+  end
+end
Index: src/main/ruby/shell.rb
===================================================================
--- src/main/ruby/shell.rb (revision 1067865)
+++ src/main/ruby/shell.rb (working copy)
@@ -206,6 +206,7 @@
   :full_name => 'GENERAL HBASE SHELL COMMANDS',
   :commands => %w[
     status
+    rebalance
     version
   ]
 )
Index: src/main/ruby/hbase/admin.rb
===================================================================
--- src/main/ruby/hbase/admin.rb (revision 1067865)
+++ src/main/ruby/hbase/admin.rb (working copy)
@@ -326,7 +326,31 @@
         puts "#{status.getServers} servers, #{status.getDeadServers} dead, #{'%.4f' % status.getAverageLoad} average load"
       end
     end
-
+    
+    def rebalance()
+      status = @admin.getClusterStatus()
+      server_names = Array.new
+      regions_table = Hash.new
+      @admin.balanceSwitch(false)
+      for server in status.getServerInfo()
+        server_names << server.getServerAddress().getHostname()
+        puts("    %s" % [ server.getServerAddress().getHostname() ])
+        
+        for region in server.getLoad().getRegionsLoad()
+          r_str = "%s"%[region.getNameAsString()]
+          if not r_str =~  /^.META./  and not r_str =~ /^-ROOT-/
+            regions_table[region.getRequestsCount()] = r_str
+          end
+        end
+      end
+      regions_table.sort.reverse.each do|count,region|
+        server_names.push(server = server_names.shift)
+        puts "#{server}: #{count}: #{region}"
+        @admin.move(org.apache.hadoop.hbase.util.Bytes.toBytes(region.split(".")[1]), server ? org.apache.hadoop.hbase.util.Bytes.toBytes(server): nil)
+      end
+      
+    end
+    
     #----------------------------------------------------------------------------------------------
     #
     # Helper methods

 

Revise this Paste

Children: 28529
Your Name: Code Language: