HBASE-21414 : StoreFileSize growth rate metric Signed-off-by: Sergey Shelukhin <ser...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/170df27b Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/170df27b Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/170df27b Branch: refs/heads/HBASE-20952 Commit: 170df27b8858c93ea22a38f28f653c347cb8ce7f Parents: 12e75a8 Author: Tommy Li <tommy...@microsoft.com> Authored: Thu Dec 6 13:43:13 2018 -0800 Committer: Sergey Shelukhin <seshe...@microsoft.com> Committed: Thu Dec 6 14:43:17 2018 -0800 ---------------------------------------------------------------------- .../regionserver/MetricsRegionServerSource.java | 3 +++ .../regionserver/MetricsRegionServerWrapper.java | 5 +++++ .../MetricsRegionServerSourceImpl.java | 2 ++ .../MetricsRegionServerWrapperImpl.java | 19 ++++++++++++++----- .../MetricsRegionServerWrapperStub.java | 7 ++++++- .../regionserver/TestMetricsRegionServer.java | 1 + 6 files changed, 31 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/170df27b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java ---------------------------------------------------------------------- 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..6d9ce54 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,8 @@ 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 " + http://git-wip-us.apache.org/repos/asf/hbase/blob/170df27b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java ---------------------------------------------------------------------- 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(); http://git-wip-us.apache.org/repos/asf/hbase/blob/170df27b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java ---------------------------------------------------------------------- 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..58c42a5 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,8 @@ 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), http://git-wip-us.apache.org/repos/asf/hbase/blob/170df27b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java ---------------------------------------------------------------------- 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..b38c3e0 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() { @@ -870,18 +877,20 @@ class MetricsRegionServerWrapperImpl long intervalReadRequestsCount = tempReadRequestsCount - lastReadRequestsCount; long intervalWriteRequestsCount = tempWriteRequestsCount - lastWriteRequestsCount; - double readRequestsRatePerMilliSecond = ((double)intervalReadRequestsCount/ - (double)period); - double writeRequestsRatePerMilliSecond = ((double)intervalWriteRequestsCount/ - (double)period); + double readRequestsRatePerMilliSecond = (double)intervalReadRequestsCount / period; + double writeRequestsRatePerMilliSecond = (double)intervalWriteRequestsCount / period; readRequestsRatePerSecond = readRequestsRatePerMilliSecond * 1000.0; writeRequestsRatePerSecond = writeRequestsRatePerMilliSecond * 1000.0; + long intervalStoreFileSize = tempStoreFileSize - lastStoreFileSize; + storeFileSizeGrowthRate = (double)intervalStoreFileSize * 1000.0 / period; + lastReadRequestsCount = tempReadRequestsCount; lastWriteRequestsCount = tempWriteRequestsCount; - + lastStoreFileSize = tempStoreFileSize; } + lastRan = currentTime; WALProvider provider = regionServer.walFactory.getWALProvider(); http://git-wip-us.apache.org/repos/asf/hbase/blob/170df27b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java ---------------------------------------------------------------------- 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 http://git-wip-us.apache.org/repos/asf/hbase/blob/170df27b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java ---------------------------------------------------------------------- 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)