From 0abf9afff6615ae1c9e69223250210f87be9d22f Mon Sep 17 00:00:00 2001 From: zjushch Date: Sun, 24 Mar 2013 10:31:53 +0000 Subject: [PATCH] HBASE-8189 Shell commands of online region merge git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1460308 13f79535-47bb-0310-9956-ffa450edef68 --- hbase-server/src/main/ruby/hbase/admin.rb | 6 +++ hbase-server/src/main/ruby/shell.rb | 1 + .../main/ruby/shell/commands/merge_region.rb | 49 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 hbase-server/src/main/ruby/shell/commands/merge_region.rb diff --git a/hbase-server/src/main/ruby/hbase/admin.rb b/hbase-server/src/main/ruby/hbase/admin.rb index 247cbe95cf5..c7ec1206f06 100644 --- a/hbase-server/src/main/ruby/hbase/admin.rb +++ b/hbase-server/src/main/ruby/hbase/admin.rb @@ -307,6 +307,12 @@ module Hbase def move(encoded_region_name, server = nil) @admin.move(encoded_region_name.to_java_bytes, server ? server.to_java_bytes: nil) end + + #---------------------------------------------------------------------------------------------- + # Merge two regions + def merge_region(encoded_region_a_name, encoded_region_b_name, force) + @admin.mergeRegions(encoded_region_a_name.to_java_bytes, encoded_region_b_name.to_java_bytes, java.lang.Boolean::valueOf(force)) + end #---------------------------------------------------------------------------------------------- # Returns table's structure description diff --git a/hbase-server/src/main/ruby/shell.rb b/hbase-server/src/main/ruby/shell.rb index 3e83ddf58e7..cab3442b472 100644 --- a/hbase-server/src/main/ruby/shell.rb +++ b/hbase-server/src/main/ruby/shell.rb @@ -283,6 +283,7 @@ Shell.load_command_group( major_compact move split + merge_region unassign zk_dump hlog_roll diff --git a/hbase-server/src/main/ruby/shell/commands/merge_region.rb b/hbase-server/src/main/ruby/shell/commands/merge_region.rb new file mode 100644 index 00000000000..6afa2e5b503 --- /dev/null +++ b/hbase-server/src/main/ruby/shell/commands/merge_region.rb @@ -0,0 +1,49 @@ +# +# +# 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 MergeRegion < Command + def help + return <<-EOF +Merge two regions. Passing 'true' as the optional third parameter will force +a merge ('force' merges regardless else merge will fail unless passed +adjacent regions. 'force' is for expert use only). + +NOTE: You must pass the encoded region name, not the full region name so +this command is a little different from other region operations. The encoded +region name is the hash suffix on region names: e.g. if the region name were +TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396. then +the encoded region name portion is 527db22f95c8a9e0116f0cc13c680396 + +Examples: + + hbase> merge_region 'ENCODED_REGIONNAME', 'ENCODED_REGIONNAME' + hbase> merge_region 'ENCODED_REGIONNAME', 'ENCODED_REGIONNAME', true +EOF + end + + def command(encoded_region_a_name, encoded_region_b_name, force = 'false') + format_simple_command do + admin.merge_region(encoded_region_a_name, encoded_region_b_name, force) + end + end + end + end +end