You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by sy...@apache.org on 2016/03/30 18:03:12 UTC
[10/50] [abbrv] hbase git commit: HBASE-15412 Add average region size
metric (Alicia Ying Shu)
HBASE-15412 Add average region size metric (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/b3fe4ed1
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b3fe4ed1
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b3fe4ed1
Branch: refs/heads/hbase-12439
Commit: b3fe4ed16c45e6411f7163099a8bc4c18c39779e
Parents: 2348478
Author: Enis Soztutar <en...@apache.org>
Authored: Tue Mar 22 14:46:27 2016 -0700
Committer: Enis Soztutar <en...@apache.org>
Committed: Tue Mar 22 14:46:27 2016 -0700
----------------------------------------------------------------------
.../regionserver/MetricsRegionServerSource.java | 3 +++
.../MetricsRegionServerWrapper.java | 5 +++++
.../MetricsRegionServerSourceImpl.java | 2 +-
.../MetricsRegionServerWrapperImpl.java | 13 +++++++++++-
.../MetricsRegionServerWrapperStub.java | 5 +++++
.../regionserver/TestRegionServerMetrics.java | 21 ++++++++++++++++++++
6 files changed, 47 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/b3fe4ed1/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 f097296..9693bba 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
@@ -463,4 +463,7 @@ public interface MetricsRegionServerSource extends BaseSource {
String RPC_MUTATE_REQUEST_COUNT = "rpcMutateRequestCount";
String RPC_MUTATE_REQUEST_COUNT_DESC =
"Number of rpc mutation requests this region server has answered.";
+ String AVERAGE_REGION_SIZE = "averageRegionSize";
+ String AVERAGE_REGION_SIZE_DESC =
+ "Average region size over the region server including memstore and storefile sizes.";
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b3fe4ed1/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 3ae6f9c..5ecda04 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
@@ -412,4 +412,9 @@ public interface MetricsRegionServerWrapper {
* Get the number of rpc mutate requests to this region server.
*/
long getRpcMutateRequestsCount();
+
+ /**
+ * Get the average region size to this region server.
+ */
+ long getAverageRegionSize();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b3fe4ed1/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 0c24cb4..c625d49 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
@@ -328,6 +328,7 @@ public class MetricsRegionServerSourceImpl
rsWrap.getNumReferenceFiles())
.addGauge(Interns.info(RS_START_TIME_NAME, RS_START_TIME_DESC),
rsWrap.getStartCode())
+ .addGauge(Interns.info(AVERAGE_REGION_SIZE, AVERAGE_REGION_SIZE_DESC), rsWrap.getAverageRegionSize())
.addCounter(Interns.info(TOTAL_REQUEST_COUNT, TOTAL_REQUEST_COUNT_DESC),
rsWrap.getTotalRequestCount())
.addCounter(Interns.info(READ_REQUEST_COUNT, READ_REQUEST_COUNT_DESC),
@@ -450,7 +451,6 @@ public class MetricsRegionServerSourceImpl
.addCounter(Interns.info(HEDGED_READS, HEDGED_READS_DESC), rsWrap.getHedgedReadOps())
.addCounter(Interns.info(HEDGED_READ_WINS, HEDGED_READ_WINS_DESC),
rsWrap.getHedgedReadWins())
-
.addCounter(Interns.info(BLOCKED_REQUESTS_COUNT, BLOCKED_REQUESTS_COUNT_DESC),
rsWrap.getBlockedRequestsCount())
http://git-wip-us.apache.org/repos/asf/hbase/blob/b3fe4ed1/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 441fea6..6e6d07d 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
@@ -104,6 +104,7 @@ class MetricsRegionServerWrapperImpl
private volatile long mobFileCacheEvictedCount = 0;
private volatile long mobFileCacheCount = 0;
private volatile long blockedRequestsCount = 0L;
+ private volatile long averageRegionSize = 0L;
private CacheStats cacheStats;
private ScheduledExecutorService executor;
@@ -668,7 +669,7 @@ class MetricsRegionServerWrapperImpl
long tempMobScanCellsCount = 0;
long tempMobScanCellsSize = 0;
long tempBlockedRequestsCount = 0;
-
+ int regionCount = 0;
for (Region r : regionServer.getOnlineRegionsLocalContext()) {
tempNumMutationsWithoutWAL += r.getNumMutationsWithoutWAL();
tempDataInMemoryWithoutWAL += r.getDataInMemoryWithoutWAL();
@@ -726,6 +727,7 @@ class MetricsRegionServerWrapperImpl
if (r.getRegionInfo().getReplicaId() != HRegionInfo.DEFAULT_REPLICA_ID) {
hdfsBlocksDistributionSecondaryRegions.add(distro);
}
+ regionCount++;
}
float localityIndex = hdfsBlocksDistribution.getBlockLocalityIndex(
regionServer.getServerName().getHostname());
@@ -765,6 +767,9 @@ class MetricsRegionServerWrapperImpl
memstoreSize = tempMemstoreSize;
storeFileSize = tempStoreFileSize;
maxStoreFileAge = tempMaxStoreFileAge;
+ if (regionCount > 0) {
+ averageRegionSize = (memstoreSize + storeFileSize) / regionCount;
+ }
if (tempMinStoreFileAge != Long.MAX_VALUE) {
minStoreFileAge = tempMinStoreFileAge;
}
@@ -828,4 +833,10 @@ class MetricsRegionServerWrapperImpl
public long getBlockedRequestsCount() {
return blockedRequestsCount;
}
+
+ @Override
+ public long getAverageRegionSize() {
+ return averageRegionSize;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b3fe4ed1/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 65c6b76..9aa49ba 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
@@ -404,4 +404,9 @@ public class MetricsRegionServerWrapperStub implements MetricsRegionServerWrappe
public double getMobFileCacheHitPercent() {
return 50;
}
+
+ @Override
+ public long getAverageRegionSize() {
+ return 10000000;
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b3fe4ed1/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
index b9e54f0..2087097 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
@@ -676,4 +676,25 @@ public class TestRegionServerMetrics {
table.close();
}
+
+ @Test
+ public void testAverageRegionSize() throws Exception {
+ TableName tableName = TableName.valueOf("testAverageRegionSize");
+ byte[] cf = Bytes.toBytes("d");
+ byte[] row = Bytes.toBytes("rk");
+ byte[] qualifier = Bytes.toBytes("qual");
+ byte[] val = Bytes.toBytes("Value");
+
+ //Force a hfile.
+ Table t = TEST_UTIL.createTable(tableName, cf);
+ Put p = new Put(row);
+ p.addColumn(cf, qualifier, val);
+ t.put(p);
+ TEST_UTIL.getHBaseAdmin().flush(tableName);
+
+ metricsRegionServer.getRegionServerWrapper().forceRecompute();
+ assertTrue(metricsHelper.getGaugeDouble("averageRegionSize", serverSource) > 0.0);
+
+ t.close();
+ }
}