104.1 演示环境介绍
- CM版本:5.14.3
- CDH版本:5.14.3
- Redhat版本:7.4
- 已启用Kerberos
104.2 操作演示
1.启用Quotas
- 进入HBase服务配置界面,在搜索栏输入hbase-site.xml,增加如下配置:
<property>
<name>hbase.quota.enabled</name>
<value>true</value>
</property>
<property>
<name>hbase.quota.refresh.period</name>
<value>10000</value>
</property>
- 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 shell
hbase(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> whoami
fayson@FAYSON.COM (auth:KERBEROS)
groups: fayson
hbase(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_quotas
hbase(main):007:0> whoami
- 使用任意用户查看test_fayson表数据
hbase(main):015:0* whoami
hbase(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_quotas
hbase(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> whoami
hbase(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> whoami
hbase(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
大数据语音推荐:
企业级大数据技术应用
大数据机器学习案例之推荐系统
自然语言处理
大数据基础
人工智能:深度学习入门到精通
网友评论