HBASE-27188 Report maxStoreFileCount in jmx (#4609)
Signed-off-by: Andrew Purtell <apurtell@apache.org>
This commit is contained in:
parent
779c4e2316
commit
6e66e78177
|
@ -581,6 +581,8 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo
|
||||||
String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount";
|
String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount";
|
||||||
String RPC_MUTATE_REQUEST_COUNT_DESC =
|
String RPC_MUTATE_REQUEST_COUNT_DESC =
|
||||||
"Number of rpc mutation requests this RegionServer has answered.";
|
"Number of rpc mutation requests this RegionServer has answered.";
|
||||||
|
String MAX_STOREFILE_COUNT = "maxStoreFileCount";
|
||||||
|
String MAX_STOREFILE_COUNT_DESC = "Max store file count across all regions";
|
||||||
String AVERAGE_REGION_SIZE = "averageRegionSize";
|
String AVERAGE_REGION_SIZE = "averageRegionSize";
|
||||||
String AVERAGE_REGION_SIZE_DESC =
|
String AVERAGE_REGION_SIZE_DESC =
|
||||||
"Average region size over the RegionServer including memstore and storefile sizes.";
|
"Average region size over the RegionServer including memstore and storefile sizes.";
|
||||||
|
|
|
@ -483,6 +483,8 @@ public class MetricsRegionServerSourceImpl extends BaseSourceImpl
|
||||||
.addGauge(Interns.info(WALFILE_COUNT, WALFILE_COUNT_DESC), rsWrap.getNumWALFiles())
|
.addGauge(Interns.info(WALFILE_COUNT, WALFILE_COUNT_DESC), rsWrap.getNumWALFiles())
|
||||||
.addGauge(Interns.info(WALFILE_SIZE, WALFILE_SIZE_DESC), rsWrap.getWALFileSize())
|
.addGauge(Interns.info(WALFILE_SIZE, WALFILE_SIZE_DESC), rsWrap.getWALFileSize())
|
||||||
.addGauge(Interns.info(STOREFILE_COUNT, STOREFILE_COUNT_DESC), rsWrap.getNumStoreFiles())
|
.addGauge(Interns.info(STOREFILE_COUNT, STOREFILE_COUNT_DESC), rsWrap.getNumStoreFiles())
|
||||||
|
.addGauge(Interns.info(MAX_STOREFILE_COUNT, MAX_STOREFILE_COUNT_DESC),
|
||||||
|
rsWrap.getMaxStoreFiles())
|
||||||
.addGauge(Interns.info(MEMSTORE_SIZE, MEMSTORE_SIZE_DESC), rsWrap.getMemStoreSize())
|
.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, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize())
|
||||||
.addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC),
|
.addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC),
|
||||||
|
|
|
@ -91,6 +91,11 @@ public interface MetricsRegionServerWrapper {
|
||||||
*/
|
*/
|
||||||
long getNumStoreFiles();
|
long getNumStoreFiles();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the max number of store files across all regions of this region server.
|
||||||
|
*/
|
||||||
|
long getMaxStoreFiles();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the size of the memstore on this region server.
|
* Get the size of the memstore on this region server.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -299,6 +299,10 @@ public class MetricsTableSourceImpl implements MetricsTableSource {
|
||||||
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_COUNT,
|
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_COUNT,
|
||||||
MetricsRegionServerSource.STOREFILE_COUNT_DESC),
|
MetricsRegionServerSource.STOREFILE_COUNT_DESC),
|
||||||
tableWrapperAgg.getNumStoreFiles(tableName.getNameAsString()));
|
tableWrapperAgg.getNumStoreFiles(tableName.getNameAsString()));
|
||||||
|
mrb.addGauge(
|
||||||
|
Interns.info(tableNamePrefix + MetricsRegionServerSource.MAX_STOREFILE_COUNT,
|
||||||
|
MetricsRegionServerSource.MAX_STOREFILE_COUNT_DESC),
|
||||||
|
tableWrapperAgg.getMaxStoreFiles(tableName.getNameAsString()));
|
||||||
mrb.addGauge(
|
mrb.addGauge(
|
||||||
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_SIZE,
|
Interns.info(tableNamePrefix + MetricsRegionServerSource.STOREFILE_SIZE,
|
||||||
MetricsRegionServerSource.STOREFILE_SIZE_DESC),
|
MetricsRegionServerSource.STOREFILE_SIZE_DESC),
|
||||||
|
|
|
@ -88,6 +88,11 @@ public interface MetricsTableWrapperAggregate {
|
||||||
*/
|
*/
|
||||||
long getNumStoreFiles(String table);
|
long getNumStoreFiles(String table);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the max number of store files across all regions of this table
|
||||||
|
*/
|
||||||
|
long getMaxStoreFiles(String table);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Max age of store files for this table
|
* @return Max age of store files for this table
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -82,6 +82,11 @@ public class MetricsTableWrapperStub implements MetricsTableWrapperAggregate {
|
||||||
return 33;
|
return 33;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMaxStoreFiles(String table) {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getMaxStoreFileAge(String table) {
|
public long getMaxStoreFileAge(String table) {
|
||||||
return 44;
|
return 44;
|
||||||
|
|
|
@ -82,6 +82,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
||||||
private volatile long offHeapMemstoreSize = 0;
|
private volatile long offHeapMemstoreSize = 0;
|
||||||
private volatile long storeFileSize = 0;
|
private volatile long storeFileSize = 0;
|
||||||
private volatile double storeFileSizeGrowthRate = 0;
|
private volatile double storeFileSizeGrowthRate = 0;
|
||||||
|
private volatile long maxStoreFileCount = 0;
|
||||||
private volatile long maxStoreFileAge = 0;
|
private volatile long maxStoreFileAge = 0;
|
||||||
private volatile long minStoreFileAge = 0;
|
private volatile long minStoreFileAge = 0;
|
||||||
private volatile long avgStoreFileAge = 0;
|
private volatile long avgStoreFileAge = 0;
|
||||||
|
@ -480,6 +481,11 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
||||||
return numStoreFiles;
|
return numStoreFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMaxStoreFiles() {
|
||||||
|
return maxStoreFileCount;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getMaxStoreFileAge() {
|
public long getMaxStoreFileAge() {
|
||||||
return maxStoreFileAge;
|
return maxStoreFileAge;
|
||||||
|
@ -763,6 +769,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
||||||
long tempNumStores = 0, tempNumStoreFiles = 0, tempStoreFileSize = 0;
|
long tempNumStores = 0, tempNumStoreFiles = 0, tempStoreFileSize = 0;
|
||||||
long tempMemstoreSize = 0, tempOnHeapMemstoreSize = 0, tempOffHeapMemstoreSize = 0;
|
long tempMemstoreSize = 0, tempOnHeapMemstoreSize = 0, tempOffHeapMemstoreSize = 0;
|
||||||
long tempMaxStoreFileAge = 0, tempNumReferenceFiles = 0;
|
long tempMaxStoreFileAge = 0, tempNumReferenceFiles = 0;
|
||||||
|
long tempMaxStoreFileCount = 0;
|
||||||
long avgAgeNumerator = 0, numHFiles = 0;
|
long avgAgeNumerator = 0, numHFiles = 0;
|
||||||
long tempMinStoreFileAge = Long.MAX_VALUE;
|
long tempMinStoreFileAge = Long.MAX_VALUE;
|
||||||
long tempFilteredReadRequestsCount = 0, tempCpRequestsCount = 0;
|
long tempFilteredReadRequestsCount = 0, tempCpRequestsCount = 0;
|
||||||
|
@ -846,6 +853,8 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
||||||
tempOffHeapMemstoreSize += store.getMemStoreSize().getOffHeapSize();
|
tempOffHeapMemstoreSize += store.getMemStoreSize().getOffHeapSize();
|
||||||
tempStoreFileSize += store.getStorefilesSize();
|
tempStoreFileSize += store.getStorefilesSize();
|
||||||
|
|
||||||
|
tempMaxStoreFileCount = Math.max(tempMaxStoreFileCount, store.getStorefilesCount());
|
||||||
|
|
||||||
OptionalLong storeMaxStoreFileAge = store.getMaxStoreFileAge();
|
OptionalLong storeMaxStoreFileAge = store.getMaxStoreFileAge();
|
||||||
if (
|
if (
|
||||||
storeMaxStoreFileAge.isPresent()
|
storeMaxStoreFileAge.isPresent()
|
||||||
|
@ -952,6 +961,7 @@ class MetricsRegionServerWrapperImpl implements MetricsRegionServerWrapper {
|
||||||
onHeapMemstoreSize = tempOnHeapMemstoreSize;
|
onHeapMemstoreSize = tempOnHeapMemstoreSize;
|
||||||
offHeapMemstoreSize = tempOffHeapMemstoreSize;
|
offHeapMemstoreSize = tempOffHeapMemstoreSize;
|
||||||
storeFileSize = tempStoreFileSize;
|
storeFileSize = tempStoreFileSize;
|
||||||
|
maxStoreFileCount = tempMaxStoreFileCount;
|
||||||
maxStoreFileAge = tempMaxStoreFileAge;
|
maxStoreFileAge = tempMaxStoreFileAge;
|
||||||
if (regionCount > 0) {
|
if (regionCount > 0) {
|
||||||
averageRegionSize = (memstoreSize + storeFileSize) / regionCount;
|
averageRegionSize = (memstoreSize + storeFileSize) / regionCount;
|
||||||
|
|
|
@ -75,6 +75,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
familyName = store.getColumnFamilyName();
|
familyName = store.getColumnFamilyName();
|
||||||
|
|
||||||
mt.storeFileCount += store.getStorefilesCount();
|
mt.storeFileCount += store.getStorefilesCount();
|
||||||
|
mt.maxStoreFileCount = Math.max(mt.maxStoreFileCount, store.getStorefilesCount());
|
||||||
mt.memstoreSize += (store.getMemStoreSize().getDataSize()
|
mt.memstoreSize += (store.getMemStoreSize().getDataSize()
|
||||||
+ store.getMemStoreSize().getHeapSize() + store.getMemStoreSize().getOffHeapSize());
|
+ store.getMemStoreSize().getHeapSize() + store.getMemStoreSize().getOffHeapSize());
|
||||||
mt.storeFileSize += store.getStorefilesSize();
|
mt.storeFileSize += store.getStorefilesSize();
|
||||||
|
@ -263,6 +264,15 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
return metricsTable.storeFileCount;
|
return metricsTable.storeFileCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMaxStoreFiles(String table) {
|
||||||
|
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
|
||||||
|
if (metricsTable == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return metricsTable.maxStoreFileCount;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getMaxStoreFileAge(String table) {
|
public long getMaxStoreFileAge(String table) {
|
||||||
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
|
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
|
||||||
|
@ -334,6 +344,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
|
||||||
long regionCount;
|
long regionCount;
|
||||||
long storeCount;
|
long storeCount;
|
||||||
long storeFileCount;
|
long storeFileCount;
|
||||||
|
long maxStoreFileCount;
|
||||||
long storeFileSize;
|
long storeFileSize;
|
||||||
long maxStoreFileAge;
|
long maxStoreFileAge;
|
||||||
long minStoreFileAge = Long.MAX_VALUE;
|
long minStoreFileAge = Long.MAX_VALUE;
|
||||||
|
|
|
@ -62,6 +62,11 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe
|
||||||
return 300;
|
return 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getMaxStoreFiles() {
|
||||||
|
return 23;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getMemStoreSize() {
|
public long getMemStoreSize() {
|
||||||
return 1025;
|
return 1025;
|
||||||
|
|
|
@ -72,6 +72,7 @@ public class TestMetricsRegionServer {
|
||||||
HELPER.assertGauge("regionServerStartTime", 100, serverSource);
|
HELPER.assertGauge("regionServerStartTime", 100, serverSource);
|
||||||
HELPER.assertGauge("regionCount", 101, serverSource);
|
HELPER.assertGauge("regionCount", 101, serverSource);
|
||||||
HELPER.assertGauge("storeCount", 2, serverSource);
|
HELPER.assertGauge("storeCount", 2, serverSource);
|
||||||
|
HELPER.assertGauge("maxStoreFileCount", 23, serverSource);
|
||||||
HELPER.assertGauge("maxStoreFileAge", 2, serverSource);
|
HELPER.assertGauge("maxStoreFileAge", 2, serverSource);
|
||||||
HELPER.assertGauge("minStoreFileAge", 2, serverSource);
|
HELPER.assertGauge("minStoreFileAge", 2, serverSource);
|
||||||
HELPER.assertGauge("avgStoreFileAge", 2, serverSource);
|
HELPER.assertGauge("avgStoreFileAge", 2, serverSource);
|
||||||
|
|
|
@ -91,6 +91,7 @@ public class TestMetricsTableAggregate {
|
||||||
HELPER.assertGauge(pre + "regionCount", 11, agg);
|
HELPER.assertGauge(pre + "regionCount", 11, agg);
|
||||||
HELPER.assertGauge(pre + "storeCount", 22, agg);
|
HELPER.assertGauge(pre + "storeCount", 22, agg);
|
||||||
HELPER.assertGauge(pre + "storeFileCount", 33, agg);
|
HELPER.assertGauge(pre + "storeFileCount", 33, agg);
|
||||||
|
HELPER.assertGauge(pre + "maxStoreFileCount", 8, agg);
|
||||||
HELPER.assertGauge(pre + "maxStoreFileAge", 44, agg);
|
HELPER.assertGauge(pre + "maxStoreFileAge", 44, agg);
|
||||||
HELPER.assertGauge(pre + "minStoreFileAge", 55, agg);
|
HELPER.assertGauge(pre + "minStoreFileAge", 55, agg);
|
||||||
HELPER.assertGauge(pre + "avgStoreFileAge", 66, agg);
|
HELPER.assertGauge(pre + "avgStoreFileAge", 66, agg);
|
||||||
|
|
Loading…
Reference in New Issue