[ 
https://issues.apache.org/jira/browse/HBASE-5162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13209725#comment-13209725
 ] 

[email protected] commented on HBASE-5162:
------------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3930/
-----------------------------------------------------------

Review request for hbase, Michael Stack, Jean-Daniel Cryans, and Lars Hofhansl.


Summary
-------

Under heavy write load, HBase will create a saw-tooth pattern in accepting 
writes. This is due to the I/O in minor compactions not being able to keep up 
with the write load. Specifically, the memstore is attempting to flush while we 
are attempting to do a minor compaction, leading to blocking _all_ writes. 
Instead, we need to have the option of graceful degradation mechanism.

This patch supports both a short-term,adjustable server-side write blocking as 
well as client-side back-off to help alleviate temporary memstore pressure.


This addresses bug HBASE-5162.
    https://issues.apache.org/jira/browse/HBASE-5162


Diffs
-----

  src/main/java/org/apache/hadoop/hbase/HConstants.java 763fe89 
  src/main/java/org/apache/hadoop/hbase/client/BackoffPolicy.java PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/client/HTable.java 57605e6 
  src/main/java/org/apache/hadoop/hbase/client/MonitoredResult.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/client/NoServerBackoffPolicy.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java 25cb31d 
  src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java 7d7be3c 
  
src/main/java/org/apache/hadoop/hbase/regionserver/MemstorePressureMonitor.java 
PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/regionserver/OperationStatus.java 
1b94ab5 
  src/main/java/org/apache/hadoop/hbase/regionserver/PressureMonitor.java 
PRE-CREATION 
  
src/main/java/org/apache/hadoop/hbase/regionserver/SimpleMemStorePressureMonitor.java
 PRE-CREATION 
  src/main/java/org/apache/hadoop/hbase/regionserver/StoreUtils.java 
PRE-CREATION 
  src/test/java/org/apache/hadoop/hbase/client/TestClientBackOff.java 
PRE-CREATION 
  
src/test/java/org/apache/hadoop/hbase/regionserver/TestMemStorePressureMonitor.java
 PRE-CREATION 

Diff: https://reviews.apache.org/r/3930/diff


Testing
-------


Thanks,

Jesse


                
> Basic client pushback mechanism
> -------------------------------
>
>                 Key: HBASE-5162
>                 URL: https://issues.apache.org/jira/browse/HBASE-5162
>             Project: HBase
>          Issue Type: New Feature
>    Affects Versions: 0.92.0
>            Reporter: Jean-Daniel Cryans
>             Fix For: 0.94.0
>
>         Attachments: java_HBASE-5162.patch
>
>
> The current blocking we do when we are close to some limits (memstores over 
> the multiplier factor, too many store files, global memstore memory) is bad, 
> too coarse and confusing. After hitting HBASE-5161, it really becomes obvious 
> that we need something better.
> I did a little brainstorm with Stack, we came up quickly with two solutions:
>  - Send some exception to the client, like OverloadedException, that's thrown 
> when some situation happens like getting past the low memory barrier. It 
> would be thrown when the client gets a handler and does some check while 
> putting or deleting. The client would treat this a retryable exception but 
> ideally wouldn't check .META. for a new location. It could be fancy and have 
> multiple levels of pushback, like send the exception to 25% of the clients, 
> and then go up if the situation persists. Should be "easy" to implement but 
> we'll be using a lot more IO to send the payload over and over again (but at 
> least it wouldn't sit in the RS's memory).
>  - Send a message alongside a successful put or delete to tell the client to 
> slow down a little, this way we don't have to do back and forth with the 
> payload between the client and the server. It's a cleaner (I think) but more 
> involved solution.
> In every case the RS should do very obvious things to notify the operators of 
> this situation, through logs, web UI, metrics, etc.
> Other ideas?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to