生产中,每个业务之间的重要性是不一致的,每个业务的数据量、读写需求也不一致,在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 => THROTTLE,USER =>'u1',LIMIT =>'10req/sec' #将用户u1限制为每秒10个读取请求
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => READ,USER =>'u1',LIMIT =>'10req/sec' #将用户u1限制为每天10 M
hbase> set_quota TYPE => THROTTLE,USER =>'u1',LIMIT =>'10M/day' #将用户u1限制为每秒10 M写入大小
hbase> set_quota TYPE => THROTTLE,THROTTLE_TYPE => WRITE,USER =>'u1',LIMIT =>'10M/sec' #将用户u1限制为每分钟5k在表t2
hbase> set_quota TYPE => THROTTLE,USER =>'u1',TABLE =>'t2',LIMIT =>'5K/min' #在表t2上将用户u1限制为每秒10次读取请求
hbase> set_quota TYPE => THROTTLE,THROTTLE_TYPE => READ,USER =>'u1',TABLE =>'t2',LIMIT =>'10req/sec' #在用户名u1上删除用户u1的现有限制ns2
hbase> set_quota TYPE => THROTTLE,USER =>'u1',NAMESPACE =>'ns2',LIMIT => NONE #限制所有用户在命名空间上每小时发出10个请求ns1
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的所有quota ns2
hbase> list_quotas USER =>'u1,NAMESPACE =>'ns2'#列出名称空间的所有quota s2
hbase> list_quotas NAMESPACE =>'ns2' #列出表t1 hbase的所有quotas
> list_quotas TABLE =>'t1' #list all quotas
hbase> list_quotas

可以通过应用GLOBAL_BYPASS属性来设置全局限制并从限制中排除用户或表,就是设置心悦会员的意思

hbase> set_quota NAMESPACE =>'ns1',LIMIT =>'100req/min'#每个命名空间请求限制
hbase> set_quota USER =>'u1',GLOBAL_BYPASS => true #user u1不受限制

Limiting Tables Per Namespace

#创建一个最多包含5个表的命名空间
hbase> create_namespace'ns1',{'hbase.namespace.quota.maxtables'=>'5'} #更改现有命名空间,最多包含8个表
hbase> alter_namespace'ns2 ',{METHOD =>'set','hbase.namespace.quota.maxtables'=>'8'} #显示命名空间的quota信息
hbase> describe_namespace'ns2' #更改现有命名空间以删除quota
hbase> alter_namespace 'ns2',{METHOD =>'unset',NAME =>'hbase.namespace.quota.maxtables'}

Limiting Regions Per Namespace

#创建一个最多包含10个区域的命名空间
hbase> create_namespace'ns1',{'hbase.namespace.quota.maxregions'=>'10' #显示命名空间hbase的quota信息 describe_namespace'ns1' #更改现有命名空间最多有20个表
hbase> alter_namespace'ns2',{METHOD =>'set','hbase.namespace.quota.maxregions'=>'20'} #更改现有命名空间以删除quota
hbase> alter_namespace' ns2',{METHOD =>'unset',NAME =>'hbase.namespace.quota.maxregions'}

Space Quotas

HBASE-16961引入了一种新的HBase Quotas来利用:filesystem quotas。这些'space'qutas能限制namespace和table的size大小。这样做的原因也很简单,如果不加限制的话,用户可以无限制的往表中写数据,极端的情况是,大量的数据写入,造成没有空间可以,那么,hbase就会彭奎,因为hbase无法预写日志或者同步数据。

现有的set_quota和list_quotaHBase shell命令可用于与空间配额交互。空间配额是有配额TYPE的SPACE,并具有LIMIT和POLICY 属性。这LIMIT是一个字符串,指的是文件系统上的配额主题(例如表或命名空间)可能占用的空间量。例如,有效的值LIMIT是'10G','2T',或'256M'。该POLICY指当配额对象的使用量超过该HBase的将采取行动LIMIT。以下是有效值POLICY。

NO_INSERTS - No new data may be written (e.g. Put, Increment, Append).NO_WRITES - Same as NO_INSERTS but Deletes are also disallowed.NO_WRITES_COMPACTIONS - Same as NO_WRITES but compactions are also disallowed.DISABLE - The table(s) are disabled, preventing all read/write access.

Setting simple space quotas

# Sets a quota on the table 't1' with a limit of 1GB, disallowing Puts/Increments/Appends when the table exceeds 1GB
hbase> set_quota TYPE => SPACE, TABLE => 't1', LIMIT => '1G', POLICY => NO_INSERTS# Sets a quota on the namespace 'ns1' with a limit of 50TB, disallowing Puts/Increments/Appends/Deletes
hbase> set_quota TYPE => SPACE, NAMESPACE => 'ns1', LIMIT => '50T', POLICY => NO_WRITES# Sets a quota on the table 't3' with a limit of 2TB, disallowing any writes and compactions when the table exceeds 2TB.
hbase> set_quota TYPE => SPACE, TABLE => 't3', LIMIT => '2T', POLICY => NO_WRITES_COMPACTIONS# Sets a quota on the table 't2' with a limit of 50GB, disabling the table when it exceeds 50GB
hbase> set_quota TYPE => SPACE, TABLE => 't2', LIMIT => '50G', POLICY => DISABLE

Table and Namespace space quotas

hbase> create_namespace 'ns1'
hbase> create 'ns1:t1'
hbase> create 'ns1:t2'
hbase> create 'ns1:t3'
hbase> set_quota TYPE => SPACE, NAMESPACE => 'ns1', LIMIT => '100T', POLICY => NO_INSERTS
hbase> set_quota TYPE => SPACE, TABLE => 'ns1:t2', LIMIT => '200G', POLICY => NO_WRITES
hbase> set_quota TYPE => SPACE, TABLE => 'ns1:t3', LIMIT => '20T', POLICY => NO_WRITES

在上面的场景中,ns1不允许命名空间中的表在文件系统之间消耗超过100TB的空间。表'ns1:t2'的大小仅允许为200GB,并且当使用率超过此限制时将禁止所有写入。表'ns1:t3'的大小允许增长到20TB,并且还将禁止所有写入,然后使用超出此限制。由于'ns1:t1'上没有表配额,因此该表可以增长到100TB,但仅当'ns1:t2'和'ns1:t3'使用零字节时才会增长。实际上,它的限制是'ns1:t2'和'ns1:t3'的当前使用量减去100TB。

Hbase资源管理 Quotas相关推荐

  1. 技术债务管理_管理技术债务

    技术债务管理 DevOps Essentials DevOps基础 介绍 (Introduction) Technical debt is one of the most insidious and ...

  2. gradle依赖管理_依赖管理

    gradle依赖管理 Why Bother 何必呢 Writing software is a very expensive process, and most systems we interact ...

  3. Hbase限流 -- HBase Quota调研

    1 背景 HBase的生产环境中,每个业务之间的重要性是不一致的,每个业务的数据量.读写需求也不一致,一个集群中往往有很多个业务,有的同学可以执行一个耗时的scan操作,整个集群的资源被大量占用,其它 ...

  4. JAVA_基础部分_综合篇

    JVM (1) 基本概念: JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收,堆 和 一个存储方法域.JVM 是运行在操作系统之上的,它与硬件没有直接的 ...

  5. Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

    目录 一.Hadoop的高可用原理概述 1.1 原理概述 1.2 实验环境要求 二.高可用集群的搭建 2.1 搭建Zookeeper 2.2 搭建HA的高可用 2.3 YARN(资源管理器 RM)高可 ...

  6. Linux环境HBase安装配置及使用

    Linux环境HBase安装配置及使用 1. 认识HBase (1) HBase介绍 HBase = Hadoop database,Hadoop数据库 开源数据库 官网:hbase.apache.o ...

  7. BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览

    一.引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库, ...

  8. HBase in 2013

    2013年马上就要过去了,总结下这一年HBase在这么一年中发生的主要变化.影响最大的事件就是HBase 0.96的发布,代码结构已经按照模块化release了,而且提供了许多大家迫切需求的特点.这些 ...

  9. hbase安装,以及安装前置hadoop(单节点)

    1.hadoop下载 https://archive.apache.org/dist/hadoop/common/ 这里我下载的是: hadoop-2.7.4.tar.gz 1-1首先做ssh免密码登 ...

最新文章

  1. LeetCode简单题之二叉搜索树的最小绝对差/最小距离
  2. PCL:点云特征描述子3D_object_recognition_(descriptors)
  3. sdut 1479 数据结构实验之栈与队列九:行编辑器
  4. Spring boot实现异步
  5. 使用GlassFish 4.0测试驱动Java API以处理JSON
  6. eclipseini设置使用的jdk_系统安全篇(四)-如何升级JDK版本?
  7. 荣耀系统更新服务器不可用,荣耀确认系统更新方式 4月1日前发布的机型固件升级由华为负责...
  8. 贾跃亭又造假,250亿灰飞烟灭!
  9. 【MySQL】sql语句中exists和in有何区别?
  10. 算法第五章上机实践报告
  11. 【转载】异步调用与多线程的区别
  12. E: Write error - write (28 No space left on device)
  13. 使用liteide开发go问题收集
  14. OpenGL学习(七)通过assimp库读取多种格式的模型
  15. 码云推送代码后不显示贡献度
  16. Oracle 循环插入数据
  17. 学Python后到底能干什么?网友:我太难了
  18. 新装电脑系统,会自动安装乱七八糟的软件问题处理法
  19. 转换流(将字节流转换为字符流)
  20. Thymeleaf – Java静态页面模版框架

热门文章

  1. android studio 实例代码,android studio学习之一(示例代码)
  2. 第一次使用CSDN写博客
  3. pmp练习题及其答案
  4. 计算机主机英语怎么说,电脑里的 属性 英语怎么说
  5. A4纸张缩印怎么只打印一半A4纸的内容
  6. 秃顶之路-Day11
  7. WPS公式编辑器的MTExtra字体无效,将无法显示和打印某些字符
  8. 计算机网络base,计算机网络中的术语100Base-TX/FX指的是什么?
  9. python爬虫爬取淘宝网页
  10. 关于screenX、clientX、pageX, offsetX的相关介绍