hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Trezzo (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-8663) a HBase Shell command to list the tables replicated (from or to) current cluster
Date Tue, 30 Jul 2013 04:05:50 GMT

    [ https://issues.apache.org/jira/browse/HBASE-8663?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13723370#comment-13723370

Chris Trezzo commented on HBASE-8663:

Should have read the JIRA more closely... I see now that this is not the final patch.

For the slave->master side of things: currently, the slave cluster does not have a consistent
view of the clusters it is receiving edits from. A master cluster could synchronously update
its peer clusters when adding/deleting a peer and when setting the replication scope on a
column family. The slave clusters would have to store this state somewhere. That would mean
that any time you do one of those operations there would be a synchronous call to the remote
peer cluster. You are essentially maintaining a consistent view of a cluster's upstream/downstream
neighbors in the replication topology.

Will think about this some more. It seems tricky though.
> 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
>            Assignee: Demai Ni
>            Priority: Critical
>         Attachments: HBASE-8663.PATCH, HBASE-8663-trunk-v0.patch, HBASE-8663-v2.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
>  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

View raw message