[
https://issues.apache.org/jira/browse/HBASE-28601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18057730#comment-18057730
]
Xiao Liu commented on HBASE-28601:
----------------------------------
h2. Case1
default setting \{{hbase.regionserver.global.memstore.size}} will take effect
{code:language=bash|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
export HBASE_HEAPSIZE=1G
Memstore On-Heap Limit: 409.6 MB (1G * 0.4)
{code}
h2. Case2
Setting \{{hbase.regionserver.global.memstore.memory.size}} directly in a
human-readable format will take effect.
{code:language=bash|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
export HBASE_HEAPSIZE=1G
hbase.regionserver.global.memstore.memory.size=100m
Memstore On-Heap Limit: 100MB
{code}
h2. Case3
When both parameters are set,
\{{hbase.regionserver.global.memstore.memory.size}} will take effect
{code:language=bash|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
export HBASE_HEAPSIZE=1G
hbase.regionserver.global.memstore.memory.size=209715200
hbase.regionserver.global.memstore.size=0.4
Memstore On-Heap Limit: 200MB
{code}
h2. Case4
If the limit is exceeded, an exception will be issued
{code:language=bash|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
export HBASE_HEAPSIZE=1G
hbase.regionserver.global.memstore.memory.size=524288000
hbase.regionserver.global.memstore.size=0.4
{code}
{code:language=|borderStyle=solid|theme=RDark|linenumbers=true|collapse=false}
Caused by: java.lang.RuntimeException: RegionServer heap memory allocation is
invalid: total memory usage exceeds 100% (memStore + blockCache +
requiredFreeHeap). Check the following configuration values:
- hbase.regionserver.global.memstore.memory.size = 524288000
- hbase.regionserver.global.memstore.size = 0.4
- hfile.block.cache.memory.size = null
- hfile.block.cache.size = 0.4
- hbase.regionserver.free.heap.min.memory.size = null
at
org.apache.hadoop.hbase.io.util.MemorySizeUtil.validateRegionServerHeapMemoryAllocation(MemorySizeUtil.java:107)
at
org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:513)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at
java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at
org.apache.hadoop.hbase.util.JVMClusterUtil.createRegionServerThread(JVMClusterUtil.java:85)
... 8 more
{code}
> Enable setting memstore on-heap sizes in bytes
> ----------------------------------------------
>
> Key: HBASE-28601
> URL: https://issues.apache.org/jira/browse/HBASE-28601
> Project: HBase
> Issue Type: Improvement
> Components: regionserver
> Reporter: Nick Dimiduk
> Assignee: Xiao Liu
> Priority: Major
> Labels: pull-request-available
>
> Specifying blockcache and memstore sizes as a percentage of heap is not
> always ideal. Sometimes it's easier to specify exact values rather than
> backing into a percentage. Let's introduce new configuration settings
> (perhaps named similarly to {{hbase.bucketcache.size}}) that accept byte
> values. Even nicer would be if these settings accepted human-friendly byte
> values like {{512m}} or {{10g}}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)