HBase Quota的使用
背景:多租户共享集群时,可以针对namespace,Table,User进行请求的限制,控制负载,避免请求过多导致集群受影响。
启用Quota
默认情况下,quota功能处于禁用状态。要启用quota,将“hbase-site.xml”文件中的参数“hbase.quota.enabled”的值改为“true”
Quota缓存刷新配置
默认情况下,quota设置缓存刷新周期“hbase.quota.refresh.period”设为5*60000(5分钟)。这就意味着,用户在更新quota设置后最多需要等待5分钟,这些设置才能生效。
设置Quota
当由于用户数量或用户请求过多而导致集群工作负载增加时,系统需要按照优先顺序对用户或用户请求进行排列以实现平稳运行。可利用HBase quota功能,让管理员限制HBase系统中的表、分区或请求的数量。
HBase提供以下三种类型的quota:
· Namespace quota:一个Namespace中可包含的表或分区的数量
· 请求数量quota:某个用户或某些相同名字的用户可以在任意指定时间内在特定表上或Namespace中执行的请求的数量。
· 请求大小quota:某个用户或某些相同名字的用户可以在任意指定时间内在特定表上或Namespace中执行的请求的大小。
下面介绍每一种Quota的用法
1. Namespace Quota
Namespace quota用于设置一个Namespace中可包含的表或分区的数量。以下是Namespace quota:
设置Namespace中可包含的表的数量 |
|
示例 |
命令说明 |
create_namespace 'namespace_name', {'hbase.namespace.quota.maxtables'=>'5'} |
使用quota的maxtables来创建Namespace。 |
describe_namespace 'namespace_name ' |
显示Namespace的quota信息。 |
alter_namespace 'namespace_name ', {METHOD => 'set', 'hbase.namespace.quota.maxtables'=>'8'} |
修改现有的Namespace并设置quota的maxtables值。 |
alter_namespace 'namespace_name ', {METHOD => 'unset', NAME=> 'hbase.namespace.quota.maxtables'} |
删除Namespace中设置的quota的maxtables值。 |
设置Namespace中可包含的分区的数量 |
|
示例 |
命令说明 |
create_namespace 'namespace_name', {'hbase.namespace.quota.maxregions'=>'10'} |
使用quota的maxregions来创建Namespace。 |
describe_namespace 'namespace_name ' |
显示Namespace的quota信息。 |
alter_namespace 'namespace_name ', {METHOD => 'set', 'hbase.namespace.quota.maxregions'=>'20'} |
修改现有的Namespace并设置quota的maxregions值。 |
alter_namespace 'namespace_name ', {METHOD => 'unset', NAME=> 'hbase.namespace.quota.maxregions'} |
删除Namespace中设置的quota的maxregions值。 |
2. 请求数量Quota
请求数量Quota保留某个用户或某些相同名字的用户可以在任意指定时间内在特定表上或Namespace中执行的请求数量。
请求数量Quota在命令中使用时间单位。有效的时间单位为秒(sec)、分(min)、小时(hour)和天(day)。
以下是五种设置请求数量Quota的示例:
设置用户在指定时间内可以执行的请求数量 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, USER => 'user_name', LIMIT => '10req/sec' |
对指定用户设置每秒10个请求的quota。 |
list_quotas USER => 'user_name' |
显示指定用户的quota信息。 |
set_quota TYPE => THROTTLE, USER => ' user_name ', LIMIT => NONE |
删除指定用户的quota。 |
设置用户在指定时间内在指定表上可以执行的请求数量 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, USER => ' user_name ', TABLE => 't1', LIMIT => '10req/sec' |
对指定用户的特定表设置每秒10个请求的quota。 |
list_quotas USER => 'user_name', TABLE => 't1' |
显示指定用户在特定表上的quota信息。 |
set_quota TYPE => THROTTLE, USER => 'u1', TABLE => 't1', LIMIT => NONE |
删除指定用户的特定表的quota。 |
设置用户在指定时间内在指定Namespace上可以执行的请求数量 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, USER => ' user_name ', NAMESPACE => 'ns1', LIMIT => '10req/sec' |
对指定用户的特定Namespace设置每秒10个请求的quota。 |
list_quotas USER => 'user_name', NAMESPACE => 'ns.*' |
显示指定用户在特定Namespace上的quota信息。 |
set_quota TYPE => THROTTLE, USER => 'u1', NAMESPACE => 'ns1', LIMIT => NONE |
删除指定用户的特定Namespace的quota。 |
设置在指定时间内可以在表上执行的请求数量 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, TABLE => 't1, LIMIT => '10req/sec' |
针对特定表设置每秒10个请求的quota。 |
list_quotas TABLE => 't1' |
显示特定表的quota信息。 |
set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => NONE |
删除特定表的quota。 |
设置在指定时间内可以在Namespace中执行的请求数量 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => '10req/sec' |
针对特定Namespace设置每秒10个请求的quota。 |
list_quotas NAMESPACE => 'ns1' |
显示特定Namespace的quota信息。 |
set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => NONE |
删除特定Namespace的quota。 |
3. 请求大小Quota
请求大小quota是指设置某个用户或某些相同名字的用户可以在任意指定时间内在特定表上或Namespace中执行的请求大小。
请求大小quota在命令中使用时间和大小单位。有效的大小单位为B(字节)、K(千字节)、M(兆字节)、G(十亿字节)、T(兆兆字节)和P(千万亿字节)。
以下是五种设置请求大小quota的示例:
设置用户在指定时间内可以执行的请求大小 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, USER => 'user_name', LIMIT => '5K/min' |
对指定用户设置每分钟5千字节的quota。 |
list_quotas USER => 'user_name' |
显示指定用户的quota信息。 |
set_quota TYPE => THROTTLE, USER => ' user_name ', LIMIT => NONE |
删除指定用户的quota。 |
·
设置在指定时间内在指定表上可以执行的请求大小 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, USER => 'u1', TABLE => 'table_name', LIMIT => '5K/min' |
对指定用户的特定表设置每分钟5千字节的quota。 |
list_quotas USER => 'bob.*', TABLE => 't1' |
显示指定用户在特定表上的quota信息。 |
set_quota TYPE => THROTTLE, USER => 'u1', TABLE => 't1', LIMIT => NONE |
删除指定用户的特定表的quota。 |
·
设置用户在指定时间内在指定Namespace中可以执行的请求大小 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, USER => 'u1', NAMESPACE => 'ns1', LIMIT => '5K/min' |
对指定用户的特定Namespace设置每分钟5千字节的quota。 |
list_quotas USER => 'bob.*', NAMESPACE => 'ns.*' |
显示指定用户在特定Namespace上的quota信息。 |
set_quota TYPE => THROTTLE, USER => 'u1', NAMESPACE => 'ns1', LIMIT => NONE |
删除指定用户的特定Namespace的quota。 |
设置在指定时间内可以在表上执行的请求大小 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => '5K/min' |
针对特定表设置每分钟5千字节的quota。 |
list_quotas TABLE => 'myTable' |
显示特定表的quota信息。 |
set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => NONE |
删除特定表的quota。 |
设置在指定时间内可以在Namespace中执行的请求大小 |
|
示例 |
命令说明 |
set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => '5K/min' |
针对特定Namespace设置每分钟5千字节的quota。 |
list_quotas NAMESPACE => 'ns.*' |
显示特定Namespace的quota信息。 |
set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => NONE |
删除特定Namespace的quota。 |
- 点赞
- 收藏
- 关注作者
评论(0)