RegionServer Group 通过对 RegionServer 进行分组,不同的 RegionServer 分到不同的组。每个组可以按需挂载不同的表,并且当组内的表发生异常后,Region 不会迁移到其他的组。这样,每个组就相当于一个逻辑上的子集群,通过这种方式达到资源隔离的效果,降低管理成本,不必为每个高 SLA 的业务线单独搭集群。
不过目前hbase的不同rsgroup之间还是有影响的,他们底层都是使用的同一个hadoop。
我们使用的hbase集群是hbase2.1.5版本。环境搭建参见hbase 2.1 环境搭建–完全分布式模式 Advanced - Fully Distributed
想要使用rsgroup功能,需要再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>
重启hbase集群。
先建一个表用于测试:
create 'test:lbltest','0'
查看表属于哪个rsgroup
hbase(main):012:0> get_table_rsgroup 'test:lbltest'
default
可以看到默认是建到default组中。
添加一个rsgroup
hbase(main):020:0> add_rsgroup 'testgroup'
Took 0.0444 seconds
hbase(main):021:0> list_rsgroups
NAME SERVER / TABLE
testgroup
default server IP1:16020
server IP2:16020
table hbase:meta
table hbase:namespace
table hbase:rsgroup
目前testgroup还没有分配机器,还不能用。现在将IP1:16020移动到testgroup中
hbase(main):021:0> move_servers_rsgroup 'testgroup', ['IP1:16020']
hbase(main):021:0> list_rsgroups
NAME SERVER / TABLE
testgroup server IP1:16020
default server IP2:16020
table hbase:meta
table hbase:namespace
table hbase:rsgroup
接下来将刚才建的表test:lbltest移动到testgroup中。
move_tables_rsgroup 'testgroup',['test:lbltest']
查看所属组
hbase(main):015:0> get_table_rsgroup 'test:lbltest'
testgroup
hbase(main):016:0> list_rsgroups
NAME SERVER / TABLE
testgroup server IP1:16020
table test:lbltest
default server IP2:16020
在hbase控制台查看rsgroup:
rsgroup相关命令:
-
list_rsgroups:列出所有的 RegionServer groups,我们可以在这个命令的后面使用正则表达式来过滤一些我们要的信息。
-
get_rsgroup:获取某个 RegionServer group 的信息。
-
add_rsgroup:创建一个新的 RegionServer Group。
-
remove_rsgroup:删除某个 RegionServer Group。
-
balance_rsgroup:对某个 RegionServer Group 进行 balance 操作。
-
move_servers_rsgroup:将 RegionServers 从一个组移动到另一个组。 RegionServer 中的所有 Region 都将移动到另一个 RegionServer 中。
-
move_tables_rsgroup:将表从一个 RegionServer Group 移动另一个 RegionServer Group。
-
move_namespaces_rsgroup:将指定命名空间的表从一个 RegionServer Group 移动另一个 RegionServer Group。
-
move_servers_tables_rsgroup:将 RegionServers 和 Tables 从一个 RegionServer Group 移动另一个 RegionServer Group。
-
move_servers_namespaces_rsgroup:将指定命名空间的 RegionServers 和 Tables 从一个 RegionServer Group 移动另一个 RegionServer Group。
-
get_server_rsgroup:获取给定 RegionServer 所属的 RegionServer Group。
-
get_table_rsgroup:获取给定表所属的 RegionServer Group。
-
remove_servers_rsgroup:从 RegionServer Group 中删除已停用的 Region。 处于 Dead/recovering/live 状态的 Region 将无法操作。