You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by om...@apache.org on 2011/03/04 05:41:59 UTC

svn commit: r1077666 - in /hadoop/common/branches/branch-0.20-security-patches/src: hdfs/org/apache/hadoop/hdfs/server/namenode/ hdfs/org/apache/hadoop/hdfs/server/namenode/metrics/ test/org/apache/hadoop/hdfs/server/namenode/metrics/

Author: omalley
Date: Fri Mar  4 04:41:58 2011
New Revision: 1077666

URL: http://svn.apache.org/viewvc?rev=1077666&view=rev
Log:
commit 5be6b17cc63ed16aaa0376e72f35f683078e0a6d
Author: Luke Lu <ll...@yahoo-inc.com>
Date:   Tue Sep 7 17:57:10 2010 -0700

     Fix FSNamesystemMetrics MBean registration
    
    which failed at first try, by removing a circular dependency
    in metrics initialization.

Modified:
    hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
    hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/metrics/NameNodeInstrumentation.java
    hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java

Modified: hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java?rev=1077666&r1=1077665&r2=1077666&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java Fri Mar  4 04:41:58 2011
@@ -99,6 +99,10 @@ import org.apache.hadoop.hdfs.server.pro
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hadoop.io.Text;
 import org.apache.hadoop.ipc.Server;
+import org.apache.hadoop.metrics2.MetricsBuilder;
+import org.apache.hadoop.metrics2.MetricsSource;
+import org.apache.hadoop.metrics2.MetricsSystem;
+import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;
 import org.apache.hadoop.metrics2.util.MBeans;
 import org.apache.hadoop.net.CachedDNSToSwitchMapping;
 import org.apache.hadoop.net.DNSToSwitchMapping;
@@ -130,7 +134,7 @@ import org.mortbay.util.ajax.JSON;
  * 5)  LRU cache of updated-heartbeat machines
  ***************************************************/
 public class FSNamesystem implements FSConstants, FSNamesystemMBean,
-    NameNodeMXBean {
+    NameNodeMXBean, MetricsSource {
   public static final Log LOG = LogFactory.getLog(FSNamesystem.class);
   public static final String AUDIT_FORMAT =
     "ugi=%s\t" +  // ugi
@@ -412,6 +416,7 @@ public class FSNamesystem implements FSC
     }
     
     registerMXBean();
+    registerWith(DefaultMetricsSystem.INSTANCE);
   }
 
   public static Collection<File> getNamespaceDirs(Configuration conf) {
@@ -5291,4 +5296,36 @@ public class FSNamesystem implements FSC
   private long getDfsUsed(DatanodeDescriptor alivenode) {
     return alivenode.getDfsUsed();
   }
+
+  private static int roundBytesToGBytes(long bytes) {
+    return Math.round(((float)bytes/(1024 * 1024 * 1024)));
+  }
+
+  @Override
+  public void getMetrics(MetricsBuilder builder, boolean all) {
+    builder.addRecord("FSNamesystem").setContext("dfs")
+      .addGauge("FilesTotal", "", getFilesTotal())
+      .addGauge("BlocksTotal", "", getBlocksTotal())
+      .addGauge("CapacityTotalGB", "",
+                roundBytesToGBytes(getCapacityTotal()))
+      .addGauge("CapacityUsedGB", "",
+                roundBytesToGBytes(getCapacityUsed()))
+      .addGauge("CapacityRemainingGB", "",
+                roundBytesToGBytes(getCapacityRemaining()))
+      .addGauge("TotalLoad", "", getTotalLoad())
+      .addGauge("CorruptBlocks", "", getCorruptReplicaBlocks())
+      .addGauge("ExcessBlocks", "", getExcessBlocks())
+      .addGauge("PendingDeletionBlocks", "", getPendingDeletionBlocks())
+      .addGauge("PendingReplicationBlocks", "", getPendingReplicationBlocks())
+      .addGauge("UnderReplicatedBlocks", "", getUnderReplicatedBlocks())
+      .addGauge("ScheduledReplicationBlocks", "",
+                getScheduledReplicationBlocks())
+      .addGauge("MissingBlocks", "", getMissingBlocksCount())
+      .addGauge("BlockCapacity", "", getBlockCapacity());
+  }
+
+  private void registerWith(MetricsSystem ms) {
+    ms.register("FSNamesystemMetrics", "FSNamesystem metrics", this);
+  }
+
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/metrics/NameNodeInstrumentation.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/metrics/NameNodeInstrumentation.java?rev=1077666&r1=1077665&r2=1077666&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/metrics/NameNodeInstrumentation.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/hdfs/org/apache/hadoop/hdfs/server/namenode/metrics/NameNodeInstrumentation.java Fri Mar  4 04:41:58 2011
@@ -21,7 +21,6 @@ package org.apache.hadoop.hdfs.server.na
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.logging.Log;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.server.namenode.FSNamesystem;
 import org.apache.hadoop.metrics2.MetricsBuilder;
 import org.apache.hadoop.metrics2.MetricsSource;
 import org.apache.hadoop.metrics2.MetricsSystem;
@@ -35,7 +34,6 @@ import org.apache.hadoop.metrics2.source
 public class NameNodeInstrumentation implements MetricsSource {
   static final Log LOG = LogFactory.getLog(NameNodeInstrumentation.class);
 
-  static final String FSNAMESYSTEM_RECORD_NAME = "FSNamesystem";
   final String sessionId;
   final MetricsRegistry registry = new MetricsRegistry("namenode");
   final MetricMutableCounterInt numFilesCreated =
@@ -70,11 +68,8 @@ public class NameNodeInstrumentation imp
   final MetricMutableCounterInt numFilesInGetListingOps =
       registry.newCounter("FilesInGetListingOps", "", 0);
 
-  final MetricsSource fsNamesystemMetrics;
-
   NameNodeInstrumentation(Configuration conf) {
     sessionId = conf.get("session.id");
-    fsNamesystemMetrics = new FSNamesystemMetrics();
     JvmMetricsSource.create("NameNode", sessionId);
     registry.setContext("dfs").tag("sessionId", "", sessionId);
   }
@@ -91,21 +86,14 @@ public class NameNodeInstrumentation imp
    */
   public static NameNodeInstrumentation create(Configuration conf,
                                                MetricsSystem ms) {
-    NameNodeInstrumentation v2 = new NameNodeInstrumentation(conf);
-    ms.register("FSNamesystemState", "FS name system state",
-                v2.fsNamesystemMetrics());
-    return ms.register("NameNode", "NameNode metrics", v2);
-  }
-
-  public MetricsSource fsNamesystemMetrics() {
-    return fsNamesystemMetrics;
+    return ms.register("NameNode", "NameNode metrics",
+                       new NameNodeInstrumentation(conf));
   }
 
   public void shutdown() {
     // metrics system shutdown would suffice
   }
 
-
   public final void incrNumGetBlockLocations() {
     numGetBlockLocations.incr();
   }
@@ -194,45 +182,4 @@ public class NameNodeInstrumentation imp
     registry.snapshot(builder.addRecord(registry.name()), all);
   }
 
-  private static int roundBytesToGBytes(long bytes) {
-    return Math.round(((float)bytes/(1024 * 1024 * 1024)));
-  }
-
-  private class FSNamesystemMetrics implements MetricsSource {
-
-    public void getMetrics(MetricsBuilder builder, boolean all) {
-      // Since fsnamesystem metrics are poll based, we just put them here
-      // to avoid an extra copy per metric.
-      FSNamesystem fsNamesystem = FSNamesystem.getFSNamesystem();
-      if (fsNamesystem == null) {
-        LOG.debug("FSNamesystem not ready yet!");
-        return;
-      }
-      builder.addRecord(FSNAMESYSTEM_RECORD_NAME).setContext("dfs")
-        .tag("sessionId", "", sessionId)
-        .addGauge("FilesTotal", "", fsNamesystem.getFilesTotal())
-        .addGauge("BlocksTotal", "", fsNamesystem.getBlocksTotal())
-        .addGauge("CapacityTotalGB", "",
-                  roundBytesToGBytes(fsNamesystem.getCapacityTotal()))
-        .addGauge("CapacityUsedGB", "",
-                  roundBytesToGBytes(fsNamesystem.getCapacityUsed()))
-        .addGauge("CapacityRemainingGB", "",
-                  roundBytesToGBytes(fsNamesystem.getCapacityRemaining()))
-        .addGauge("TotalLoad", "", fsNamesystem.getTotalLoad())
-        .addGauge("CorruptBlocks", "", fsNamesystem.getCorruptReplicaBlocks())
-        .addGauge("ExcessBlocks", "", fsNamesystem.getExcessBlocks())
-        .addGauge("PendingDeletionBlocks", "",
-                  fsNamesystem.getPendingDeletionBlocks())
-        .addGauge("PendingReplicationBlocks", "",
-                  fsNamesystem.getPendingReplicationBlocks())
-        .addGauge("UnderReplicatedBlocks", "",
-                  fsNamesystem.getUnderReplicatedBlocks())
-        .addGauge("ScheduledReplicationBlocks", "",
-                  fsNamesystem.getScheduledReplicationBlocks())
-        .addGauge("MissingBlocks", "", fsNamesystem.getMissingBlocksCount())
-        .addGauge("BlockCapacity", "", fsNamesystem.getBlockCapacity());
-    }
-
-  }
-
 }

Modified: hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java?rev=1077666&r1=1077665&r2=1077666&view=diff
==============================================================================
--- hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java (original)
+++ hadoop/common/branches/branch-0.20-security-patches/src/test/org/apache/hadoop/hdfs/server/namenode/metrics/TestNameNodeMetrics.java Fri Mar  4 04:41:58 2011
@@ -74,7 +74,7 @@ public class TestNameNodeMetrics extends
     namesystem = cluster.getNameNode().getNamesystem();
     fs = (DistributedFileSystem) cluster.getFileSystem();
     nnMetrics = NameNode.getNameNodeMetrics();
-    fsnMetrics = nnMetrics.fsNamesystemMetrics();
+    fsnMetrics = namesystem;
   }
   
   @Override