You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by li...@apache.org on 2013/03/21 19:53:07 UTC

svn commit: r1459460 - in /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver: HRegionServer.java metrics/RegionServerMetrics.java

Author: liyin
Date: Thu Mar 21 18:53:07 2013
New Revision: 1459460

URL: http://svn.apache.org/r1459460
Log:
[89-fb] [HBASE-7509] Export quorum metrics from HRegionServer

Author: aaiyer

Summary:
DFSClient metrics are disbled to save CPU usage.
This diff will expoet the required quorum Read Metrics
from HRegionServer

Test Plan:
deploy to dev cluster and ensure that the
metrics are seen via ODS counter

part of the output from hbasedev131.ash3:
"hadoop.regionserver_quorumreadsdone": 23,
"hadoop.regionserver_quorumreadsexecutedincurthread": 0,
"hadoop.regionserver_quorumreadwins": 0,

Reviewers: liyintang, rshroff

Reviewed By: rshroff

CC: hbase-eng@

Differential Revision: https://phabricator.fb.com/D697700

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1459460&r1=1459459&r2=1459460&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Thu Mar 21 18:53:07 2013
@@ -86,14 +86,12 @@ import org.apache.hadoop.hbase.HServerAd
 import org.apache.hadoop.hbase.HServerInfo;
 import org.apache.hadoop.hbase.HServerLoad;
 import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.LeaseListener;
 import org.apache.hadoop.hbase.Leases;
 import org.apache.hadoop.hbase.Leases.LeaseStillHeldException;
 import org.apache.hadoop.hbase.LocalHBaseCluster;
 import org.apache.hadoop.hbase.NotServingRegionException;
 import org.apache.hadoop.hbase.RemoteExceptionHandler;
-import org.apache.hadoop.hbase.Stoppable;
 import org.apache.hadoop.hbase.UnknownRowLockException;
 import org.apache.hadoop.hbase.UnknownScannerException;
 import org.apache.hadoop.hbase.YouAreDeadException;
@@ -121,7 +119,6 @@ import org.apache.hadoop.hbase.ipc.HBase
 import org.apache.hadoop.hbase.ipc.HBaseServer.Call;
 import org.apache.hadoop.hbase.ipc.HMasterRegionInterface;
 import org.apache.hadoop.hbase.ipc.HRegionInterface;
-import org.apache.hadoop.hbase.ipc.ProfilingData;
 import org.apache.hadoop.hbase.master.AssignmentPlan;
 import org.apache.hadoop.hbase.master.RegionPlacement;
 import org.apache.hadoop.hbase.regionserver.metrics.RegionServerDynamicMetrics;
@@ -1499,6 +1496,18 @@ public class HRegionServer implements HR
     this.metrics.filesRead.set(filesRead);
     this.metrics.cntWriteException.set(cntWriteException);
     this.metrics.cntReadException.set(cntReadException);
+
+    if (this.fs instanceof DistributedFileSystem) {
+      DFSClient client = ((DistributedFileSystem)fs).getClient();
+
+      long quorumReadsDone = client.quorumReadMetrics.getParallelReadOps();
+      this.metrics.quorumReadsDone.set(quorumReadsDone);
+      long quorumReadWins = client.quorumReadMetrics.getParallelReadWins();
+      this.metrics.quorumReadWins.set(quorumReadWins);
+      long quorumReadsExecutedInCurThread =
+          client.quorumReadMetrics.getParallelReadOpsInCurThread();
+      this.metrics.quorumReadsExecutedInCurThread.set(quorumReadsExecutedInCurThread);
+    }
   }
 
   /**

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java?rev=1459460&r1=1459459&r2=1459460&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java Thu Mar 21 18:53:07 2013
@@ -254,6 +254,14 @@ public class RegionServerMetrics impleme
   public final MetricsLongValue cntReadException = 
       new MetricsLongValue("dfsCntReadException", registry);
 
+  // quorum read metrics
+  public final MetricsLongValue quorumReadsDone =
+      new MetricsLongValue("quorumReadsDone", registry);
+  public final MetricsLongValue quorumReadWins =
+      new MetricsLongValue("quorumReadWins", registry);
+  public final MetricsLongValue quorumReadsExecutedInCurThread =
+      new MetricsLongValue("quorumReadsExecutedInCurThread", registry);
+
   public RegionServerMetrics() {
     MetricsContext context = MetricsUtil.getContext("hbase");
     metricsRecord = MetricsUtil.createRecord(context, "regionserver");
@@ -383,6 +391,11 @@ public class RegionServerMetrics impleme
       this.filesRead.pushMetric(this.metricsRecord);
       this.cntWriteException.pushMetric(this.metricsRecord);
       this.cntReadException.pushMetric(this.metricsRecord);
+
+      this.quorumReadsDone.pushMetric(this.metricsRecord);
+      this.quorumReadWins.pushMetric(this.metricsRecord);
+      this.quorumReadsExecutedInCurThread.pushMetric(this.metricsRecord);
+
     }
     this.metricsRecord.update();
   }
@@ -534,6 +547,12 @@ public class RegionServerMetrics impleme
     sb = Strings.appendKeyValue(sb, this.cntReadException.getName(),
         Long.valueOf(this.cntReadException.get()));
     
+    sb = Strings.appendKeyValue(sb, this.quorumReadsDone.getName(),
+        Long.valueOf(this.quorumReadsDone.get()));
+    sb = Strings.appendKeyValue(sb, this.quorumReadWins.getName(),
+        Long.valueOf(this.quorumReadWins.get()));
+    sb = Strings.appendKeyValue(sb, this.quorumReadsExecutedInCurThread.getName(),
+        Long.valueOf(this.quorumReadsExecutedInCurThread.get()));
     return sb.toString();
   }
 }