HBase 多租户隔离技术:RegionServer Group 介绍及实战

HBase的RegionServer Group技术实现了多租户资源隔离,通过将RegionServer分组,确保不同组内的表操作互不影响。本文介绍了RegionServer Group的概念、工作原理,并详细阐述了如何配置和使用这一技术,包括新增、删除组,以及表和RegionServer的迁移等操作。
摘要由CSDN通过智能技术生成

下面文字如代码错乱,可以点击下面的 阅读原文 即可进入原文阅读。https://www.iteblog.com/archives/2435.html

背景

随着 Apache HBase 在各个领域的广泛应用,在 HBase 运维或应用的过程中我们可能会遇到这样的问题:

  • 同一个 HBase 集群使用的用户越来越多,不同用户之间的读写或者不同表的 compaction、region splits 操作可能对其他用户或表产生了影响。将所有业务的表都存放在一个集群的好处是可以很好的利用整个集群的资源,只需要一套运维系统。

  • 如果一个业务或者一个部门使用一个 HBase 集群,这样会导致 HBase 集群的数量越来越多,直接导致了运维成本的增加。而且集群的分离也会导致资源的浪费,有些集群资源过剩,有些集群资源不足,这种情况我们无法充分利用不同集群的资源。将集群按照业务或部门分开的好处是可以很好的隔离不同表、不同用户之间的影响。

上面两种情况均存在不足,如果我们能够多租户共用一套集群,而且能够使不同用户之间进行隔离,在上层用户看来好像是独享一套 HBase 集群。为了解决这个问题,来自雅虎的 Francis Liu 提出了多租户隔离技术:RegionServer Group,详情请参见 HBASE-6721。这个技术的目标就是只需维护一个 HBase 集群,同时满足各个表在性能上、操作上的互不干扰,又支持访问安全隔离。

RegionServer Group

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

640?wx_fmt=png如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

从上图可以看出,RegionServer 1 和 RegionServer 2 同属于 iteblog Group 1,而且管理 Table 1 和 Table 3 两张表;RegionServer 3 和 RegionServer 4 同属于 iteblog Group 2,而且管理 Table 2 和 Table 4 两张表。从用户角度上看,RegionServer 1 和 RegionServer 2 看起来是属于一个集群;而 RegionServer 3 和 RegionServer 4 同属于一个集群,这两个组之间均不互相影响。但是对于集群运维人员来说,这就是一个 HBase 集群,我们只需要运维这一个 HBase 集群即可,大大降低了运维成本。

技术简要介绍

在引入 RegionServer Group 技术之前,HBase 默认使用 StochasticLoadBalancer 策略(通过 hbase.master.loadbalancer.class 参数实现,参见HBASE-9555)将表的 Region 移动到 RegionServer 里面去。这种策略被没有考虑到 RegionServer Group 的信息,所以如果要对 RegionServer 分组,我们就需要在移动 Region 的时候考虑到这些信息。

基于这些信息,社区开发出能够识别出 RegionServer Group 信息的 RSGroupBasedLoadBalancer,这个类和上面的 StochasticLoadBalancer都是实现了 LoadBalancer 接口的,详见 HBASE-6721。

在默认情况下,所有的表和 RegionServer 都属于 default 组。RSGroupBasedLoadBalancer 类具有识别组信息的能力,所以在移动表的 Region 到 RegionServer 的时候会考虑到 RegionServer Group 信息的。为了启用这个特性,我们需要在 master 节点的 hbase-site.xml 文件加入以下的配置:

<property>
  <name>hbase.coprocessor.master.classes</name>
  <value>org.apache.hadoop.hbase.rsgroup.RSGroupAdminEndpoint</value>
</property>
<property>
  <name>hbase.master.loadbalancer.class</name>
  <value>org.apache.hadoop.hbase.rsgroup.RSGroupBasedLoadBalancer</value>
</property>

设置完之后需要重启 master 节点。

RegionServer Group 技术新引入的命令

RegionServer Group 技术为我们带来了以下13个新的 HBase shell 命令。使用下面的命令一定需要在 master 节点上的 hbase-site.xml 文件配置好上面两个属性。否则将会出现 UnknownProtocolException: No registered Master Coprocessor Endpoint found for RSGroupAdminService 异常。如下所示:

hbase(main):002:0> list_rsgroups
NAME                                            SERVER / TABLE
ERROR: o
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值