You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Matteo Bertozzi (JIRA)" <ji...@apache.org> on 2014/08/07 22:05:14 UTC

[jira] [Commented] (HBASE-11598) Add simple rpc throttling

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

Matteo Bertozzi commented on HBASE-11598:
-----------------------------------------

switched to a two methods only: set_quota and list_quotas

to add/replace/update a quota settings you use set_quota with all the options to tune the a particular quota type.
{noformat}
hbase> set_quota TYPE => THROTTLE, USER => 'bob', LIMIT => '10req/sec'
hbase> set_quota TYPE => THROTTLE, USER => 'bob', TABLE => 't1', LIMIT => '64M/min'
hbase> set_quota TYPE => THROTTLE, TABLE => 't2', LIMIT => '100req/sec'
hbase> set_quota TYPE => THROTTLE, NAMESPACE => 'n1', LIMIT => '100M/min'
{noformat}

to remove something you just set the limit to NONE
{noformat}
hbase> set_quota TYPE => THROTTLE, USER => 'bob', LIMIT => NONE
{noformat}

To list the quotas you use the list_quotas (which is a scanner) and you get all the details. you can specify filters
{noformat}
hbase> list_quotas
OWNER                             QUOTAS
 NAMESPACE => n1                 {TYPE => THROTTLE, THROTTLE_TYPE => REQUEST_SIZE, LIMIT => 100M/min, SCOPE =>MACHINE}
 TABLE => t2                     {TYPE => THROTTLE, THROTTLE_TYPE => REQUEST_NUMBER, LIMIT => 100req/sec, SCOPE => MACHINE}
 USER => bob                     {TYPE => THROTTLE, THROTTLE_TYPE => REQUEST_NUMBER, LIMIT => 10req/sec, SCOPE => MACHINE}
 USER => bob, TABLE => t1        {TYPE => THROTTLE, THROTTLE_TYPE => REQUEST_SIZE, LIMIT => 64M/min, SCOPE => MACHINE}
4 row(s) in 0.1360 seconds

hbase> list_quotas USER => 'bo.*'
OWNER                             QUOTAS
 USER => bob                     {TYPE => THROTTLE, THROTTLE_TYPE => REQUEST_NUMBER, LIMIT => 10req/sec, SCOPE => MACHINE}
 USER => bob, TABLE => t1        {TYPE => THROTTLE, THROTTLE_TYPE => REQUEST_SIZE, LIMIT => 64M/min, SCOPE => MACHINE}
2 row(s) in 0.0210 seconds
{noformat}

> Add simple rpc throttling
> -------------------------
>
>                 Key: HBASE-11598
>                 URL: https://issues.apache.org/jira/browse/HBASE-11598
>             Project: HBase
>          Issue Type: New Feature
>            Reporter: Matteo Bertozzi
>            Assignee: Matteo Bertozzi
>            Priority: Minor
>             Fix For: 1.0.0, 2.0.0
>
>
> Add a simple version of rpc throttling.
> (by simple I mean something that requires less changes as possible to the core)
> The idea is to add a hbase:quota table to store the user/table quota information.
> Add a couple of API on the client like throttleUser() and throttleTable()
> and on the server side before executing the request we check the quota, if not an exception is thrown.
> The quota will be per-machine. There will be a flag "QuotaScope" that will be used in the future to specify the quota at "cluster level" instead of per machine. (A limit of 100req/min means that each machine can execute 100req/min with a scope per-machine).
> This will be the first cut, simple solution that requires verify few changes to the core.
> Later on we can make the client aware of the ThrottlingException and deal with it in a smarter way.
> Also we need to change a bit the RPC code to be able to yield the operation if the quota will be 
> available not to far in the future, and avoid going back to the client for "few seconds".
> REVIEW BOARD: https://reviews.apache.org/r/23981



--
This message was sent by Atlassian JIRA
(v6.2#6252)