Eshcar Hillel commented on HBASE-18294:

Here is my response from RB regarding the change in HCD

In the new implementation we compare on-heap size against on-heap threshold and 
off-heap size against off-heap threshold. Exceeding one of these two thresholds 
triggers a flush. If we only consider one unified threshold for on- and 
off-heap data we can get OOME.
For example, consider an off-heap cluster with 96GB memory machines, and assume 
in each machine 90GB are allocated to off-heap data and 6GB are allocated to 
on-heap objects. Assume we manage 700 regions per RS, and the flush size is 
128MB. It only requires 46 regions to get to 128MB on-heap or for all regions 
to exceed 8.5MB(!) on-heap to get an OOME.
Therefore I think giving the user an optional(!) control on the flush size both 
for on-heap and off-heap sizes is essential. And they both fall back on default 
value so they are both optional and may not be an unnecessary burden on the 


I also see I need to re-base my patch. Waiting for review comments to create my 
next patch.

> Reduce global heap pressure: flush based on heap occupancy
> ----------------------------------------------------------
>                 Key: HBASE-18294
>                 URL: https://issues.apache.org/jira/browse/HBASE-18294
>             Project: HBase
>          Issue Type: Improvement
>    Affects Versions: 3.0.0
>            Reporter: Eshcar Hillel
>            Assignee: Eshcar Hillel
>            Priority: Major
>             Fix For: 2.0.0-beta-2
>         Attachments: HBASE-18294.01.patch, HBASE-18294.01.patch, 
> HBASE-18294.01.patch, HBASE-18294.01.patch, HBASE-18294.02.patch, 
> HBASE-18294.03.patch, HBASE-18294.04.patch, HBASE-18294.05.patch, 
> HBASE-18294.06.patch, HBASE-18294.07.patch, HBASE-18294.07.patch, 
> HBASE-18294.08.patch, HBASE-18294.09.patch, HBASE-18294.10.patch, 
> HBASE-18294.11.patch, HBASE-18294.11.patch, HBASE-18294.12.patch, 
> HBASE-18294.13.patch, HBASE-18294.15.patch, HBASE-18294.16.patch, 
> HBASE-18294.master.01.patch
> A region is flushed if its memory component exceed a threshold (default size 
> is 128MB).
> A flush policy decides whether to flush a store by comparing the size of the 
> store to another threshold (that can be configured with 
> hbase.hregion.percolumnfamilyflush.size.lower.bound).
> Currently the implementation (in both cases) compares the data size 
> (key-value only) to the threshold where it should compare the heap size 
> (which includes index size, and metadata).

This message was sent by Atlassian JIRA

Reply via email to