hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Demai Ni (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HBASE-8663) a HBase Shell command to list the tables replicated (from or to) current cluster
Date Thu, 30 May 2013 22:40:22 GMT
Demai Ni created HBASE-8663:
-------------------------------

             Summary: 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: Improvement
          Components: Replication
         Environment: clusters setup as Master and Slave for replication of tables 
            Reporter: Demai Ni
            Priority: Minor


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

Mime
View raw message