HBASE-15671 Add per-table metrics on memstore, storefile and regionsize (Alicia Ying Shu)
This commit is contained in:
parent
0b65f2002b
commit
550d253ead
|
@ -30,6 +30,12 @@ public interface MetricsTableSource extends Comparable<MetricsTableSource> {
|
||||||
String WRITE_REQUEST_COUNT_DESC = "Number fo write requests";
|
String WRITE_REQUEST_COUNT_DESC = "Number fo write requests";
|
||||||
String TOTAL_REQUEST_COUNT = "totalRequestCount";
|
String TOTAL_REQUEST_COUNT = "totalRequestCount";
|
||||||
String TOTAL_REQUEST_COUNT_DESC = "Number fo total requests";
|
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();
|
String getTableName();
|
||||||
|
|
||||||
|
|
|
@ -39,4 +39,19 @@ public interface MetricsTableWrapperAggregate {
|
||||||
* Get the total number of requests that have been issued against this table
|
* Get the total number of requests that have been issued against this table
|
||||||
*/
|
*/
|
||||||
long getTotalRequestsCount(String 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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -131,6 +131,15 @@ public class MetricsTableSourceImpl implements MetricsTableSource {
|
||||||
mrb.addCounter(Interns.info(tableNamePrefix + MetricsTableSource.TOTAL_REQUEST_COUNT,
|
mrb.addCounter(Interns.info(tableNamePrefix + MetricsTableSource.TOTAL_REQUEST_COUNT,
|
||||||
MetricsTableSource.TOTAL_REQUEST_COUNT_DESC),
|
MetricsTableSource.TOTAL_REQUEST_COUNT_DESC),
|
||||||
tableWrapperAgg.getTotalRequestsCount(tableName.getNameAsString()));
|
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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,21 @@ public class TestMetricsTableSourceImpl {
|
||||||
return 30;
|
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() {
|
public String getTableName() {
|
||||||
return tableName;
|
return tableName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ package org.apache.hadoop.hbase.regionserver;
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
@ -69,6 +68,13 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
metricsTable = new MetricsTableValues();
|
metricsTable = new MetricsTableValues();
|
||||||
localMetricsTableMap.put(tbl, metricsTable);
|
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.setReadRequestsCount(metricsTable.getReadRequestsCount() + r.getReadRequestsCount());
|
||||||
metricsTable.setWriteRequestsCount(metricsTable.getWriteRequestsCount() + r.getWriteRequestsCount());
|
metricsTable.setWriteRequestsCount(metricsTable.getWriteRequestsCount() + r.getWriteRequestsCount());
|
||||||
metricsTable.setTotalRequestsCount(metricsTable.getReadRequestsCount() + metricsTable.getWriteRequestsCount());
|
metricsTable.setTotalRequestsCount(metricsTable.getReadRequestsCount() + metricsTable.getWriteRequestsCount());
|
||||||
|
@ -126,6 +132,33 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
return metricsTable.getTotalRequestsCount();
|
return metricsTable.getTotalRequestsCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
tableMetricsUpdateTask.cancel(true);
|
tableMetricsUpdateTask.cancel(true);
|
||||||
|
@ -136,6 +169,9 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
private long totalRequestsCount;
|
private long totalRequestsCount;
|
||||||
private long readRequestsCount;
|
private long readRequestsCount;
|
||||||
private long writeRequestsCount;
|
private long writeRequestsCount;
|
||||||
|
private long memstoresSize;
|
||||||
|
private long storeFilesSize;
|
||||||
|
private long tableSize;
|
||||||
|
|
||||||
public long getTotalRequestsCount() {
|
public long getTotalRequestsCount() {
|
||||||
return totalRequestsCount;
|
return totalRequestsCount;
|
||||||
|
@ -160,6 +196,30 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
public void setWriteRequestsCount(long writeRequestsCount) {
|
public void setWriteRequestsCount(long writeRequestsCount) {
|
||||||
this.writeRequestsCount = 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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,21 @@ public class MetricsTableWrapperStub implements MetricsTableWrapperAggregate {
|
||||||
return 30;
|
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() {
|
public String getTableName() {
|
||||||
return tableName;
|
return tableName;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,15 +34,19 @@ public class TestMetricsTableAggregate {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTableWrapperAggregateMetrics() throws IOException {
|
public void testTableWrapperAggregateMetrics() throws IOException {
|
||||||
String tableName = "testRequestCount";
|
String tableName = "testTableMetrics";
|
||||||
MetricsTableWrapperStub tableWrapper = new MetricsTableWrapperStub(tableName);
|
MetricsTableWrapperStub tableWrapper = new MetricsTableWrapperStub(tableName);
|
||||||
CompatibilitySingletonFactory.getInstance(MetricsRegionServerSourceFactory.class)
|
CompatibilitySingletonFactory.getInstance(MetricsRegionServerSourceFactory.class)
|
||||||
.createTable(tableName, tableWrapper);
|
.createTable(tableName, tableWrapper);
|
||||||
MetricsTableAggregateSource agg = CompatibilitySingletonFactory
|
MetricsTableAggregateSource agg = CompatibilitySingletonFactory
|
||||||
.getInstance(MetricsRegionServerSourceFactory.class).getTableAggregate();
|
.getInstance(MetricsRegionServerSourceFactory.class).getTableAggregate();
|
||||||
|
|
||||||
HELPER.assertCounter("Namespace_default_table_testRequestCount_metric_readRequestCount", 10, agg);
|
HELPER.assertCounter("Namespace_default_table_testTableMetrics_metric_readRequestCount", 10, agg);
|
||||||
HELPER.assertCounter("Namespace_default_table_testRequestCount_metric_writeRequestCount", 20, agg);
|
HELPER.assertCounter("Namespace_default_table_testTableMetrics_metric_writeRequestCount", 20, agg);
|
||||||
HELPER.assertCounter("Namespace_default_table_testRequestCount_metric_totalRequestCount", 30, 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue