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 2009/01/19 22:43:49 UTC

svn commit: r735837 - in /hadoop/hbase/trunk: ./ src/java/org/apache/hadoop/hbase/ src/java/org/apache/hadoop/hbase/master/ src/java/org/apache/hadoop/hbase/regionserver/ src/webapps/master/

Author: stack
Date: Mon Jan 19 13:43:48 2009
New Revision: 735837

URL: http://svn.apache.org/viewvc?rev=735837&view=rev
Log:
HBASE-1089 Add count of regions on filesystem to master UI; add percentage online as difference between whats open and whats on filesystem

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/master/HMaster.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hadoop/hbase/trunk/src/webapps/master/master.jsp

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=735837&r1=735836&r2=735837&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Mon Jan 19 13:43:48 2009
@@ -6,6 +6,11 @@
    HBASE-1136  HashFunction inadvertently destroys some randomness
                (Jonathan Ellis via Stack) 
 
+  IMPROVEMENTS
+   HBASE-1089  Add count of regions on filesystem to master UI; add percentage
+               online as difference between whats open and whats on filesystem
+               (Samuel Guo via Stack)
+
 Release 0.19.0 - Unreleased
   INCOMPATIBLE CHANGES
    HBASE-885   TableMap and TableReduce should be interfaces

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=735837&r1=735836&r2=735837&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 Mon Jan 19 13:43:48 2009
@@ -111,6 +111,9 @@
   /** Name of old log file for reconstruction */
   static final String HREGION_OLDLOGFILE_NAME = "oldlogfile.log";
   
+  /** Used to construct the name of the compaction directory during compaction */
+  static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";
+  
   /** Default maximum file size */
   static final long DEFAULT_MAX_FILE_SIZE = 256 * 1024 * 1024;
   

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java?rev=735837&r1=735836&r2=735837&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/HMaster.java Mon Jan 19 13:43:48 2009
@@ -79,6 +79,7 @@
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.io.Writable;
 import org.apache.hadoop.ipc.RemoteException;
+import org.apache.hadoop.util.StringUtils;
 
 /**
  * HMaster is the "master server" for a HBase.
@@ -316,6 +317,17 @@
   public double getAverageLoad() {
     return serverManager.getAverageLoad();
   }
+  
+  /** @return the number of regions on filesystem */
+  public int countRegionsOnFS() {
+    try {
+      return regionManager.countRegionsOnFS();
+    } catch (IOException e) {
+      LOG.warn("Get count of Regions on FileSystem error : " + 
+          StringUtils.stringifyException(e));
+    }
+    return -1;
+  }
 
   /**
    * @return Location of the <code>-ROOT-</code> region.

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java?rev=735837&r1=735836&r2=735837&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java Mon Jan 19 13:43:48 2009
@@ -38,6 +38,9 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.fs.PathFilter;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.HServerAddress;
 import org.apache.hadoop.hbase.HServerInfo;
@@ -447,6 +450,51 @@
     LOG.info("Skipped " + skipped + " region(s) that are in transition states");
   }
   
+  static class TableDirFilter implements PathFilter {
+
+    @Override
+    public boolean accept(Path path) {
+      // skip the region servers' log dirs && version file
+      // HBASE-1112 want to sperate the log dirs from table's data dirs by a special character.
+      String pathname = path.getName();
+      return !pathname.startsWith("log_") && !pathname.equals(VERSION_FILE_NAME);
+    }
+    
+  }
+  
+  static class RegionDirFilter implements PathFilter {
+
+    @Override
+    public boolean accept(Path path) { 
+      return !path.getName().equals(HREGION_COMPACTIONDIR_NAME);
+    }
+    
+  }
+  
+  /**
+   * @return the rough number of the regions on fs
+   * Note: this method simply counts the regions on fs by accumulating all the dirs 
+   * in each table dir (${HBASE_ROOT}/$TABLE) and skipping logfiles, compaction dirs.
+   * @throws IOException 
+   */
+  public int countRegionsOnFS() throws IOException {
+    int regions = 0;
+    
+    FileStatus[] tableDirs = 
+      master.fs.listStatus(master.rootdir, new TableDirFilter());
+    
+    FileStatus[] regionDirs;
+    RegionDirFilter rdf = new RegionDirFilter();
+    for(FileStatus tabledir : tableDirs) {
+      if(tabledir.isDir()) {
+        regionDirs = master.fs.listStatus(tabledir.getPath(), rdf);
+        regions += regionDirs.length;
+      }
+    }
+    
+    return regions;
+  }
+  
   /**
    * @return Read-only map of online regions.
    */

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=735837&r1=735836&r2=735837&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegion.java Mon Jan 19 13:43:48 2009
@@ -632,7 +632,7 @@
    * @return compaction directory for the passed in <code>dir</code>
    */
   static Path getCompactionDir(final Path dir) {
-   return new Path(dir, "compaction.dir");
+   return new Path(dir, HREGION_COMPACTIONDIR_NAME);
   }
 
   /*

Modified: hadoop/hbase/trunk/src/webapps/master/master.jsp
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/webapps/master/master.jsp?rev=735837&r1=735836&r2=735837&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/webapps/master/master.jsp (original)
+++ hadoop/hbase/trunk/src/webapps/master/master.jsp Mon Jan 19 13:43:48 2009
@@ -46,6 +46,7 @@
 <tr><td>Hadoop Compiled</td><td><%= org.apache.hadoop.util.VersionInfo.getDate() %>, <%= org.apache.hadoop.util.VersionInfo.getUser() %></td><td>When Hadoop version was compiled and by whom</td></tr>
 <tr><td>HBase Root Directory</td><td><%= master.getRootDir().toString() %></td><td>Location of HBase home directory</td></tr>
 <tr><td>Load average</td><td><%= master.getAverageLoad() %></td><td>Average load across all region servers. Naive computation.</td></tr>
+<tr><td>Regions On FS</td><td><%= master.countRegionsOnFS() %></td><td>The Number of regions on FileSystem. Rough count.</td></tr>
 </table>
 
 <h2>Catalog Tables</h2>