Skip to content

Commit ee2c6d6

Browse files
HBASE-30242 Add Region server level HFile Compression Metrics
1 parent 3710bec commit ee2c6d6

6 files changed

Lines changed: 49 additions & 0 deletions

File tree

hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,8 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo
233233
String MEMSTORE_OFFHEAP_SIZE_DESC = "Off-heap Size of the memstore";
234234
String STOREFILE_SIZE = "storeFileSize";
235235
String STOREFILE_SIZE_GROWTH_RATE = "storeFileSizeGrowthRate";
236+
String STOREFILE_UNCOMPRESSED_SIZE = "storeFileUncompressedSize";
237+
String STOREFILE_COMPRESSION_RATIO = "storeFileCompressionRatio";
236238
String MAX_STORE_FILE_AGE = "maxStoreFileAge";
237239
String MIN_STORE_FILE_AGE = "minStoreFileAge";
238240
String AVG_STORE_FILE_AGE = "avgStoreFileAge";
@@ -244,6 +246,10 @@ public interface MetricsRegionServerSource extends BaseSource, JvmPauseMonitorSo
244246
String STOREFILE_SIZE_DESC = "Size of storefiles being served.";
245247
String STOREFILE_SIZE_GROWTH_RATE_DESC =
246248
"Bytes per second by which the size of storefiles being served grows.";
249+
String STOREFILE_UNCOMPRESSED_SIZE_DESC = "Total uncompressed size of storefiles being served.";
250+
String STOREFILE_COMPRESSION_RATIO_DESC =
251+
"Compression ratio of storefiles (compressed/uncompressed). Lower values indicate better"
252+
+ " compression. Returns 1.0 when there is no data.";
247253
String TOTAL_REQUEST_COUNT = "totalRequestCount";
248254
String TOTAL_REQUEST_COUNT_DESC =
249255
"Total number of requests this RegionServer has answered; increments the count once for "

hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceImpl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,10 @@ private MetricsRecordBuilder addGaugesToMetricsRecordBuilder(MetricsRecordBuilde
519519
.addGauge(Interns.info(MEMSTORE_OFFHEAP_SIZE, MEMSTORE_OFFHEAP_SIZE_DESC),
520520
rsWrap.getOffHeapMemStoreSize())
521521
.addGauge(Interns.info(STOREFILE_SIZE, STOREFILE_SIZE_DESC), rsWrap.getStoreFileSize())
522+
.addGauge(Interns.info(STOREFILE_UNCOMPRESSED_SIZE, STOREFILE_UNCOMPRESSED_SIZE_DESC),
523+
rsWrap.getStoreFileUncompressedSize())
524+
.addGauge(Interns.info(STOREFILE_COMPRESSION_RATIO, STOREFILE_COMPRESSION_RATIO_DESC),
525+
rsWrap.getStoreFileCompressionRatio())
522526
.addGauge(Interns.info(STOREFILE_SIZE_GROWTH_RATE, STOREFILE_SIZE_GROWTH_RATE_DESC),
523527
rsWrap.getStoreFileSizeGrowthRate())
524528
.addGauge(Interns.info(MAX_STORE_FILE_AGE, MAX_STORE_FILE_AGE_DESC),

hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapper.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,17 @@ public interface MetricsRegionServerWrapper {
116116
*/
117117
long getStoreFileSize();
118118

119+
/**
120+
* Get the total uncompressed size of the store files this region server is serving from.
121+
*/
122+
long getStoreFileUncompressedSize();
123+
124+
/**
125+
* Get the compression ratio of store files on this region server. This is the ratio of compressed
126+
* on-disk size to uncompressed data size. Returns 1.0 when there is no data.
127+
*/
128+
double getStoreFileCompressionRatio();
129+
119130
/**
120131
* Get the growth rate of the store files this region server is serving from.
121132
*/

hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperImpl.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,20 @@ public long getStoreFileSize() {
533533
return aggregate.storeFileSize;
534534
}
535535

536+
@Override
537+
public long getStoreFileUncompressedSize() {
538+
return aggregate.storeFileUncompressedSize;
539+
}
540+
541+
@Override
542+
public double getStoreFileCompressionRatio() {
543+
long uncompressed = aggregate.storeFileUncompressedSize;
544+
if (uncompressed == 0) {
545+
return 1.0;
546+
}
547+
return (double) aggregate.storeFileSize / uncompressed;
548+
}
549+
536550
@Override
537551
public double getStoreFileSizeGrowthRate() {
538552
return aggregate.storeFileSizeGrowthRate;
@@ -783,6 +797,7 @@ private static final class RegionMetricAggregate {
783797
private long onHeapMemstoreSize = 0;
784798
private long offHeapMemstoreSize = 0;
785799
private long storeFileSize = 0;
800+
private long storeFileUncompressedSize = 0;
786801
private double storeFileSizeGrowthRate = 0;
787802
private long maxStoreFileCount = 0;
788803
private long maxStoreFileAge = 0;
@@ -979,6 +994,7 @@ private StoreFileStats aggregateStores(List<HStore> stores) {
979994
onHeapMemstoreSize += store.getMemStoreSize().getHeapSize();
980995
offHeapMemstoreSize += store.getMemStoreSize().getOffHeapSize();
981996
storeFileSize += store.getStorefilesSize();
997+
storeFileUncompressedSize += store.getStoreSizeUncompressed();
982998
maxStoreFileCount = Math.max(maxStoreFileCount, store.getStorefilesCount());
983999

9841000
maxStoreFileAge =

hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerWrapperStub.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,16 @@ public long getStoreFileSize() {
8787
return 1900;
8888
}
8989

90+
@Override
91+
public long getStoreFileUncompressedSize() {
92+
return 3800;
93+
}
94+
95+
@Override
96+
public double getStoreFileCompressionRatio() {
97+
return 0.5;
98+
}
99+
90100
@Override
91101
public double getStoreFileSizeGrowthRate() {
92102
return 50.0;

hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionServer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ public void testWrapperSource() {
9090
HELPER.assertGauge("memstoreHeapSize", 500, serverSource);
9191
HELPER.assertGauge("memstoreOffHeapSize", 600, serverSource);
9292
HELPER.assertGauge("storeFileSize", 1900, serverSource);
93+
HELPER.assertGauge("storeFileUncompressedSize", 3800, serverSource);
94+
HELPER.assertGauge("storeFileCompressionRatio", 0.5, serverSource);
9395
HELPER.assertGauge("storeFileSizeGrowthRate", 50.0, serverSource);
9496
HELPER.assertCounter("totalRequestCount", 899, serverSource);
9597
HELPER.assertCounter("totalRowActionRequestCount",

0 commit comments

Comments
 (0)