欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

104.用HBase的Quotas设置资源请求限制

时间:2023-04-17
104.1 演示环境介绍

CM版本:5.14.3CDH版本:5.14.3Redhat版本:7.4已启用Kerberos 104.2 操作演示

1.启用Quotas

进入Hbase服务配置界面,在搜索栏输入hbase-site.xml,增加如下配置:

hbase.quota.enabled true hbase.quota.refresh.period 10000

hbase.quota.refresh.period该参数主要是用于设置quota设置的刷新周期

默认为5min,如果需要设置的quota及时生效,则将该参数设置小一些 完成如上配置后,根据提示重启Hbase服务

2.Hbase Request Quotas

使用admin用户为testcf用户设置每分钟2个Read和Write

该操作是针对用户进行限制,主要限制用户的请求频率

set_quota TYPE => THROTTLE, THROTTLE_TYPE => READ, USER => 'testcf', LIMIT => '2req/min'set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'testcf', LIMIT => '2req/min'

使用testcf用户访问Hbase执行READ和WRITE操作

多次执行Scan操作,在执行第三次时提示等待30s多次执行put操作,在执行第三次时提示等待30s 使用admin用户为fayson用户设置每分钟1B的写入流量

该操作是针对用户进行限制,限制用户的写入流量

[root@cdh03 ~]# klist[root@cdh03 ~]# hbase shellhbase(main):001:0> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'fayson', LIMIT => '1B/min'hbase(main):003:0>

使用fayson用户向test_fayson表中插入一个超过1B的数据

hbase(main):003:0> whoamifayson@FAYSON.COM (auth:KERBEROS) groups: faysonhbase(main):004:0> put 'test_fayson','0001','info:name','test0001'

使用admin用户设置test_fayson表的每分钟2个请求

该操作是针对表进行设置,限制指定表的请求频率或写入流量

hbase(main):005:0> set_quota TYPE => THROTTLE, TABLE => 'test_fayson', LIMIT => '2req/min'hbase(main):006:0> list_quotashbase(main):007:0> whoami

使用任意用户查看test_fayson表数据

hbase(main):015:0* whoamihbase(main):016:0> scan 'picHbase'hbase(main):017:0> scan 'picHbase'hbase(main):018:0> scan 'picHbase'hbase(main):019:0> scan 'test_fayson'hbase(main):020:0> scan 'test_fayson'

使用admin用户为my_ns_admin设置每分钟3个请求限制

该操作主要是针对NameSpace进行限制,可以设置NameSpace的请求数量和写入流量

hbase(main):001:0> set_quota TYPE => THROTTLE, NAMESPACE => 'my_ns_admin', LIMIT => '3req/min'hbase(main):002:0> list_quotashbase(main):003:0> whoami

使用fayson用户进行如下测试,查看my_ns_admin空间下的任意表,第二次时会报错提示等待20s,一分钟3次分为每20s一次

3.Hbase NameSpace Quotas

使用admin用户限制my_ns_admin空间的建表数据不超过3个

新建一个NameSpace为ns2并限制建表数量为2

hbase(main):001:0> whoamihbase(main):002:0> create_namespace 'ns2', {'hbase.namespace.quota.maxtables'=>'2'

测试在ns2空间下创建表,在创建第三个表时提示已达到最大限制如果是已存在的NameSpace,需要限制建表数量则可以通过alter的操作进行设置,命令如下:

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

取消限制命令如下:

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

使用admin用户为NameSpace限制Region数量

新建一个NameSpace为ns1并限制Region的数量为10,语句如下

hbase(main):001:0> whoamihbase(main):002:0> create_namespace 'ns1', {'hbase.namespace.quota.maxregions'=>'10'}hbase(main):003:0>

在ns1空间下创建表并指定Region数量测试,当执行第三建表语句时提示Region数据最大为10,超出限制

create 'ns1:test1','info', { NUMREGIONS => 4 , SPLITALGO => 'UniformSplit' }create 'ns1:test2','info', { NUMREGIONS => 4 , SPLITALGO => 'UniformSplit' }create 'ns1:test3','info', { NUMREGIONS => 4 , SPLITALGO => 'UniformSplit' }

如果是已存在的NameSpace,需要限制Region数量则使用如下语句,进行修改

alter_namespace 'ns2', {METHOD => 'set', 'hbase.namespace.quota.maxregions'=>'10'}

取消限制:

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

4.总结

Hbase支持对User、NameSpace和Table进行请求数和流量配额限制限制频率可以按sec、min、hour、day对于请求大小限制示例(5K/sec,10M/min等),请求大小限制单位如下:

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

支持限制NameSpace下建表数量和Region数量,无法直接限制建表大小Hbase设置限额后默认生效时间为5min,如果需要尽快使其生效则调整hbase.quota.refresh.period参数,单位ms

大数据视频推荐:
CSDN
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。