Hbase资源管理 Quotas
生产中,每个业务之间的重要性是不一致的,每个业务的数据量、读写需求也不一致,在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相关推荐
- 技术债务管理_管理技术债务
技术债务管理 DevOps Essentials DevOps基础 介绍 (Introduction) Technical debt is one of the most insidious and ...
- gradle依赖管理_依赖管理
gradle依赖管理 Why Bother 何必呢 Writing software is a very expensive process, and most systems we interact ...
- Hbase限流 -- HBase Quota调研
1 背景 HBase的生产环境中,每个业务之间的重要性是不一致的,每个业务的数据量.读写需求也不一致,一个集群中往往有很多个业务,有的同学可以执行一个耗时的scan操作,整个集群的资源被大量占用,其它 ...
- JAVA_基础部分_综合篇
JVM (1) 基本概念: JVM是可运行Java代码的假想计算机 ,包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收,堆 和 一个存储方法域.JVM 是运行在操作系统之上的,它与硬件没有直接的 ...
- Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建
目录 一.Hadoop的高可用原理概述 1.1 原理概述 1.2 实验环境要求 二.高可用集群的搭建 2.1 搭建Zookeeper 2.2 搭建HA的高可用 2.3 YARN(资源管理器 RM)高可 ...
- Linux环境HBase安装配置及使用
Linux环境HBase安装配置及使用 1. 认识HBase (1) HBase介绍 HBase = Hadoop database,Hadoop数据库 开源数据库 官网:hbase.apache.o ...
- BigData NoSQL —— ApsaraDB HBase数据存储与分析平台概览
一.引言 时间到了2019年,数据库也发展到了一个新的拐点,有三个明显的趋势: 越来越多的数据库会做云原生(CloudNative),会不断利用新的硬件及云本身的优势打造CloudNative数据库, ...
- HBase in 2013
2013年马上就要过去了,总结下这一年HBase在这么一年中发生的主要变化.影响最大的事件就是HBase 0.96的发布,代码结构已经按照模块化release了,而且提供了许多大家迫切需求的特点.这些 ...
- hbase安装,以及安装前置hadoop(单节点)
1.hadoop下载 https://archive.apache.org/dist/hadoop/common/ 这里我下载的是: hadoop-2.7.4.tar.gz 1-1首先做ssh免密码登 ...
最新文章
- LeetCode简单题之二叉搜索树的最小绝对差/最小距离
- PCL:点云特征描述子3D_object_recognition_(descriptors)
- sdut 1479 数据结构实验之栈与队列九:行编辑器
- Spring boot实现异步
- 使用GlassFish 4.0测试驱动Java API以处理JSON
- eclipseini设置使用的jdk_系统安全篇(四)-如何升级JDK版本?
- 荣耀系统更新服务器不可用,荣耀确认系统更新方式 4月1日前发布的机型固件升级由华为负责...
- 贾跃亭又造假,250亿灰飞烟灭!
- 【MySQL】sql语句中exists和in有何区别?
- 算法第五章上机实践报告
- 【转载】异步调用与多线程的区别
- E: Write error - write (28 No space left on device)
- 使用liteide开发go问题收集
- OpenGL学习(七)通过assimp库读取多种格式的模型
- 码云推送代码后不显示贡献度
- Oracle 循环插入数据
- 学Python后到底能干什么?网友:我太难了
- 新装电脑系统,会自动安装乱七八糟的软件问题处理法
- 转换流(将字节流转换为字符流)
- Thymeleaf – Java静态页面模版框架