HBase集群多租户实践:《从零开始的单行HBase 10》
发布之前,同一个HBase集群中用户和表是平等的,大家平等共享集群资源。容易遇到了两个问题:
- 一是有些公司比其他公司更重要,需要在有限的资源下优先保证核心重要公司的正常运营
- 二是有些公司往往QPS高,占用量大占用系统资源,导致其他业务无法正常运行。
这是一个典型的多租户问题。因此,我们需要通过资源隔离来解决多租户问题。同时需要考虑计算机业务和存储业务的混合部署,提高集群的资源利用率。
1。基本概念
无网格 m.vbuge.com
1.1 命名空间逻辑隔离
HBase命名空间 命名空间类似于关系数据库系统中的数据库database,方便对表进行业务划分,实现逻辑隔离。
Apache HBase 从版本 0.98.0 和 0.95.2 开始支持命名空间级别的授权操作。 HBase全局管理员可以创建、修改和回收命名空间授权。
这种抽象为未来的多租户相关功能奠定了基础。
。配额管理(Quotas)
资源约束,主要限制QPS以及用户、命名空间和表的请求大小。
相关jira参见:
、
一般可以限制热点表,或者在高峰期限制非核心业务表。
常用语句:
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 默认执行后不会立即生效。它们需要一段时间才能生效。默认等待时间为 5 分钟。可以通过参数来设置。例如,可以通过设置
= 60000
,将有效时间缩短为 1 分钟。 3) 可以通过命令 list_quotas 列出当前所有执行的 set_quota 命令
4) 本质上是一种限流方法。资源充分隔离
1.3 RS隔离(区域组)
一般情况下,为了保证核心业务的隔离,会为每个业务建立一个集群,但这可能会导致资源利用率过低。比如有的业务重计算不重存储,有的业务重存储不重计算。完全的物理隔离必然导致资源不协调。有的集群资源过剩,有的集群资源不足。
对此,得益于HBase的共享存储和分离计算架构,HBase提供了多租户隔离技术region group。
相关jira参见:
https://issues.apache.org/jira/browse/HBASE-6721
RegionServer Group技术就是对RegionServer进行分组,不同的RegionServer被分配到不同的组中。每个组可以根据需要挂载不同的表,如果组内的表出现异常,则该Region不会迁移到其他组。这样,每个组就相当于一个逻辑子簇。这样可以达到共享存储资源和隔离计算资源的效果,提高资源利用率,降低管理成本。无需为每个高SLA业务线单独设置集群。星团
2。多租户核心架构图
下面我们进一步深入研究多租户核心架构图。通过架构图,我们可以清楚地看到资源的隔离和共享,以及在给定的租户RS上执行哪些操作。对其他租户的资源有影响,具体影响在哪里,影响如何量化?
从上图可以看出,该组织已经隔离了区域服务器。因此,计算资源在物理上是隔离的。
因此,在多租户场景下,彼此之间的直接影响是在共享存储层面。
在共享存储上,相互影响的根本原因是HDFS中三份数据的写入,如下图从上面可以看出,多租户之间可能产生的影响主要是来自其他租户造成的一些问题 写入流量主要包括:
- HBase 写入导致的 WAL 同步
- 磁盘刷新(Flush)导致的 MemStore 数据同步
- StoreFile 合并(MinorCompaction)& MajorCompaction 导致的数据同步 尤其是大数据大量的写入会对其他组的负载产生明显的影响
3。容量规划
对于实例(集群)来说,压测结果和性能表现是实例(集群)运行性能的实际后期结果,但对于集群中的多个用户(主要是HBase存储节点共享) ,例如“评估能力和分配资源显然更具挑战性”。
重点关注HBase集群资源的合理科学配置,解决业务状况。例如下面的参考: 为了方便我们识别某个业务是“存储类型”还是“计算类型”,我们对实际业务所需的机器进行评估。
定义资源系数m(简化计算,暂不考虑内存):
m = 核数 * cpu使用率/ (存储容量*容量使用率)
因为我们一般使用8c64g 1788GB(三副本,当前存储为)作为标准核心,根据资源系数m的计算公式上图:
标准核心的
m = 8 * 50%/(*100%) =
其中CPU安全水位为50%。
如果某个业务的估计m值低于该值,则认为是存储类型,如果高于该值,则认为是计算类型(当然,随着业务的发展,这种假设可能会发生)改变)。
多租户的核心是提高资源利用率。因此,我们需要做实用计算服务和实用存储服务的混合部署。
4。报警监控
同一集群内多租户之间的监控报警方案需要更细粒度的关系映射,以区分不同集群的监控方案。
对于多租户集群,以最小的租户单位作为命名空间,并记下命名空间对应的组名和核心ID
1)监控查看版本
基于原集群监控,手动记录租户和实例资源。
2) 报警
监控根据核心ID进行指标判断。当指标达到阈值时,根据instanceid和core-id查询hbase-ops,获取相关报警联系人
与core无异的系统指标只需要instanceid,查询hbase-ops即可找到所有相关联系人星集群
5。多租户最佳实践
- 单个集群不能太小,太小是没有意义的。
- 单组Region Server不要太少,至少2台。Region Server越少,单台Region Server故障影响越大。
- 创建组时,最好将默认组留空,只用它来存储元表。
- 最好的模式是按命名空间纬度拆分组。
- 集群中可以划分一个没有流量的缓冲区组。如果出现线上热点,可以暂时将热点表移至缓冲组中。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。