Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
Reviewed
Description
We calculate region size in the mapreduce package by getting the size in MB first and multiplying: https://github.com/apache/hbase/blob/39a20c528e2bf27cedf12734dbdb1b7b1e538076/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/RegionSizeCalculator.java#L87
This will give a size of 0 until at least 1MB is reached. (And it will have an unwanted rounding affect as well).
Spark for example can be tuned to do some performance tuning by eliminating the 0 sized regions. This will eliminate any small regions which are not actually empty. The hadoop interface states the size is returned in bytes, and while this is true do to the multiplication, we multiply by 0 until 1MB is reached. I'm not sure why we get the size in MB units and not in bytes straight up.
Attachments
Issue Links
- is related to
-
IMPALA-11278 Cardinality of small HBase regions is overestimated since HBASE-26340
- Open
- relates to
-
HBASE-26609 Round the size to MB or KB at the end of calculation in HRegionServer.createRegionLoad
- Resolved
- links to