rmdmattingly opened a new pull request, #5666:
URL: https://github.com/apache/hbase/pull/5666

   If you're managing HBase for many users, then managing effective user quotas 
can be a difficult operational burden. At my day job we have thousands of web 
services, workers, and recurring jobs — each of which we consider a distinct 
user via [request attributes](https://github.com/apache/hbase/pull/5326) and 
[quota user overrides](https://github.com/apache/hbase/pull/5424). A common 
reliability issue is that some single system runs awry, for whatever reason, 
and generates a pathologic amount of traffic at the HBase level; this can cause 
pain for any other systems dependent on the given HBase cluster.
   
   The above situation could potentially be solved by maintaining our own 
automated user quota management, but even better would be the ability to 
specify default user quotas at the HBase level. So that's exactly what this PR 
introduces.
   
   In this PR we add four new configuration options to the `QuotaUtil` class:
   ```java
     /*
      * The below defaults, if configured, will be applied to otherwise 
unthrottled users. For example,
      * set `hbase.quota.default.user.machine.read.size` to `1048576` in your 
hbase-site.xml to ensure
      * that any given user may not query more than 1mb per second from any 
given machine, unless
      * explicitly permitted by a persisted quota. All of these defaults use 
TimeUnit.SECONDS and
      * QuotaScope.MACHINE.
      */
     public static final String QUOTA_DEFAULT_USER_MACHINE_READ_SIZE =
       "hbase.quota.default.user.machine.read.size";
     public static final String QUOTA_DEFAULT_USER_MACHINE_READ_NUM =
       "hbase.quota.default.user.machine.read.num";
     public static final String QUOTA_DEFAULT_USER_MACHINE_REQUEST_NUM =
       "hbase.quota.default.user.machine.req.num";
     public static final String QUOTA_DEFAULT_USER_MACHINE_WRITE_NUM =
       "hbase.quota.default.user.machine.write.num";
   ```
   
   These options are exactly what they sound like — one could configure 
`hbase.quota.default.user.machine.read.size` and 
`hbase.quota.default.user.machine.req.num` to ensure that no users can exceed a 
given read size and request per-machine throughput (unless explicitly given 
larger allowance via a defined quota).
   
   cc @bbeaudreault @hgromer @eab148 @bozzkar


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to