Skip to content

Commit ae3daa5

Browse files
ZhaoBQndimiduk
authored andcommitted
HBASE-25482 Improve SimpleRegionNormalizer#getAverageRegionSizeMb (#2858)
Signed-off-by: Nick Dimiduk <ndimiduk@apache.org>
1 parent 702220a commit ae3daa5

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

hbase-server/src/main/java/org/apache/hadoop/hbase/master/normalizer/SimpleRegionNormalizer.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -273,16 +273,13 @@ private double getAverageRegionSizeMb(final List<RegionInfo> tableRegions) {
273273
throw new IllegalStateException(
274274
"Cannot calculate average size of a table without any regions.");
275275
}
276-
final int regionCount = tableRegions.size();
277-
final long totalSizeMb = tableRegions.stream()
278-
.mapToLong(this::getRegionSizeMB)
279-
.sum();
280276
TableName table = tableRegions.get(0).getTable();
281277
int targetRegionCount = -1;
282278
long targetRegionSize = -1;
279+
double avgRegionSize;
283280
try {
284281
TableDescriptor tableDescriptor = masterServices.getTableDescriptors().get(table);
285-
if (tableDescriptor != null && LOG.isDebugEnabled()) {
282+
if (tableDescriptor != null) {
286283
targetRegionCount = tableDescriptor.getNormalizerTargetRegionCount();
287284
targetRegionSize = tableDescriptor.getNormalizerTargetRegionSize();
288285
LOG.debug("Table {} configured with target region count {}, target region size {}", table,
@@ -292,18 +289,22 @@ private double getAverageRegionSizeMb(final List<RegionInfo> tableRegions) {
292289
LOG.warn("TableDescriptor for {} unavailable, table-level target region count and size"
293290
+ " configurations cannot be considered.", table, e);
294291
}
295-
296-
double avgRegionSize;
297292
if (targetRegionSize > 0) {
298293
avgRegionSize = targetRegionSize;
299-
} else if (targetRegionCount > 0) {
300-
avgRegionSize = totalSizeMb / (double) targetRegionCount;
301294
} else {
302-
avgRegionSize = totalSizeMb / (double) regionCount;
295+
final int regionCount = tableRegions.size();
296+
final long totalSizeMb = tableRegions.stream()
297+
.mapToLong(this::getRegionSizeMB)
298+
.sum();
299+
if (targetRegionCount > 0) {
300+
avgRegionSize = totalSizeMb / (double) targetRegionCount;
301+
} else {
302+
avgRegionSize = totalSizeMb / (double) regionCount;
303+
}
304+
LOG.debug("Table {}, total aggregated regions size: {} and average region size {}", table,
305+
totalSizeMb, avgRegionSize);
303306
}
304307

305-
LOG.debug("Table {}, total aggregated regions size: {} and average region size {}", table,
306-
totalSizeMb, avgRegionSize);
307308
return avgRegionSize;
308309
}
309310

0 commit comments

Comments
 (0)