From d9dcbd937a3503163b3fd7248855ef70bf355ef1 Mon Sep 17 00:00:00 2001 From: Norbert Kalmar Date: Mon, 22 Nov 2021 15:21:03 +0100 Subject: [PATCH 1/2] HBASE-26340 - fix RegionSizeCalculator getLEngth to bytes instead of converting from MB --- .../hadoop/hbase/regionserver/HRegionServer.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 4bf2d9c25f1d..16e1b0657d51 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1431,6 +1431,8 @@ RegionLoad createRegionLoad(final HRegion r, RegionLoad.Builder regionLoadBldr, int maxCompactedStoreFileRefCount = 0; int storeUncompressedSizeMB = 0; int storefileSizeMB = 0; + //HBASE-26340 Fix false "0" size under 1MB + boolean nonEmptyStoreExist = false; int memstoreSizeMB = (int) (r.getMemStoreDataSize() / 1024 / 1024); long storefileIndexSizeKB = 0; int rootLevelIndexSizeKB = 0; @@ -1449,6 +1451,10 @@ RegionLoad createRegionLoad(final HRegion r, RegionLoad.Builder regionLoadBldr, currentMaxCompactedStoreFileRefCount); storeUncompressedSizeMB += (int) (store.getStoreSizeUncompressed() / 1024 / 1024); storefileSizeMB += (int) (store.getStorefilesSize() / 1024 / 1024); + //HBASE-26340 Fix false "0" size under 1MB + if(store.getStorefilesSize() > 0) { + nonEmptyStoreExist = true; + } //TODO: storefileIndexSizeKB is same with rootLevelIndexSizeKB? storefileIndexSizeKB += store.getStorefilesRootLevelIndexSize() / 1024; CompactionProgress progress = store.getCompactionProgress(); @@ -1460,6 +1466,10 @@ RegionLoad createRegionLoad(final HRegion r, RegionLoad.Builder regionLoadBldr, totalStaticIndexSizeKB += (int) (store.getTotalStaticIndexSize() / 1024); totalStaticBloomSizeKB += (int) (store.getTotalStaticBloomSize() / 1024); } + //HBASE-26340 Fix false "0" size under 1MB + if(storefileSizeMB < 1 && nonEmptyStoreExist) { + storefileSizeMB = 1; + } HDFSBlocksDistribution hdfsBd = r.getHDFSBlocksDistribution(); float dataLocality = hdfsBd.getBlockLocalityIndex(serverName.getHostname()); From 8ccf3002a3b01b68770aba9d7d97fa14c6b8dce1 Mon Sep 17 00:00:00 2001 From: Norbert Kalmar Date: Wed, 8 Dec 2021 13:07:28 +0100 Subject: [PATCH 2/2] HBASE-26340 - convert from bytes to MB with min value instead of boolean check Change-Id: Idce876f4b95b0f28e3e84a08b367f77bc76fb268 --- .../hadoop/hbase/regionserver/HRegionServer.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 16e1b0657d51..ef4158935342 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1431,8 +1431,7 @@ RegionLoad createRegionLoad(final HRegion r, RegionLoad.Builder regionLoadBldr, int maxCompactedStoreFileRefCount = 0; int storeUncompressedSizeMB = 0; int storefileSizeMB = 0; - //HBASE-26340 Fix false "0" size under 1MB - boolean nonEmptyStoreExist = false; + long storefileSizeByte = 0L; int memstoreSizeMB = (int) (r.getMemStoreDataSize() / 1024 / 1024); long storefileIndexSizeKB = 0; int rootLevelIndexSizeKB = 0; @@ -1450,11 +1449,7 @@ RegionLoad createRegionLoad(final HRegion r, RegionLoad.Builder regionLoadBldr, maxCompactedStoreFileRefCount = Math.max(maxCompactedStoreFileRefCount, currentMaxCompactedStoreFileRefCount); storeUncompressedSizeMB += (int) (store.getStoreSizeUncompressed() / 1024 / 1024); - storefileSizeMB += (int) (store.getStorefilesSize() / 1024 / 1024); - //HBASE-26340 Fix false "0" size under 1MB - if(store.getStorefilesSize() > 0) { - nonEmptyStoreExist = true; - } + storefileSizeByte += store.getStorefilesSize(); //TODO: storefileIndexSizeKB is same with rootLevelIndexSizeKB? storefileIndexSizeKB += store.getStorefilesRootLevelIndexSize() / 1024; CompactionProgress progress = store.getCompactionProgress(); @@ -1467,9 +1462,8 @@ RegionLoad createRegionLoad(final HRegion r, RegionLoad.Builder regionLoadBldr, totalStaticBloomSizeKB += (int) (store.getTotalStaticBloomSize() / 1024); } //HBASE-26340 Fix false "0" size under 1MB - if(storefileSizeMB < 1 && nonEmptyStoreExist) { - storefileSizeMB = 1; - } + storefileSizeMB = storefileSizeByte > 0 && storefileSizeByte <= 1024 * 1024 + ? 1 : (int) storefileSizeByte / 1024 / 1024; HDFSBlocksDistribution hdfsBd = r.getHDFSBlocksDistribution(); float dataLocality = hdfsBd.getBlockLocalityIndex(serverName.getHostname());