You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Demai Ni (JIRA)" <ji...@apache.org> on 2013/06/07 18:50:22 UTC
[jira] [Updated] (HBASE-8663) a HBase Shell command to list the
tables replicated (from or to) current cluster
[ https://issues.apache.org/jira/browse/HBASE-8663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Demai Ni updated HBASE-8663:
----------------------------
Attachment: HBASE-8663.PATCH
This patch is for Master cluster. so the command(list_replicated_tables) will show the tables replicated from this cluster,.
since I only have access to 94.3 clusters, patch is built and test on this version. I checked the code logic of newer versions, should be no conflict.
> a HBase Shell command to list the tables replicated (from or to) current cluster
> --------------------------------------------------------------------------------
>
> Key: HBASE-8663
> URL: https://issues.apache.org/jira/browse/HBASE-8663
> Project: HBase
> Issue Type: New Feature
> Components: Replication, shell
> Environment: clusters setup as Master and Slave for replication of tables
> Reporter: Demai Ni
> Priority: Minor
> Attachments: HBASE-8663.PATCH
>
>
> This jira is to provide a hbase shell command which can give user can overview of the tables/columnfamilies currently being replicated. The information will help system administrator for design and planning, and also help application programmer to know which tables/columns should be watchout(for example, not to modify a replicated columnfamily on the slave cluster)
> Currently there is no easy way to tell which table(s)/columnfamily(ies)
> replicated from or to a particular cluster.
>
> On Master Cluster, an indirect method can be used by combining two steps: 1) $describe 'usertable' and 2) $list_peers to map the REPLICATION_SCOPE to target(aka slave) cluster
>
> On slave cluster, this is no existing API/methods to list all the tables replicated to this cluster.
> Here is an example, and prototype for Master cluster
> {code: title=hbase shell command:list_replicated_tables |borderStyle=solid}
> hbase(main):001:0> list_replicated_tables
> TABLE COLUMNFAMILY TARGET_CLUSTER
> scores course hdtest017.svl.ibm.com:2181:/hbase
> t3_dn cf1 hdtest017.svl.ibm.com:2181:/hbase
> usertable family hdtest017.svl.ibm.com:2181:/hbase
> 3 row(s) in 0.3380 seconds
> {code}
> {code: title=method to return all columnfamilies replicated from this cluster |borderStyle=solid}
> /**
> * ReplicationAdmin.listRepllicated
> * @return List of the replicated columnfamilies of this cluster for display.
> * @throws IOException
> */
> public List<String[]> listReplicated() throws IOException {
> List<String[]> replicatedColFams = new ArrayList<String[]>();
>
> HTableDescriptor[] tables;
>
> tables= this.connection.listTables();
>
> Map<String, String> peers = listPeers();
>
> for (HTableDescriptor table:tables) {
> HColumnDescriptor[] columns = table.getColumnFamilies();
> String tableName = table.getNameAsString();
> for (HColumnDescriptor column: columns) {
> int scope = column.getScope();
>
> if (scope!=0) {
> String[] replicatedEntry = new String[3];
> replicatedEntry[0] = tableName;
> replicatedEntry[1] = column.getNameAsString();
> replicatedEntry[2] = peers.get(Integer.toString(scope));
> replicatedColFams.add(replicatedEntry);
> }
> }
> }
>
> return replicatedColFams;
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira