I think we still need two more binding votes here... 张铎(Duo Zhang) <[email protected]> 于2020年2月29日周六 上午10:43写道:
> Attached the design doc in HBASE-23911. > > Bharath Vissapragada <[email protected]> 于2020年2月24日周一 下午2:37写道: > >> +1 (non-binding). >> >> I've gone through the doc and it generally made sense to me. Mind adding >> the doc to dev-support/design-docs too? >> >> On Sat, Feb 22, 2020 at 5:32 AM Duo Zhang <[email protected]> wrote: >> >> > 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. >> > >> >
