温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。


Fayson的github:

​https://github.com/fayson/cdhproject​


提示:代码块部分可以左右滑动查看噢


1.文档编写目的




HBase集群在实际的使用的过程会遇到,不重要的业务使用集群资源过多,从而导致一些比较重要的业务无法正常运行,针对这种多工作负载问题社区提出了相应的应对措施,主要有如下几种:


1.Quotas:资源限制主要是针对User、NameSpace及Table的请求数和流量限制

2.Request Queues:资源调度针对任务优先级调度,在0.99版本之前HBase只提供FIFO队列,之后版本增加了DeadLine队列,使得在线交互式查询优先级更改,而离线的scan请求优先级更低。

3.Multiple-Typed Queues: 通过设置多个请求队列,为不同的请求划分至不同的队列。


在前面的文章中Fayson介绍了《​​如何在CDH中使用HBase的ACLs进行授权​​》,本篇文章主要介绍如何在CDH中使用HBase的Quotas设置资源请求限制。


  • 文档概述

1.HBase启用Quota

2.HBase Quotas测试

3.总结


  • 测试环境

1.CM和CDH版本为5.14.3

2.Redhat7.4


  • 前置条件

1.集群已启用Kerberos


2.HBase启用Quotas




在CDH中默认HBase的Quotas功能是关闭的,需要通过CM为HBase配置Qutoas


1.登录CM,进入HBase服务配置界面

如何在CDH中使用HBase的Quotas设置资源请求限制_创建表


2.在搜索栏输入“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及时生效,则将该参数设置小一些。


如何在CDH中使用HBase的Quotas设置资源请求限制_创建表_02


完成如上配置后,根据提示重启HBase服务。


3.HBase Request Quotas测试




使用admin用户为testcf


1.使用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'


如何在CDH中使用HBase的Quotas设置资源请求限制_建表_03


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

多次执行Scan操作,在执行第三次时提示等待30s


如何在CDH中使用HBase的Quotas设置资源请求限制_hadoop_04


多次执行put操作,在执行第三次时提示等待30s


如何在CDH中使用HBase的Quotas设置资源请求限制_创建表_05


2.使用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>


如何在CDH中使用HBase的Quotas设置资源请求限制_hadoop_06


使用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'


如何在CDH中使用HBase的Quotas设置资源请求限制_创建表_07


3.使用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


如何在CDH中使用HBase的Quotas设置资源请求限制_创建表_08


使用任意用户查看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'


如何在CDH中使用HBase的Quotas设置资源请求限制_建表_09


4.使用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


如何在CDH中使用HBase的Quotas设置资源请求限制_hadoop_10


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


如何在CDH中使用HBase的Quotas设置资源请求限制_hadoop_11


4.HBase NameSpace Quotas测试




1.使用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'


如何在CDH中使用HBase的Quotas设置资源请求限制_建表_12


测试在ns2空间下创建表,在创建第三个表时提示已达到最大限制


如何在CDH中使用HBase的Quotas设置资源请求限制_创建表_13


如果是已存在的NameSpace,需要限制建表数量则可以通过alter的操作进行设置,命令如下:


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


取消限制命令如下:


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


2.使用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>


如何在CDH中使用HBase的Quotas设置资源请求限制_创建表_14


在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' }


如何在CDH中使用HBase的Quotas设置资源请求限制_建表_15


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


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


取消限制:


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


5.总结


1.HBase支持对User、NameSpace和Table进行请求数和流量配额限制


2.限制频率可以按sec、min、hour、day 


3.对于请求大小限制示例(5K/sec,10M/min等),请求大小限制单位如下:

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


4.支持限制NameSpace下建表数量和Region数量,无法直接限制建表大小


5.HBase设置限额后默认生效时间为5min,如果需要尽快使其生效则调整hbase.quota.refresh.period参数,单位ms



提示:代码块部分可以左右滑动查看噢


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。



推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

如何在CDH中使用HBase的Quotas设置资源请求限制_建表_16

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操