Repository: hbase Updated Branches: refs/heads/branch-1 0b65f2002 -> 550d253ea refs/heads/branch-1.3 5c5aac643 -> 01165ffa8 refs/heads/master 9ba9cdeb4 -> 4c0587134
HBASE-15671 Add per-table metrics on memstore, storefile and regionsize (Alicia Ying Shu) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/4c058713 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/4c058713 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/4c058713 Branch: refs/heads/master Commit: 4c0587134a5334c5da401476dc510c746a301f1e Parents: 9ba9cde Author: Enis Soztutar <e...@apache.org> Authored: Thu Apr 21 13:33:26 2016 -0700 Committer: Enis Soztutar <e...@apache.org> Committed: Thu Apr 21 13:33:26 2016 -0700 ---------------------------------------------------------------------- .../hbase/regionserver/MetricsTableSource.java | 6 ++ .../MetricsTableWrapperAggregate.java | 15 +++++ .../regionserver/MetricsTableSourceImpl.java | 9 +++ .../TestMetricsTableSourceImpl.java | 15 +++++ .../MetricsTableWrapperAggregateImpl.java | 62 +++++++++++++++++++- .../regionserver/MetricsTableWrapperStub.java | 15 +++++ .../regionserver/TestMetricsTableAggregate.java | 12 ++-- 7 files changed, 129 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSource.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSource.java index 6daccfb..7d1f5d0 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSource.java @@ -30,6 +30,12 @@ public interface MetricsTableSource extends Comparable<MetricsTableSource> { String WRITE_REQUEST_COUNT_DESC = "Number fo write requests"; String TOTAL_REQUEST_COUNT = "totalRequestCount"; String TOTAL_REQUEST_COUNT_DESC = "Number fo total requests"; + String MEMSTORE_SIZE = "memstoreSize"; + String MEMSTORE_SIZE_DESC = "The size of memory stores"; + String STORE_FILE_SIZE = "storeFileSize"; + String STORE_FILE_SIZE_DESC = "The size of store files size"; + String TABLE_SIZE = "tableSize"; + String TABLE_SIZE_DESC = "Total size of the table in the region server"; String getTableName(); http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java index e87eb7e..85ea4f6 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregate.java @@ -39,4 +39,19 @@ public interface MetricsTableWrapperAggregate { * Get the total number of requests that have been issued against this table */ long getTotalRequestsCount(String table); + + /** + * Get the memory store size against this table + */ + long getMemstoresSize(String table); + + /** + * Get the store file size against this table + */ + long getStoreFilesSize(String table); + + /** + * Get the table region size against this table + */ + long getTableSize(String table); } http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java index 1e3734c..33a807f 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableSourceImpl.java @@ -131,6 +131,15 @@ public class MetricsTableSourceImpl implements MetricsTableSource { mrb.addCounter(Interns.info(tableNamePrefix + MetricsTableSource.TOTAL_REQUEST_COUNT, MetricsTableSource.TOTAL_REQUEST_COUNT_DESC), tableWrapperAgg.getTotalRequestsCount(tableName.getNameAsString())); + mrb.addGauge(Interns.info(tableNamePrefix + MetricsTableSource.MEMSTORE_SIZE, + MetricsTableSource.MEMSTORE_SIZE_DESC), + tableWrapperAgg.getMemstoresSize(tableName.getNameAsString())); + mrb.addGauge(Interns.info(tableNamePrefix + MetricsTableSource.STORE_FILE_SIZE, + MetricsTableSource.STORE_FILE_SIZE_DESC), + tableWrapperAgg.getStoreFilesSize(tableName.getNameAsString())); + mrb.addGauge(Interns.info(tableNamePrefix + MetricsTableSource.TABLE_SIZE, + MetricsTableSource.TABLE_SIZE_DESC), + tableWrapperAgg.getTableSize(tableName.getNameAsString())); } } } http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java index 5423ddb..2717817 100644 --- a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java +++ b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableSourceImpl.java @@ -91,6 +91,21 @@ public class TestMetricsTableSourceImpl { return 30; } + @Override + public long getMemstoresSize(String table) { + return 1000; + } + + @Override + public long getStoreFilesSize(String table) { + return 2000; + } + + @Override + public long getTableSize(String table) { + return 3000; + } + public String getTableName() { return tableName; } http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java index 3e6552c..c5f0f7b 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.java @@ -21,7 +21,6 @@ package org.apache.hadoop.hbase.regionserver; import java.io.Closeable; import java.io.IOException; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -69,6 +68,13 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr metricsTable = new MetricsTableValues(); localMetricsTableMap.put(tbl, metricsTable); } + long tempStorefilesSize = 0; + for (Store store : r.getStores()) { + tempStorefilesSize += store.getStorefilesSize(); + } + metricsTable.setMemstoresSize(metricsTable.getMemstoresSize() + r.getMemstoreSize()); + metricsTable.setStoreFilesSize(metricsTable.getStoreFilesSize() + tempStorefilesSize); + metricsTable.setTableSize(metricsTable.getMemstoresSize() + metricsTable.getStoreFilesSize()); metricsTable.setReadRequestsCount(metricsTable.getReadRequestsCount() + r.getReadRequestsCount()); metricsTable.setWriteRequestsCount(metricsTable.getWriteRequestsCount() + r.getWriteRequestsCount()); metricsTable.setTotalRequestsCount(metricsTable.getReadRequestsCount() + metricsTable.getWriteRequestsCount()); @@ -127,6 +133,33 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr } @Override + public long getMemstoresSize(String table) { + MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table)); + if (metricsTable == null) + return 0; + else + return metricsTable.getMemstoresSize(); + } + + @Override + public long getStoreFilesSize(String table) { + MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table)); + if (metricsTable == null) + return 0; + else + return metricsTable.getStoreFilesSize(); + } + + @Override + public long getTableSize(String table) { + MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table)); + if (metricsTable == null) + return 0; + else + return metricsTable.getTableSize(); + } + + @Override public void close() throws IOException { tableMetricsUpdateTask.cancel(true); } @@ -136,6 +169,9 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr private long totalRequestsCount; private long readRequestsCount; private long writeRequestsCount; + private long memstoresSize; + private long storeFilesSize; + private long tableSize; public long getTotalRequestsCount() { return totalRequestsCount; @@ -160,6 +196,30 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr public void setWriteRequestsCount(long writeRequestsCount) { this.writeRequestsCount = writeRequestsCount; } + + public long getMemstoresSize() { + return memstoresSize; + } + + public void setMemstoresSize(long memstoresSize) { + this.memstoresSize = memstoresSize; + } + + public long getStoreFilesSize() { + return storeFilesSize; + } + + public void setStoreFilesSize(long storeFilesSize) { + this.storeFilesSize = storeFilesSize; + } + + public long getTableSize() { + return tableSize; + } + + public void setTableSize(long tableSize) { + this.tableSize = tableSize; + } } } http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java index 9c7d982..6fd8dd7 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsTableWrapperStub.java @@ -41,6 +41,21 @@ public class MetricsTableWrapperStub implements MetricsTableWrapperAggregate { return 30; } + @Override + public long getMemstoresSize(String table) { + return 1000; + } + + @Override + public long getStoreFilesSize(String table) { + return 2000; + } + + @Override + public long getTableSize(String table) { + return 3000; + } + public String getTableName() { return tableName; } http://git-wip-us.apache.org/repos/asf/hbase/blob/4c058713/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java index afde53f..c114298 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsTableAggregate.java @@ -34,15 +34,19 @@ public class TestMetricsTableAggregate { @Test public void testTableWrapperAggregateMetrics() throws IOException { - String tableName = "testRequestCount"; + String tableName = "testTableMetrics"; MetricsTableWrapperStub tableWrapper = new MetricsTableWrapperStub(tableName); CompatibilitySingletonFactory.getInstance(MetricsRegionServerSourceFactory.class) .createTable(tableName, tableWrapper); MetricsTableAggregateSource agg = CompatibilitySingletonFactory .getInstance(MetricsRegionServerSourceFactory.class).getTableAggregate(); - HELPER.assertCounter("Namespace_default_table_testRequestCount_metric_readRequestCount", 10, agg); - HELPER.assertCounter("Namespace_default_table_testRequestCount_metric_writeRequestCount", 20, agg); - HELPER.assertCounter("Namespace_default_table_testRequestCount_metric_totalRequestCount", 30, agg); + HELPER.assertCounter("Namespace_default_table_testTableMetrics_metric_readRequestCount", 10, agg); + HELPER.assertCounter("Namespace_default_table_testTableMetrics_metric_writeRequestCount", 20, agg); + HELPER.assertCounter("Namespace_default_table_testTableMetrics_metric_totalRequestCount", 30, agg); + + HELPER.assertGauge("Namespace_default_table_testTableMetrics_metric_memstoreSize", 1000, agg); + HELPER.assertGauge("Namespace_default_table_testTableMetrics_metric_storeFileSize", 2000, agg); + HELPER.assertGauge("Namespace_default_table_testTableMetrics_metric_tableSize", 3000, agg); } } \ No newline at end of file