You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by re...@apache.org on 2020/10/26 03:01:17 UTC
[hbase] branch branch-2.3 updated: HBASE-25189 [Metrics] Add
checkAndPut and checkAndDelete latency metrics at table level (#2548)
This is an automated email from the ASF dual-hosted git repository.
reidchan pushed a commit to branch branch-2.3
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.3 by this push:
new 143ab25 HBASE-25189 [Metrics] Add checkAndPut and checkAndDelete latency metrics at table level (#2548)
143ab25 is described below
commit 143ab2556ced998e935ec37bd0bd80f51a484bc2
Author: Reid Chan <re...@apache.org>
AuthorDate: Mon Oct 26 10:46:06 2020 +0800
HBASE-25189 [Metrics] Add checkAndPut and checkAndDelete latency metrics at table level (#2548)
Signed-off-by: Viraj Jasani <vj...@apache.org>
Conflicts:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
---
.../hbase/regionserver/MetricsTableLatencies.java | 17 +++++++++++++++
.../regionserver/MetricsTableLatenciesImpl.java | 25 ++++++++++++++++++++++
.../hbase/regionserver/MetricsRegionServer.java | 10 +++++++--
.../hadoop/hbase/regionserver/RSRpcServices.java | 8 ++++---
.../regionserver/RegionServerTableMetrics.java | 8 +++++++
.../regionserver/TestMetricsRegionServer.java | 15 ++-----------
6 files changed, 65 insertions(+), 18 deletions(-)
diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatencies.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatencies.java
index 231bad1..a4181e9 100644
--- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatencies.java
+++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatencies.java
@@ -53,6 +53,8 @@ public interface MetricsTableLatencies {
String DELETE_BATCH_TIME = "deleteBatchTime";
String INCREMENT_TIME = "incrementTime";
String APPEND_TIME = "appendTime";
+ String CHECK_AND_DELETE_TIME = "checkAndDeleteTime";
+ String CHECK_AND_PUT_TIME = "checkAndPutTime";
/**
* Update the Put time histogram
@@ -125,4 +127,19 @@ public interface MetricsTableLatencies {
* @param t time it took
*/
void updateScanTime(String tableName, long t);
+
+ /**
+ * Update the CheckAndDelete time histogram.
+ * @param nameAsString The table the metric is for
+ * @param time time it took
+ */
+ void updateCheckAndDelete(String nameAsString, long time);
+
+ /**
+ * Update the CheckAndPut time histogram.
+ * @param nameAsString The table the metric is for
+ * @param time time it took
+ */
+ void updateCheckAndPut(String nameAsString, long time);
+
}
diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatenciesImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatenciesImpl.java
index 5a3f3b9..4d0c74c 100644
--- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatenciesImpl.java
+++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableLatenciesImpl.java
@@ -47,6 +47,8 @@ public class MetricsTableLatenciesImpl extends BaseSourceImpl implements Metrics
final MetricHistogram deleteBatchTimeHisto;
final MetricHistogram scanTimeHisto;
final MetricHistogram scanSizeHisto;
+ final MetricHistogram checkAndDeleteTimeHisto;
+ final MetricHistogram checkAndPutTimeHisto;
TableHistograms(DynamicMetricsRegistry registry, TableName tn) {
getTimeHisto = registry.newTimeHistogram(qualifyMetricsName(tn, GET_TIME));
@@ -60,6 +62,10 @@ public class MetricsTableLatenciesImpl extends BaseSourceImpl implements Metrics
qualifyMetricsName(tn, DELETE_BATCH_TIME));
scanTimeHisto = registry.newTimeHistogram(qualifyMetricsName(tn, SCAN_TIME));
scanSizeHisto = registry.newSizeHistogram(qualifyMetricsName(tn, SCAN_SIZE));
+ checkAndDeleteTimeHisto =
+ registry.newTimeHistogram(qualifyMetricsName(tn, CHECK_AND_DELETE_TIME));
+ checkAndPutTimeHisto =
+ registry.newTimeHistogram(qualifyMetricsName(tn, CHECK_AND_PUT_TIME));
}
public void updatePut(long time) {
@@ -97,6 +103,15 @@ public class MetricsTableLatenciesImpl extends BaseSourceImpl implements Metrics
public void updateScanTime(long t) {
scanTimeHisto.add(t);
}
+
+ public void updateCheckAndDeleteTime(long t) {
+ checkAndDeleteTimeHisto.add(t);
+ }
+
+ public void updateCheckAndPutTime(long t) {
+ checkAndPutTimeHisto.add(t);
+ }
+
}
@VisibleForTesting
@@ -175,6 +190,16 @@ public class MetricsTableLatenciesImpl extends BaseSourceImpl implements Metrics
}
@Override
+ public void updateCheckAndDelete(String tableName, long time) {
+ getOrCreateTableHistogram(tableName).updateCheckAndDeleteTime(time);
+ }
+
+ @Override
+ public void updateCheckAndPut(String tableName, long time) {
+ getOrCreateTableHistogram(tableName).updateCheckAndPutTime(time);
+ }
+
+ @Override
public void getMetrics(MetricsCollector metricsCollector, boolean all) {
MetricsRecordBuilder mrb = metricsCollector.addRecord(metricsName);
// source is registered in supers constructor, sometimes called before the whole initialization.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServer.java
index a66ae00..f393853 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServer.java
@@ -145,11 +145,17 @@ public class MetricsRegionServer {
serverSource.updateDeleteBatch(t);
}
- public void updateCheckAndDelete(long t) {
+ public void updateCheckAndDelete(TableName tn, long t) {
+ if (tableMetrics != null && tn != null) {
+ tableMetrics.updateCheckAndDelete(tn, t);
+ }
serverSource.updateCheckAndDelete(t);
}
- public void updateCheckAndPut(long t) {
+ public void updateCheckAndPut(TableName tn, long t) {
+ if (tableMetrics != null && tn != null) {
+ tableMetrics.updateCheckAndPut(tn, t);
+ }
serverSource.updateCheckAndPut(t);
}
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index d1074cd..d749e1b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -3062,7 +3062,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
switch (type) {
case DELETE:
if (request.hasCondition()) {
- metricsRegionServer.updateCheckAndDelete(after - before);
+ metricsRegionServer.updateCheckAndDelete(
+ region == null ? null : region.getRegionInfo().getTable(), after - before);
} else {
metricsRegionServer.updateDelete(
region == null ? null : region.getRegionInfo().getTable(), after - before);
@@ -3070,10 +3071,11 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
break;
case PUT:
if (request.hasCondition()) {
- metricsRegionServer.updateCheckAndPut(after - before);
+ metricsRegionServer.updateCheckAndPut(
+ region == null ? null : region.getRegionInfo().getTable(), after - before);
} else {
metricsRegionServer.updatePut(
- region == null ? null : region.getRegionInfo().getTable(),after - before);
+ region == null ? null : region.getRegionInfo().getTable(), after - before);
}
break;
default:
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerTableMetrics.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerTableMetrics.java
index ec6c049..0653066 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerTableMetrics.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionServerTableMetrics.java
@@ -65,6 +65,14 @@ public class RegionServerTableMetrics {
latencies.updateDeleteBatch(table.getNameAsString(), time);
}
+ public void updateCheckAndDelete(TableName table, long time) {
+ latencies.updateCheckAndDelete(table.getNameAsString(), time);
+ }
+
+ public void updateCheckAndPut(TableName table, long time) {
+ latencies.updateCheckAndPut(table.getNameAsString(), time);
+ }
+
public void updateScanTime(TableName table, long time) {
latencies.updateScanTime(table.getNameAsString(), time);
}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
index 4bf71c8..ab22c8e 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java
@@ -149,8 +149,8 @@ public class TestMetricsRegionServer {
for (int i=0; i < 17; i ++) {
rsm.updatePut(null, 17);
rsm.updateDelete(null, 17);
- rsm.updateCheckAndDelete(17);
- rsm.updateCheckAndPut(17);
+ rsm.updateCheckAndDelete(null, 17);
+ rsm.updateCheckAndPut(null, 17);
}
HELPER.assertCounter("appendNumOps", 24, serverSource);
@@ -171,17 +171,6 @@ public class TestMetricsRegionServer {
HELPER.assertCounter("slowPutCount", 16, serverSource);
}
- String FLUSH_TIME = "flushTime";
- String FLUSH_TIME_DESC = "Histogram for the time in millis for memstore flush";
- String FLUSH_MEMSTORE_SIZE = "flushMemstoreSize";
- String FLUSH_MEMSTORE_SIZE_DESC = "Histogram for number of bytes in the memstore for a flush";
- String FLUSH_FILE_SIZE = "flushFileSize";
- String FLUSH_FILE_SIZE_DESC = "Histogram for number of bytes in the resulting file for a flush";
- String FLUSHED_OUTPUT_BYTES = "flushedOutputBytes";
- String FLUSHED_OUTPUT_BYTES_DESC = "Total number of bytes written from flush";
- String FLUSHED_MEMSTORE_BYTES = "flushedMemstoreBytes";
- String FLUSHED_MEMSTORE_BYTES_DESC = "Total number of bytes of cells in memstore from flush";
-
@Test
public void testFlush() {
rsm.updateFlush(null, 1, 2, 3);