多租户下不同业务对hbase需求不同,要优先保证实时性高的应用,限制实时性要求低大批量查询的任务,为了减小应用间相互影响需要对资源进行限制

Hbase quota 资源限制   

开启Hbase quota

Hbase-site.xml增加如下配置:

hbase.quota.enabled=true

hbase.quota.refresh.period=60000   # 一分钟后生效

cdh中配置如下,配置中”高级 — hbase-site.xml ”

hbase多租户资源管理(1)

Hbase quota使用:

 HBase的Quota功能可以实现对用户级、表级和命名空间级的资源进行限制.可以从请求次数,请求数据大小两个维度进行限制。限制是对每台服务器。

req/time:单位时间内的请求次数,

size/time:单位时间内的请求数据的大小

req:整数,请求次数

time:时间单位,secminhourday (秒,分钟,小时,天)

size: 存储单位

B (bytes), K (kilobytes), M (megabytes), G(gigabytes), T (terabytes), P (petabytes)

 命令

  list_quotas, set_quota TYPE => <type>, <args>

Quota参数:

TYPE => THROTTLE

 THROTTLE_TYPE:可以表示为READ,WRITE或默认类型(读取+写入)。

用法案例:

# 限制用户u1每秒10个请求

hbase> set_quota TYPE => THROTTLE, USER => 'u1', LIMIT => '10req/sec'

# 限制u1用户每秒10个读请求

hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => READ, USER => 'u1', LIMIT => '10req/sec'

# 限制用户u1每天的请求数据量为10M

hbase> set_quota TYPE => THROTTLE, USER => 'u1', LIMIT => '10M/day'

# 限制用户u1每秒写入10M

hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'u1', LIMIT => '10M/sec'

# 限制用户u1操作t2表,每分钟请求次数为5k

hbase> set_quota TYPE => THROTTLE, USER => 'u1', TABLE => 't2', LIMIT => '5K/min'

# 限制用户u1操作t2表每秒读取请求为10次

hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => READ, USER => 'u1', TABLE => 't2', LIMIT => '10req/sec'

# 删除用户u1在命名空间ns2上的现在

hbase> set_quota TYPE => THROTTLE, USER => 'u1', NAMESPACE => 'ns2', LIMIT => NONE

#限制命名空间ns1每小时请求次数为10

hbase> set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => '10req/hour'

# 限制表t1每小时请求10T数据量

hbase> set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => '10T/hour'

# 删除u1用户限制

hbase> set_quota TYPE => THROTTLE, USER => 'u1', LIMIT => NONE

#显示用户u1在命名空间ns2中的所有限制详情

hbase> list_quotas USER => 'u1, NAMESPACE => 'ns2'

#显示命令空间ns2的所有限制详情

hbase> list_quotas NAMESPACE => 'ns2'

#显示表t1的所有限制详情

hbase> list_quotas TABLE => 't1'

#显示所有限制

hbase> list_quotas

#用户u1不受限制

hbase> set_quota USER => 'u1', GLOBAL_BYPASS => true     

 

 

限制命名空间表个数

创建一个最多包含5个表的命名空间

hbase> create_namespace 'ns1', {'hbase.namespace.quota.maxtables'=>'5'}

 

# 修改命名空间表个数

hbase> alter_namespace 'ns2', {METHOD => 'set', 'hbase.namespace.quota.maxtables'=>'8'}

 

#显示命名空间下的信息

hbase> describe_namespace 'ns2'

 

# 删除命名空间表数量限制

hbase> alter_namespace 'ns2', {METHOD => 'unset', NAME=>'hbase.namespace.quota.maxtables'}

 

命名空间region数限制

 # 创建一个最多10个region的命名空间
hbase> create_namespace 'ns1', {'hbase.namespace.quota.maxregions'=>'10'
 
# 显示命名空间信息
hbase> describe_namespace 'ns1'
 
# 修改命名空间region数量
hbase> alter_namespace 'ns2', {METHOD => 'set', 'hbase.namespace.quota.maxregions'=>'20'}
 
# 删除命名空间region个数限制

hbase> alter_namespace 'ns2', {METHOD => 'unset', NAME=> 'hbase.namespace.quota.maxregions'}

相关文章:

  • 2022-02-04
  • 2021-06-14
  • 2021-12-05
  • 2021-07-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-19
  • 2021-08-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-30
  • 2022-12-23
  • 2022-02-11
相关资源
相似解决方案