HBase集群多租户实践

简介: HBase集群多租户实践

1.基本概念


1.1 namespace逻辑隔离


HBase命名空间 namespace 与关系数据库系统中的数据库database类似,方便对表在业务上进行划分,实现逻辑隔离。


Apache HBase从0.98.0, 0.95.2两个版本开始支持namespace级别的授权操作,管理员可以创建、修改和回收namespace的授权。


这种抽象为即将出现的多租户隔离相关功能奠定了基础。


1.2. 配额管理(Quotas)


资源限制,主要针对用户、namespace以及表的QPS和请求大小进行限制。


相关jira见:

https://issues.apache.org/jira/browse/HBASE-8410https://issues.apache.org/jira/browse/HBASE-11598


一般可以对热点表进行限制,或者在高峰期,对非核心业务表进行限制。


常用语句:


hbase> set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => '1000req/sec'
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'u1', LIMIT => '10M/sec'


注意事项:


1)set_quota 的限制都是针对单个region server来说的,并不是针对整个集群,是一种分布式的限制


2)set_quota 默认执行后并不会立刻生效,需要等待一段时间才会生效,等待时间默认为5min。可以通过参数 hbase.quota.refresh.period 进行设置,比如可以通过设置

hbase.quota.refresh.period = 60000将生效时间缩短为1min


3)可以通过命令list_quotas查看当前所有执行的set_quota命令


4)本质上是一种限流手段,无法充分隔离资源


1.3 RS隔离 RegionServer Group


一般情况下,为了保证核心业务的隔离性,会为每个业务搭建一个集群,但是这样可能会导致资源使率过低,比如有些业务重计算轻存储,有些业务重存储轻计算,完全的物理隔离势必带来资源的不协调,有些集群资源过剩,有些集群资源不足。


对此,得益于HBase的共享存储、计算分离的架构,Hbase提供了多租户隔离技术RegionServer Group。


相关jira见:

https://issues.apache.org/jira/browse/HBASE-6721


RegionServer Group 技术是通过对 RegionServer 进行分组,不同的 RegionServer 分到不同的组。每个组可以按需挂载不同的表,并且当组内的表发生异常后,Region 不会迁移到其他的组。这样,每个组就相当于一个逻辑上的子集群,通过这种方式达到存储资源共享、计算资源隔离的效果,提高资源利用率,降低管理成本,不必为每个高 SLA 的业务线单独搭集群。

76.jpg


2.多租户核心架构图


下面,我们进一步深入多租户的核心架构图,通过架构图能清晰的看到,资源的隔离和共享情况,某一个租户的RS上哪些操作会对其他租户的资源产生影响,具体影响在哪里,影响大小如何量化。


从上图可以看的,group对region server做了隔离,因此,在计算资源上是物理隔离的。


因此,多租户场景下,相互直接的影响是在共享存储层面的。


在共享存储上,发生相互影响的根本原因在于HDFS的数据三副本写入,如下图所示

77.jpg



从以上可以看出多租户间可能产生的影响主要来自于其他租户引发的一些写流量,主要包括:


  • HBase写入产生的WAL同步
  • MemStore 刷盘导致的数据同步(flush)
  • StoreFile合并导致的数据同步(MinorCompaction & MajorCompaction)
  • 尤其是大数据量的写入,会对其他group的load造成显著影响


3.容量规划


一个实例(集群)的情况下,压测的结果和性能表现就是该实例(集群)的prod后实际运行的表现,但是针对一个集群多个用户的情况(主要是HBase的存储节点共享),如何来评估容量,分配资源显然更具挑战。


重点解决业务诉求对HBase集群资源的合理科学分配。例如下面这个参考:

78.jpg



为了方便我们识别某个业务是“存储型”还是“计算型”,我们对当前业务需要的机器做个评估。


定义资源系数m(简化计算,暂时不考虑内存):


m = 核数 * cpu使用率/ (存储容量*容量使用率)


由于我们一般采用8c64g 1788GB(三副本,实际存储为0.6T)作为标准core,根据上文资源系数m的计算公式:


标准core的


m = 8 * 50%/(0.6*100%) = 6.67


其中,cpu安全水位为50%。


如果某个业务的预估m值低于6.67,则认为是存储型,高于6.67则认为是计算型(当然,随着业务的发展,这个偏向可能会发生变化)。


多租户的核心在于提高资源利用率,因此,我们需要将便计算型业务和便存储型业务进行混合部署。


4.告警监控


同集群多租户下的监控告警方案,区别不同集群的监控方案,需要更细粒度的关系映射。


对于多租户集群,采用最小租户单位为namespace,记录namespace对应的group name、core-id


1)监控看版


在原本集群监控的基础上,手动记录租户与实例资源的映射关系,然后在目前的看板上进一步筛选core-id进行监控。


2)告警


监控针对core-id进行指标判断,一旦指标到达阈值,根据instanceid、core-id请求hbase-ops获取相关报警联系人


没有按core区分的系统指标只需要instanceid,请求hbase-ops获取该集群所有相关联系人。


5.多租户最佳实践


  • 单个集群不能太小,太小没有意义。
  • 单个group内region server也不要太少,至少2个,region server越少,单个region server故障的影响面越大。
  • 如果做了group,那么default的group最好空出来,只用来放meta表。
  • 最佳模式是按照namespace纬度进行group的划分。
  • 集群中,可以划分一个buffer group,不承担任何流量,如果出现线上的热点,可以临时把这个热点表移动到buffer group上
相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
存储 Oracle 关系型数据库
HBase集群环境搭建与测试(上)
HBase集群环境搭建与测试
273 0
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
224 0
|
大数据 分布式数据库 Docker
基于Docker搭建大数据集群(七)Hbase部署
基于Docker搭建大数据集群(七)Hbase部署
|
1月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 监控关注的核心指标包括 Master 和 RegionServer 的进程存在性、RPC 请求数、JVM 内存使用率、磁盘和网络错误、延迟和吞吐量、资源利用率及 JVM 使用信息。通过 Grafana 可视化和告警规则,帮助管理员实时监控集群性能和健康状况。
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
89 4
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
39 3
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
62 3
|
7月前
|
SQL 关系型数据库 MySQL
Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
【2月更文挑战第9天】Sqoop【付诸实践 01】Sqoop1最新版 MySQL与HDFS\Hive\HBase 核心导入导出案例分享+多个WRAN及Exception问题处理(一篇即可学会在日常工作中使用Sqoop)
307 7
|
4月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
153 2
|
4月前
|
Prometheus 监控 Cloud Native
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?
在 HBase 集群中,Prometheus 通常监控哪些类型的性能指标?