The issue aims to make rs group the first class citizen in HBase, where the feature can be enabled through a simple flag, not a complicated coprocessor, and also we can manage it through the Admin interface, while in the old time the only public way is to through the shell command, as the coprocessor client is marked as IA.Private.
This is a simple design doc <goog_2028452043> https://docs.google.com/document/d/1SuodZ_uDQQQVJyryRxqp033cgz2aQPJmjIREbbbmB3c/edit?usp=sharing The PR for all the changes https://github.com/apache/hbase/pull/1165 And let me copy the release note here Moved rs group feature into core. Use this flag to enable or disable it. The coprocessor org.apache.hadoop.hbase.rsgroup.RSGroupAdminEndpoint is deprected, but for compatible, if you want the pre 3.0.0 hbase client/shell to communicate with the new hbase cluster, you still need to add this coprocessor to master. And if this coprocessor is specified, the above flag will be set to true automatically to enable rs group feature. These methods are added to the Admin/AsyncAdmin interface for managing rs groups. See the javadoc of these methods for more details. void addRSGroup(String groupName) throws IOException; RSGroupInfo getRSGroup(String groupName) throws IOException; RSGroupInfo getRSGroup(Address hostPort) throws IOException; RSGroupInfo getRSGroup(TableName tableName) throws IOException; List<RSGroupInfo> listRSGroups() throws IOException; List<TableName> listTablesInRSGroup(String groupName) throws IOException; Pair<List<String>, List<TableName>> getConfiguredNamespacesAndTablesInRSGroup(String groupName) throws IOException; void removeRSGroup(String groupName) throws IOException; void removeServersFromRSGroup(Set<Address> servers) throws IOException; void moveServersToRSGroup(Set<Address> servers, String targetGroup) throws IOException; void setRSGroup(Set<TableName> tables, String groupName) throws IOException; boolean balanceRSGroup(String groupName) throws IOException; The shell commands for rs group are not changed. The main difference on the implementation is that, now the rs group for a table is stored in TableDescriptor, instead of in RSGroupInfo, so the getTables method of RSGroupInfo has been deprecated. And if you use the above Admin methods to get the RSGroupInfo, its getTables method will always return empty. Of course the behavior for the old RSGroupAdminEndpoint is not changed, we will fill the tables field of the RSGroupInfo before returning, to make it compatible with old hbase client/shell. When upgrading, the migration between the RSGroupInfo and TableDescriptor will be done automatically. It will take sometime, but it is fine to restart master in the middle, the migration will continue after restart. The vote will open for at least 72 hours. Please vote [+1] Agree [-1] Disagree Thanks.
