From b8da9f83cbbaf8a1257e5abb1ac438b21ba5507e Mon Sep 17 00:00:00 2001 From: Ashu Pachauri Date: Tue, 29 Nov 2016 13:54:28 +0530 Subject: [PATCH] HBASE-16302 age of last shipped op and age of last applied op should be histograms Signed-off-by: Ashish Singhi --- .../MetricsReplicationGlobalSourceSource.java | 9 +++++---- .../regionserver/MetricsReplicationSinkSourceImpl.java | 9 +++++---- .../regionserver/MetricsReplicationSourceSourceImpl.java | 9 +++++---- .../org/apache/hadoop/metrics2/lib/MutableHistogram.java | 4 ++++ .../hbase/replication/regionserver/MetricsSource.java | 2 +- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.java index 0a67663c9db..7a34e458d90 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationGlobalSourceSource.java @@ -20,11 +20,12 @@ package org.apache.hadoop.hbase.replication.regionserver; import org.apache.hadoop.metrics2.lib.MutableFastCounter; import org.apache.hadoop.metrics2.lib.MutableGaugeLong; +import org.apache.hadoop.metrics2.lib.MutableHistogram; public class MetricsReplicationGlobalSourceSource implements MetricsReplicationSourceSource{ private final MetricsReplicationSourceImpl rms; - private final MutableGaugeLong ageOfLastShippedOpGauge; + private final MutableHistogram ageOfLastShippedOpHist; private final MutableGaugeLong sizeOfLogQueueGauge; private final MutableFastCounter logReadInEditsCounter; private final MutableFastCounter logEditsFilteredCounter; @@ -47,7 +48,7 @@ public class MetricsReplicationGlobalSourceSource implements MetricsReplicationS public MetricsReplicationGlobalSourceSource(MetricsReplicationSourceImpl rms) { this.rms = rms; - ageOfLastShippedOpGauge = rms.getMetricsRegistry().getGauge(SOURCE_AGE_OF_LAST_SHIPPED_OP, 0L); + ageOfLastShippedOpHist = rms.getMetricsRegistry().getHistogram(SOURCE_AGE_OF_LAST_SHIPPED_OP); sizeOfLogQueueGauge = rms.getMetricsRegistry().getGauge(SOURCE_SIZE_OF_LOG_QUEUE, 0L); @@ -80,7 +81,7 @@ public class MetricsReplicationGlobalSourceSource implements MetricsReplicationS } @Override public void setLastShippedAge(long age) { - ageOfLastShippedOpGauge.set(age); + ageOfLastShippedOpHist.add(age); } @Override public void incrSizeOfLogQueue(int size) { @@ -137,7 +138,7 @@ public class MetricsReplicationGlobalSourceSource implements MetricsReplicationS @Override public long getLastShippedAge() { - return ageOfLastShippedOpGauge.value(); + return ageOfLastShippedOpHist.getMax(); } @Override public void incrHFilesShipped(long hfiles) { diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.java index 540212aad53..74592d97524 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSinkSourceImpl.java @@ -20,23 +20,24 @@ package org.apache.hadoop.hbase.replication.regionserver; import org.apache.hadoop.metrics2.lib.MutableFastCounter; import org.apache.hadoop.metrics2.lib.MutableGaugeLong; +import org.apache.hadoop.metrics2.lib.MutableHistogram; public class MetricsReplicationSinkSourceImpl implements MetricsReplicationSinkSource { - private final MutableGaugeLong ageGauge; + private final MutableHistogram ageHist; private final MutableFastCounter batchesCounter; private final MutableFastCounter opsCounter; private final MutableFastCounter hfilesCounter; public MetricsReplicationSinkSourceImpl(MetricsReplicationSourceImpl rms) { - ageGauge = rms.getMetricsRegistry().getGauge(SINK_AGE_OF_LAST_APPLIED_OP, 0L); + ageHist = rms.getMetricsRegistry().getHistogram(SINK_AGE_OF_LAST_APPLIED_OP); batchesCounter = rms.getMetricsRegistry().getCounter(SINK_APPLIED_BATCHES, 0L); opsCounter = rms.getMetricsRegistry().getCounter(SINK_APPLIED_OPS, 0L); hfilesCounter = rms.getMetricsRegistry().getCounter(SINK_APPLIED_HFILES, 0L); } @Override public void setLastAppliedOpAge(long age) { - ageGauge.set(age); + ageHist.add(age); } @Override public void incrAppliedBatches(long batches) { @@ -49,7 +50,7 @@ public class MetricsReplicationSinkSourceImpl implements MetricsReplicationSinkS @Override public long getLastAppliedOpAge() { - return ageGauge.value(); + return ageHist.getMax(); } @Override diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.java index 54439812c0a..0b6a1e10d8a 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceSourceImpl.java @@ -19,6 +19,7 @@ package org.apache.hadoop.hbase.replication.regionserver; import org.apache.hadoop.metrics2.lib.MutableFastCounter; import org.apache.hadoop.metrics2.lib.MutableGaugeLong; +import org.apache.hadoop.metrics2.lib.MutableHistogram; public class MetricsReplicationSourceSourceImpl implements MetricsReplicationSourceSource { @@ -39,7 +40,7 @@ public class MetricsReplicationSourceSourceImpl implements MetricsReplicationSou private final String shippedHFilesKey; private final String sizeOfHFileRefsQueueKey; - private final MutableGaugeLong ageOfLastShippedOpGauge; + private final MutableHistogram ageOfLastShippedOpHist; private final MutableGaugeLong sizeOfLogQueueGauge; private final MutableFastCounter logReadInEditsCounter; private final MutableFastCounter logEditsFilteredCounter; @@ -72,7 +73,7 @@ public class MetricsReplicationSourceSourceImpl implements MetricsReplicationSou this.keyPrefix = "source." + this.id + "."; ageOfLastShippedOpKey = this.keyPrefix + "ageOfLastShippedOp"; - ageOfLastShippedOpGauge = rms.getMetricsRegistry().getGauge(ageOfLastShippedOpKey, 0L); + ageOfLastShippedOpHist = rms.getMetricsRegistry().getHistogram(ageOfLastShippedOpKey); sizeOfLogQueueKey = this.keyPrefix + "sizeOfLogQueue"; sizeOfLogQueueGauge = rms.getMetricsRegistry().getGauge(sizeOfLogQueueKey, 0L); @@ -127,7 +128,7 @@ public class MetricsReplicationSourceSourceImpl implements MetricsReplicationSou } @Override public void setLastShippedAge(long age) { - ageOfLastShippedOpGauge.set(age); + ageOfLastShippedOpHist.add(age); } @Override public void incrSizeOfLogQueue(int size) { @@ -193,7 +194,7 @@ public class MetricsReplicationSourceSourceImpl implements MetricsReplicationSou @Override public long getLastShippedAge() { - return ageOfLastShippedOpGauge.value(); + return ageOfLastShippedOpHist.getMax(); } @Override diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java index a1cf933f065..1b8dab82be2 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/metrics2/lib/MutableHistogram.java @@ -76,6 +76,10 @@ public class MutableHistogram extends MutableMetric implements MetricHistogram { histogram.add(val, 1); } + public long getMax() { + return histogram.getMax(); + } + @Override public synchronized void snapshot(MetricsRecordBuilder metricsRecordBuilder, boolean all) { // Get a reference to the old histogram. diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java index 68f32f7544c..a647d03aac6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/MetricsSource.java @@ -82,7 +82,7 @@ public class MetricsSource implements BaseSource { public void setAgeOfLastShippedOp(long timestamp, String walGroup) { long age = EnvironmentEdgeManager.currentTime() - timestamp; singleSourceSource.setLastShippedAge(age); - globalSourceSource.setLastShippedAge(Math.max(age, globalSourceSource.getLastShippedAge())); + globalSourceSource.setLastShippedAge(age); this.lastTimeStamps.put(walGroup, timestamp); }