From 8195cd1c1f873315571ba7760448d9df40707db6 Mon Sep 17 00:00:00 2001 From: Tommy Li Date: Wed, 31 Oct 2018 13:18:29 -0700 Subject: [PATCH] add storeFileSizeGrowthRate metric --- .../hbase/regionserver/MetricsRegionServerSource.java | 2 ++ .../hbase/regionserver/MetricsRegionServerWrapper.java | 5 +++++ .../hbase/regionserver/MetricsRegionServerSourceImpl.java | 1 + .../hbase/regionserver/MetricsRegionServerWrapperImpl.java | 13 ++++++++++++- .../hbase/regionserver/MetricsRegionServerWrapperStub.java | 7 ++++++- .../hadoop/hbase/regionserver/TestMetricsRegionServer.java | 1 + 6 files changed, 27 insertions(+), 2 deletions(-) diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java index b94ee2d..0eeb64d 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java @@ -234,6 +234,7 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo String MEMSTORE_SIZE = "memStoreSize"; String MEMSTORE_SIZE_DESC = "Size of the memstore"; String STOREFILE_SIZE = "storeFileSize"; + String STOREFILE_SIZE_GROWTH_RATE = "storeFileSizeGrowthRate"; String MAX_STORE_FILE_AGE = "maxStoreFileAge"; String MIN_STORE_FILE_AGE = "minStoreFileAge"; String AVG_STORE_FILE_AGE = "avgStoreFileAge"; @@ -243,6 +244,7 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo String AVG_STORE_FILE_AGE_DESC = "Average age of store files hosted on this RegionServer"; String NUM_REFERENCE_FILES_DESC = "Number of reference file on this RegionServer"; String STOREFILE_SIZE_DESC = "Size of storefiles being served."; + String STOREFILE_SIZE_GROWTH_RATE_DESC = "Bytes per second by which the size of storefiles being served grows."; String TOTAL_REQUEST_COUNT = "totalRequestCount"; String TOTAL_REQUEST_COUNT_DESC = "Total number of requests this RegionServer has answered; increments the count once for " + diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java index b3a8dac..03ebc4c 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java @@ -101,6 +101,11 @@ public interface MetricsRegionServerWrapper { long getStoreFileSize(); /** + * Get the growth rate of the store files this region server is serving from. + */ + double getStoreFileSizeGrowthRate(); + + /** * @return Max age of store files hosted on this region server */ long getMaxStoreFileAge(); diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java index 44dbc79..e95d85f 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java @@ -482,6 +482,7 @@ public class MetricsRegionServerSourceImpl rsWrap.getNumStoreFiles()) .addGauge(Interns.info(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC), rsWrap.getMemStoreSize()) .addGauge(Interns.info(STOREFILE_SIZE, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize()) + .addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC), rsWrap.getStoreFileSizeGrowthRate()) .addGauge(Interns.info(MAX_STORE_FILE_AGE, MAX_STORE_FILE_AGE_DESC), rsWrap.getMaxStoreFileAge()) .addGauge(Interns.info(MIN_STORE_FILE_AGE, MIN_STORE_FILE_AGE_DESC), diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java index 04a32c8..015f710 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java @@ -68,6 +68,7 @@ class MetricsRegionServerWrapperImpl private volatile long numStoreFiles = 0; private volatile long memstoreSize = 0; private volatile long storeFileSize = 0; + private volatile double storeFileSizeGrowthRate = 0; private volatile long maxStoreFileAge = 0; private volatile long minStoreFileAge = 0; private volatile long avgStoreFileAge = 0; @@ -512,6 +513,11 @@ class MetricsRegionServerWrapperImpl return storeFileSize; } + @Override + public double getStoreFileSizeGrowthRate() { + return storeFileSizeGrowthRate; + } + @Override public double getRequestsPerSecond() { return requestsPerSecond; } @@ -730,6 +736,7 @@ class MetricsRegionServerWrapperImpl private long lastRequestCount = 0; private long lastReadRequestsCount = 0; private long lastWriteRequestsCount = 0; + private long lastStoreFileSize = 0; @Override synchronized public void run() { @@ -878,10 +885,14 @@ class MetricsRegionServerWrapperImpl readRequestsRatePerSecond = readRequestsRatePerMilliSecond * 1000.0; writeRequestsRatePerSecond = writeRequestsRatePerMilliSecond * 1000.0; + long intervalStoreFileSize = tempStoreFileSize - lastStoreFileSize; + storeFileSizeGrowthRate = (double)intervalStoreFileSize * 1000.0 / (double)period; + lastReadRequestsCount = tempReadRequestsCount; lastWriteRequestsCount = tempWriteRequestsCount; - + lastStoreFileSize = tempStoreFileSize; } + lastRan = currentTime; WALProvider provider = regionServer.walFactory.getWALProvider(); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java index 314d69c..b003b44 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java @@ -71,6 +71,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe } @Override + public double getStoreFileSizeGrowthRate() { + return 50.0; + } + + @Override public long getMaxStoreFileAge() { return 2; } @@ -222,7 +227,7 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe @Override public long getMemStoreLimit() { - return 419; + return 419; } @Override 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 fa8ea46..8215ea1 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 @@ -78,6 +78,7 @@ public class TestMetricsRegionServer { HELPER.assertGauge("storeFileCount", 300, serverSource); HELPER.assertGauge("memstoreSize", 1025, serverSource); HELPER.assertGauge("storeFileSize", 1900, serverSource); + HELPER.assertGauge("storeFileSizeGrowthRate", 50.0, serverSource); HELPER.assertCounter("totalRequestCount", 899, serverSource); HELPER.assertCounter("totalRowActionRequestCount", HELPER.getCounter("readRequestCount", serverSource) -- 2.7.4