You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2008/12/17 07:47:06 UTC

svn commit: r727301 - in /hadoop/hbase/trunk: ./ src/java/org/apache/hadoop/hbase/ src/java/org/apache/hadoop/hbase/regionserver/ src/java/org/apache/hadoop/hbase/util/

Author: stack
Date: Tue Dec 16 22:47:04 2008
New Revision: 727301

URL: http://svn.apache.org/viewvc?rev=727301&view=rev
Log:
HBASE-1056 [migration] enable blockcaching on .META. table

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConstants.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Migrate.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=727301&r1=727300&r2=727301&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Tue Dec 16 22:47:04 2008
@@ -176,6 +176,7 @@
    HBASE-1055  Better vm stats on startup
    HBASE-1065  Minor logging improvements in the master
    HBASE-1053  bring recent rpc changes down from hadoop
+   HBASE-1056  [migration] enable blockcaching on .META. table
 
   NEW FEATURES
    HBASE-875   Use MurmurHash instead of JenkinsHash [in bloomfilters]

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConstants.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConstants.java?rev=727301&r1=727300&r2=727301&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConstants.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HConstants.java Tue Dec 16 22:47:04 2008
@@ -43,11 +43,12 @@
   static final String VERSION_FILE_NAME = "hbase.version";
   
   /**
-   * Current version of file system
+   * Current version of file system.
    * Version 4 supports only one kind of bloom filter.
    * Version 5 changes versions in catalog table regions.
+   * Version 6 enables blockcaching on catalog tables.
    */
-  public static final String FILE_SYSTEM_VERSION = "5";
+  public static final String FILE_SYSTEM_VERSION = "6";
   
   // Configuration parameters
   

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java?rev=727301&r1=727300&r2=727301&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HTableDescriptor.java Tue Dec 16 22:47:04 2008
@@ -654,7 +654,7 @@
       HConstants.ROOT_TABLE_NAME,
       new HColumnDescriptor[] { new HColumnDescriptor(HConstants.COLUMN_FAMILY,
           10,  // Ten is arbitrary number.  Keep versions to help debuggging.
-          HColumnDescriptor.CompressionType.NONE, false, false,
+          HColumnDescriptor.CompressionType.NONE, false, true,
           Integer.MAX_VALUE, HConstants.FOREVER, false) });
   
   /** Table descriptor for <code>.META.</code> catalog table */
@@ -662,7 +662,7 @@
       HConstants.META_TABLE_NAME, new HColumnDescriptor[] {
           new HColumnDescriptor(HConstants.COLUMN_FAMILY,
             10, // Ten is arbitrary number.  Keep versions to help debuggging.
-            HColumnDescriptor.CompressionType.NONE, false, false,
+            HColumnDescriptor.CompressionType.NONE, false, true,
             Integer.MAX_VALUE, HConstants.FOREVER, false),
           new HColumnDescriptor(HConstants.COLUMN_FAMILY_HISTORIAN,
             HConstants.ALL_VERSIONS, HColumnDescriptor.CompressionType.NONE,

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java?rev=727301&r1=727300&r2=727301&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HStore.java Tue Dec 16 22:47:04 2008
@@ -1006,7 +1006,7 @@
   
   /*
    * Create readers for the passed in list of HStoreFiles and add them to
-   * <code>readers</code> list.
+   * <code>readers</code> list.  Used compacting.
    * @param readers Add Readers here.
    * @param files List of HSFs to make Readers for.
    * @return Count of rows for bloom filter sizing.  Returns -1 if no bloom

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Migrate.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Migrate.java?rev=727301&r1=727300&r2=727301&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Migrate.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/util/Migrate.java Tue Dec 16 22:47:04 2008
@@ -191,8 +191,8 @@
         throw new IOException(msg);
       }
 
-      migrateTo5();
-      
+      migrate4To6();
+
       if (!readOnly) {
         // Set file system version
         LOG.info("Setting file system version.");
@@ -208,16 +208,19 @@
     }
   }
   
-  // Move the fileystem version from 4 to 5.
+  // Move the fileystem version from 4 to 6.
   // In here we rewrite the catalog table regions so they keep 10 versions
   // instead of 1.
-  private void migrateTo5() throws IOException {
+  private void migrate4To6() throws IOException {
     if (this.readOnly && this.migrationNeeded) {
       return;
     }
     final MetaUtils utils = new MetaUtils(this.conf);
     try {
+      // These two operations are effectively useless.  -ROOT- is hardcode,
+      // at least until hbase 0.20.0 when we store it out in ZK.
       updateVersions(utils.getRootRegion().getRegionInfo());
+      enableBlockCache(utils.getRootRegion().getRegionInfo());
       // Scan the root region
       utils.scanRootRegion(new MetaUtils.ScannerListener() {
         public boolean processRow(HRegionInfo info)
@@ -227,6 +230,7 @@
             return false;
           }
           updateVersions(utils.getRootRegion(), info);
+          enableBlockCache(utils.getRootRegion(), info);
           return true;
         }
       });
@@ -236,8 +240,41 @@
   }
 
   /*
-   * Move from old pre-v5 hregioninfo to current HRegionInfo
-   * Persist back into <code>r</code>
+   * Enable blockcaching on catalog tables.
+   * @param mr
+   * @param oldHri
+   */
+  void enableBlockCache(HRegion mr, HRegionInfo oldHri)
+  throws IOException {
+    if (!enableBlockCache(oldHri)) {
+      return;
+    }
+    BatchUpdate b = new BatchUpdate(oldHri.getRegionName());
+    b.put(HConstants.COL_REGIONINFO, Writables.getBytes(oldHri));
+    mr.batchUpdate(b);
+    LOG.info("Enabled blockcache on " + oldHri.getRegionNameAsString());
+  }
+
+  /*
+   * @param hri Update versions.
+   * @param true if we changed value
+   */
+  private boolean enableBlockCache(final HRegionInfo hri) {
+    boolean result = false;
+    HColumnDescriptor hcd =
+      hri.getTableDesc().getFamily(HConstants.COLUMN_FAMILY);
+    if (hcd == null) {
+      LOG.info("No info family in: " + hri.getRegionNameAsString());
+      return result;
+    }
+    // Set blockcache enabled.
+    hcd.setBlockCacheEnabled(true);
+    return true;
+  }
+
+
+  /*
+   * Update versions kept in historian.
    * @param mr
    * @param oldHri
    */
@@ -251,7 +288,7 @@
     mr.batchUpdate(b);
     LOG.info("Upped versions on " + oldHri.getRegionNameAsString());
   }
-  
+
   /*
    * @param hri Update versions.
    * @param true if we changed value