You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by vj...@apache.org on 2021/02/13 04:05:35 UTC
[hbase] branch branch-1 updated: HBASE-25569 Adding region count
and average region size in a table at regionserver level (#2948)
This is an automated email from the ASF dual-hosted git repository.
vjasani pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-1 by this push:
new e2a00af HBASE-25569 Adding region count and average region size in a table at regionserver level (#2948)
e2a00af is described below
commit e2a00af843cd0343ce28e502afd4bbaa44e6b9ff
Author: Aman Poonia <am...@gmail.com>
AuthorDate: Sat Feb 13 09:35:04 2021 +0530
HBASE-25569 Adding region count and average region size in a table at regionserver level (#2948)
Signed-off-by: Viraj Jasani <vj...@apache.org>
---
.../regionserver/MetricsTableWrapperAggregate.java | 10 +++
.../hbase/regionserver/MetricsTableSourceImpl.java | 6 ++
.../regionserver/TestMetricsTableSourceImpl.java | 10 +++
.../MetricsTableWrapperAggregateImpl.java | 78 ++++++++++++++++------
.../regionserver/MetricsTableWrapperStub.java | 10 +++
5 files changed, 92 insertions(+), 22 deletions(-)
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 85ea4f6..f5f6d4e 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
@@ -54,4 +54,14 @@ public interface MetricsTableWrapperAggregate {
* Get the table region size against this table
*/
long getTableSize(String table);
+
+ /**
+ * Get the average region size for this table
+ */
+ long getAvgRegionSize(String table);
+
+ /**
+ * Get the number of regions hosted on for this table
+ */
+ long getNumRegions(String table);
}
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 5d1dd79..da10d07 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
@@ -140,6 +140,12 @@ public class MetricsTableSourceImpl implements MetricsTableSource {
mrb.addGauge(Interns.info(tableNamePrefix + MetricsTableSource.TABLE_SIZE,
MetricsTableSource.TABLE_SIZE_DESC),
tableWrapperAgg.getTableSize(tableName.getNameAsString()));
+ mrb.addGauge(Interns.info(tableNamePrefix + MetricsRegionServerSource.AVERAGE_REGION_SIZE,
+ MetricsRegionServerSource.AVERAGE_REGION_SIZE_DESC),
+ tableWrapperAgg.getAvgRegionSize(tableName.getNameAsString()));
+ mrb.addGauge(Interns.info(tableNamePrefix + MetricsRegionServerSource.REGION_COUNT,
+ MetricsRegionServerSource.REGION_COUNT_DESC),
+ tableWrapperAgg.getNumRegions(tableName.getNameAsString()));
}
}
}
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 3a9e73d..32f4857 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
@@ -107,6 +107,16 @@ public class TestMetricsTableSourceImpl {
return 3000;
}
+ @Override
+ public long getNumRegions(String table) {
+ return 3;
+ }
+
+ @Override
+ public long getAvgRegionSize(String table) {
+ return 3000;
+ }
+
public String getTableName() {
return tableName;
}
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 c5f0f7b..1510c98 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
@@ -74,10 +74,15 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
}
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());
+ metricsTable
+ .setTableSize(metricsTable.getMemstoresSize() + metricsTable.getStoreFilesSize());
+ metricsTable
+ .setReadRequestsCount(metricsTable.getReadRequestsCount() + r.getReadRequestsCount());
+ metricsTable.setWriteRequestsCount(
+ metricsTable.getWriteRequestsCount() + r.getWriteRequestsCount());
+ metricsTable.setTotalRequestsCount(
+ metricsTable.getReadRequestsCount() + metricsTable.getWriteRequestsCount());
+ metricsTable.setRegionCount(metricsTable.getRegionCount() + 1);
}
for(Map.Entry<TableName, MetricsTableValues> entry : localMetricsTableMap.entrySet()) {
@@ -108,55 +113,75 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
@Override
public long getReadRequestsCount(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
- if (metricsTable == null)
+ if (metricsTable == null) {
return 0;
- else
- return metricsTable.getReadRequestsCount();
+ }
+ return metricsTable.getReadRequestsCount();
}
@Override
public long getWriteRequestsCount(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
- if (metricsTable == null)
+ if (metricsTable == null) {
return 0;
- else
- return metricsTable.getWriteRequestsCount();
+ }
+ return metricsTable.getWriteRequestsCount();
}
@Override
public long getTotalRequestsCount(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
- if (metricsTable == null)
+ if (metricsTable == null) {
return 0;
- else
- return metricsTable.getTotalRequestsCount();
+ }
+ return metricsTable.getTotalRequestsCount();
}
@Override
public long getMemstoresSize(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
- if (metricsTable == null)
+ if (metricsTable == null) {
return 0;
- else
- return metricsTable.getMemstoresSize();
+ }
+ return metricsTable.getMemstoresSize();
}
@Override
public long getStoreFilesSize(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
- if (metricsTable == null)
+ if (metricsTable == null) {
return 0;
- else
- return metricsTable.getStoreFilesSize();
+ }
+ return metricsTable.getStoreFilesSize();
}
@Override
public long getTableSize(String table) {
MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
- if (metricsTable == null)
+ if (metricsTable == null) {
+ return 0;
+ }
+ return metricsTable.getTableSize();
+ }
+
+ @Override
+ public long getNumRegions(String table) {
+ MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
+ if (metricsTable == null) {
return 0;
- else
- return metricsTable.getTableSize();
+ }
+ return metricsTable.regionCount;
+ }
+
+ @Override
+ public long getAvgRegionSize(String table) {
+ MetricsTableValues metricsTable = metricsTableMap.get(TableName.valueOf(table));
+ if (metricsTable == null) {
+ return 0;
+ }
+ return metricsTable.regionCount == 0 ? 0
+ : (metricsTable.getMemstoresSize() + metricsTable.getStoreFilesSize())
+ / metricsTable.getRegionCount();
}
@Override
@@ -172,6 +197,7 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
private long memstoresSize;
private long storeFilesSize;
private long tableSize;
+ private long regionCount;
public long getTotalRequestsCount() {
return totalRequestsCount;
@@ -220,6 +246,14 @@ public class MetricsTableWrapperAggregateImpl implements MetricsTableWrapperAggr
public void setTableSize(long tableSize) {
this.tableSize = tableSize;
}
+
+ public long getRegionCount() {
+ return regionCount;
+ }
+
+ public void setRegionCount(long regionCount) {
+ this.regionCount = regionCount;
+ }
}
}
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 6fd8dd7..645df26 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
@@ -59,4 +59,14 @@ public class MetricsTableWrapperStub implements MetricsTableWrapperAggregate {
public String getTableName() {
return tableName;
}
+
+ @Override
+ public long getNumRegions(String table) {
+ return 11;
+ }
+
+ @Override
+ public long getAvgRegionSize(String table) {
+ return 22;
+ }
}