You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by dd...@apache.org on 2014/02/07 14:55:28 UTC

svn commit: r1565658 - in /hbase/branches/hbase-10070: hbase-client/src/main/java/org/apache/hadoop/hbase/ hbase-server/src/test/java/org/apache/hadoop/hbase/ hbase-shell/src/main/ruby/ hbase-shell/src/main/ruby/hbase/ hbase-shell/src/main/ruby/shell/c...

Author: ddas
Date: Fri Feb  7 13:55:28 2014
New Revision: 1565658

URL: http://svn.apache.org/r1565658
Log:
HTableDescriptor changes for region replicas

Modified:
    hbase/branches/hbase-10070/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java
    hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHTableDescriptor.java
    hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase.rb
    hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase/admin.rb
    hbase/branches/hbase-10070/hbase-shell/src/main/ruby/shell/commands/create.rb

Modified: hbase/branches/hbase-10070/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java?rev=1565658&r1=1565657&r2=1565658&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java (original)
+++ hbase/branches/hbase-10070/hbase-client/src/main/java/org/apache/hadoop/hbase/HTableDescriptor.java Fri Feb  7 13:55:28 2014
@@ -182,6 +182,13 @@ public class HTableDescriptor implements
   private static final ImmutableBytesWritable DURABILITY_KEY =
       new ImmutableBytesWritable(Bytes.toBytes("DURABILITY"));
 
+  /**
+   * <em>INTERNAL</em> number of region replicas for the table.
+   */
+  public static final String REGION_REPLICATION = "REGION_REPLICATION";
+  private static final ImmutableBytesWritable REGION_REPLICATION_KEY =
+      new ImmutableBytesWritable(Bytes.toBytes(REGION_REPLICATION));
+
   /** Default durability for HTD is USE_DEFAULT, which defaults to HBase-global default value */
   private static final Durability DEFAULT_DURABLITY = Durability.USE_DEFAULT;
 
@@ -214,6 +221,8 @@ public class HTableDescriptor implements
    */
   public static final long DEFAULT_MEMSTORE_FLUSH_SIZE = 1024*1024*128L;
 
+  public static final int DEFAULT_REGION_REPLICATION = 1;
+
   private final static Map<String, String> DEFAULT_VALUES
     = new HashMap<String, String>();
   private final static Set<ImmutableBytesWritable> RESERVED_KEYWORDS
@@ -227,6 +236,7 @@ public class HTableDescriptor implements
     DEFAULT_VALUES.put(DEFERRED_LOG_FLUSH,
         String.valueOf(DEFAULT_DEFERRED_LOG_FLUSH));
     DEFAULT_VALUES.put(DURABILITY, DEFAULT_DURABLITY.name()); //use the enum name
+    DEFAULT_VALUES.put(REGION_REPLICATION, String.valueOf(DEFAULT_REGION_REPLICATION));
     for (String s : DEFAULT_VALUES.keySet()) {
       RESERVED_KEYWORDS.add(new ImmutableBytesWritable(Bytes.toBytes(s)));
     }
@@ -1058,6 +1068,26 @@ public class HTableDescriptor implements
   }
 
   /**
+   * Returns the configured replicas per region
+   */
+  public int getRegionReplication() {
+    byte[] val = getValue(REGION_REPLICATION_KEY);
+    if (val == null || val.length == 0) {
+      return DEFAULT_REGION_REPLICATION;
+    }
+    return Integer.parseInt(Bytes.toString(val));
+  }
+
+  /**
+   * Sets the number of replicas per region.
+   * @param regionReplication the replication factor per region
+   */
+  public void setRegionReplication(int regionReplication) {
+    setValue(REGION_REPLICATION_KEY,
+        new ImmutableBytesWritable(Bytes.toBytes(Integer.toString(regionReplication))));
+  }
+
+  /**
    * Returns all the column family names of the current table. The map of
    * HTableDescriptor contains mapping of family name to HColumnDescriptors.
    * This returns all the keys of the family map which represents the column

Modified: hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHTableDescriptor.java
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHTableDescriptor.java?rev=1565658&r1=1565657&r2=1565658&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHTableDescriptor.java (original)
+++ hbase/branches/hbase-10070/hbase-server/src/test/java/org/apache/hadoop/hbase/TestHTableDescriptor.java Fri Feb  7 13:55:28 2014
@@ -49,12 +49,14 @@ public class TestHTableDescriptor {
     htd.setMaxFileSize(v);
     htd.setDurability(Durability.ASYNC_WAL);
     htd.setReadOnly(true);
+    htd.setRegionReplication(2);
     byte [] bytes = htd.toByteArray();
     HTableDescriptor deserializedHtd = HTableDescriptor.parseFrom(bytes);
     assertEquals(htd, deserializedHtd);
     assertEquals(v, deserializedHtd.getMaxFileSize());
     assertTrue(deserializedHtd.isReadOnly());
     assertEquals(Durability.ASYNC_WAL, deserializedHtd.getDurability());
+    assertEquals(deserializedHtd.getRegionReplication(), 2);
   }
 
   /**

Modified: hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase.rb
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase.rb?rev=1565658&r1=1565657&r2=1565658&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase.rb (original)
+++ hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase.rb Fri Feb  7 13:55:28 2014
@@ -57,6 +57,7 @@ module HBaseConstants
   SPLITS_FILE = 'SPLITS_FILE'
   SPLITALGO = 'SPLITALGO'
   NUMREGIONS = 'NUMREGIONS'
+  REGION_REPLICATION = 'REGION_REPLICATION'
   CONFIGURATION = org.apache.hadoop.hbase.HConstants::CONFIGURATION
   ATTRIBUTES="ATTRIBUTES"
   VISIBILITY="VISIBILITY"

Modified: hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase/admin.rb
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase/admin.rb?rev=1565658&r1=1565657&r2=1565658&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase/admin.rb (original)
+++ hbase/branches/hbase-10070/hbase-shell/src/main/ruby/hbase/admin.rb Fri Feb  7 13:55:28 2014
@@ -219,6 +219,10 @@ module Hbase
           has_columns = true
           next
         end
+        if arg.has_key?(REGION_REPLICATION)
+          region_replication = JInteger.valueOf(arg.delete(REGION_REPLICATION))
+          htd.setRegionReplication(region_replication)
+        end 
         
         # Get rid of the "METHOD", which is deprecated for create.
         # We'll do whatever it used to do below if it's table_att.

Modified: hbase/branches/hbase-10070/hbase-shell/src/main/ruby/shell/commands/create.rb
URL: http://svn.apache.org/viewvc/hbase/branches/hbase-10070/hbase-shell/src/main/ruby/shell/commands/create.rb?rev=1565658&r1=1565657&r2=1565658&view=diff
==============================================================================
--- hbase/branches/hbase-10070/hbase-shell/src/main/ruby/shell/commands/create.rb (original)
+++ hbase/branches/hbase-10070/hbase-shell/src/main/ruby/shell/commands/create.rb Fri Feb  7 13:55:28 2014
@@ -45,7 +45,7 @@ Examples:
   hbase> # Optionally pre-split the table into NUMREGIONS, using
   hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
   hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
-  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
+  hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', REGION_REPLICATION => 2, CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
 
 You can also keep around a reference to the created table: