生产中,每个业务之间的重要性是不一致的,每个业务的数据量、读写需求也不一致,在1.1之前,一个集群中往往有很多个业务,有的同学可以执行一个耗时的scan操作,整个集群的资源被大量占用,其它非常重要的业务就被挤压的资源,造成一系列的事故,所以,很多时候,都会把hbase分成很多个集群,重要的业务单独一个集群,不重要的、数据量不大的再凑合凑合,又是一个集群,这样往往一个集群不会很大,造成一系列问题,集群管理复杂,监控重复很多,集群的资源得不到充分利用等等问题。
基于这些问题,hbase提出了Quotas,它可以限制namespace,user,table这些级别,涉及read/write的限制,包括限制单位时间的条数和size。
Enabling Quotas
Quotas默认是关闭的,需要打开,只需要在hbase-site.xml配置中写入hbase.quota.enabled,设置为true就可以了,官网说(This expiration period defaults to 5 minutes.)就是配置好了,默认5分钟就会生效(测试等了20多分钟都不行,就重启了一下)
Quota Syntax
1.THROTTLE_TYPE可以表示为READ,WRITE或默认类型(read+write)。
2.时间单位表示:sec,min,hour,day
3.size限制单位表示:B(字节), K(千字节), M(兆字节), G(千兆字节), T(兆兆字节),P(PB级)
4.请求数的限制表示为整数,后跟字符串 req,如1000rep/sec:表示1秒限制为1000条
5.table或namespace的数量表示为整数,比如一个namespace限制创建多少张表
Setting Request Quotas
#将用户u1限制为每秒10个请求
hbase> set_quota TYPE => THROT