HBASE-18736 Cleanup the HTD/HCD for Admin

This commit is contained in:
Chia-Ping Tsai 2017-09-02 00:06:02 +08:00
parent 476973654c
commit 32ddb1f604
5 changed files with 27 additions and 146 deletions

View File

@ -21,12 +21,11 @@ package org.apache.hbase.archetypes.exemplars.client;
import java.io.IOException; import java.io.IOException;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.NavigableMap; import java.util.NavigableMap;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.NamespaceNotFoundException; import org.apache.hadoop.hbase.NamespaceNotFoundException;
import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;
import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory; import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete; import org.apache.hadoop.hbase.client.Delete;
@ -34,6 +33,8 @@ import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result; import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.Table; import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.client.TableDescriptor;
import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Bytes;
/** /**
@ -110,9 +111,10 @@ public final class HelloHBase {
System.out.println("Creating Table [" + MY_TABLE_NAME.getNameAsString() System.out.println("Creating Table [" + MY_TABLE_NAME.getNameAsString()
+ "], with one Column Family [" + "], with one Column Family ["
+ Bytes.toString(MY_COLUMN_FAMILY_NAME) + "]."); + Bytes.toString(MY_COLUMN_FAMILY_NAME) + "].");
TableDescriptor desc = TableDescriptorBuilder.newBuilder(MY_TABLE_NAME)
admin.createTable(new HTableDescriptor(MY_TABLE_NAME) .addColumnFamily(ColumnFamilyDescriptorBuilder.of(MY_COLUMN_FAMILY_NAME))
.addFamily(new HColumnDescriptor(MY_COLUMN_FAMILY_NAME))); .build();
admin.createTable(desc);
} }
} }

View File

@ -32,7 +32,6 @@ import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Abortable; import org.apache.hadoop.hbase.Abortable;
import org.apache.hadoop.hbase.ClusterStatus; import org.apache.hadoop.hbase.ClusterStatus;
import org.apache.hadoop.hbase.ClusterStatus.Options; import org.apache.hadoop.hbase.ClusterStatus.Options;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HRegionInfo;
import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.hadoop.hbase.NamespaceDescriptor;
@ -282,23 +281,6 @@ public interface Admin extends Abortable, Closeable {
TableDescriptor listTableDescriptor(final TableName tableName) TableDescriptor listTableDescriptor(final TableName tableName)
throws TableNotFoundException, IOException; throws TableNotFoundException, IOException;
/**
* Creates a new table. Synchronous operation.
*
* @param desc table descriptor for table
* @throws IllegalArgumentException if the table name is reserved
* @throws org.apache.hadoop.hbase.MasterNotRunningException if master is not running
* @throws org.apache.hadoop.hbase.TableExistsException if table already exists (If concurrent
* threads, the table may have been created between test-for-existence and attempt-at-creation).
* @throws IOException if a remote or network exception occurs
* @deprecated since 2.0 version and will be removed in 3.0 version.
* use {@link #createTable(TableDescriptor)}
*/
@Deprecated
default void createTable(HTableDescriptor desc) throws IOException {
createTable((TableDescriptor) desc);
}
/** /**
* Creates a new table. Synchronous operation. * Creates a new table. Synchronous operation.
* *
@ -311,31 +293,6 @@ public interface Admin extends Abortable, Closeable {
*/ */
void createTable(TableDescriptor desc) throws IOException; void createTable(TableDescriptor desc) throws IOException;
/**
* Creates a new table with the specified number of regions. The start key specified will become
* the end key of the first region of the table, and the end key specified will become the start
* key of the last region of the table (the first region has a null start key and the last region
* has a null end key). BigInteger math will be used to divide the key range specified into enough
* segments to make the required number of total regions. Synchronous operation.
*
* @param desc table descriptor for table
* @param startKey beginning of key range
* @param endKey end of key range
* @param numRegions the total number of regions to create
* @throws IllegalArgumentException if the table name is reserved
* @throws org.apache.hadoop.hbase.MasterNotRunningException if master is not running
* @throws org.apache.hadoop.hbase.TableExistsException if table already exists (If concurrent
* threads, the table may have been created between test-for-existence and attempt-at-creation).
* @throws IOException
* @deprecated since 2.0 version and will be removed in 3.0 version.
* use {@link #createTable(TableDescriptor, byte[], byte[], int)}
*/
@Deprecated
default void createTable(HTableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions)
throws IOException {
createTable((TableDescriptor) desc, startKey, endKey, numRegions);
}
/** /**
* Creates a new table with the specified number of regions. The start key specified will become * Creates a new table with the specified number of regions. The start key specified will become
* the end key of the first region of the table, and the end key specified will become the start * the end key of the first region of the table, and the end key specified will become the start
@ -356,27 +313,6 @@ public interface Admin extends Abortable, Closeable {
void createTable(TableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions) void createTable(TableDescriptor desc, byte[] startKey, byte[] endKey, int numRegions)
throws IOException; throws IOException;
/**
* Creates a new table with an initial set of empty regions defined by the specified split keys.
* The total number of regions created will be the number of split keys plus one. Synchronous
* operation. Note : Avoid passing empty split key.
*
* @param desc table descriptor for table
* @param splitKeys array of split keys for the initial regions of the table
* @throws IllegalArgumentException if the table name is reserved, if the split keys are repeated
* and if the split key has empty byte array.
* @throws org.apache.hadoop.hbase.MasterNotRunningException if master is not running
* @throws org.apache.hadoop.hbase.TableExistsException if table already exists (If concurrent
* threads, the table may have been created between test-for-existence and attempt-at-creation).
* @throws IOException
* @deprecated since 2.0 version and will be removed in 3.0 version.
* use {@link #createTable(TableDescriptor, byte[][])}
*/
@Deprecated
default void createTable(final HTableDescriptor desc, byte[][] splitKeys) throws IOException {
createTable((TableDescriptor) desc, splitKeys);
}
/** /**
* Creates a new table with an initial set of empty regions defined by the specified split keys. * Creates a new table with an initial set of empty regions defined by the specified split keys.
* The total number of regions created will be the number of split keys plus one. Synchronous * The total number of regions created will be the number of split keys plus one. Synchronous
@ -393,29 +329,6 @@ public interface Admin extends Abortable, Closeable {
*/ */
void createTable(final TableDescriptor desc, byte[][] splitKeys) throws IOException; void createTable(final TableDescriptor desc, byte[][] splitKeys) throws IOException;
/**
* Creates a new table but does not block and wait for it to come online.
* You can use Future.get(long, TimeUnit) to wait on the operation to complete.
* It may throw ExecutionException if there was an error while executing the operation
* or TimeoutException in case the wait timeout was not long enough to allow the
* operation to complete.
* Throws IllegalArgumentException Bad table name, if the split keys
* are repeated and if the split key has empty byte array.
*
* @param desc table descriptor for table
* @param splitKeys keys to check if the table has been created with all split keys
* @throws IOException if a remote or network exception occurs
* @return the result of the async creation. You can use Future.get(long, TimeUnit)
* to wait on the operation to complete.
* @deprecated since 2.0 version and will be removed in 3.0 version.
* use {@link #createTableAsync(TableDescriptor, byte[][])}
*/
@Deprecated
default Future<Void> createTableAsync(final HTableDescriptor desc, final byte[][] splitKeys)
throws IOException {
return createTableAsync((TableDescriptor) desc, splitKeys);
}
/** /**
* Creates a new table but does not block and wait for it to come online. * Creates a new table but does not block and wait for it to come online.
* You can use Future.get(long, TimeUnit) to wait on the operation to complete. * You can use Future.get(long, TimeUnit) to wait on the operation to complete.
@ -718,8 +631,10 @@ public interface Admin extends Abortable, Closeable {
* Use {@link #addColumnFamily(TableName, ColumnFamilyDescriptor)}. * Use {@link #addColumnFamily(TableName, ColumnFamilyDescriptor)}.
*/ */
@Deprecated @Deprecated
void addColumn(final TableName tableName, final HColumnDescriptor columnFamily) default void addColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException; throws IOException {
addColumnFamily(tableName, columnFamily);
}
/** /**
* Add a column family to an existing table. * Add a column family to an existing table.
@ -798,8 +713,10 @@ public interface Admin extends Abortable, Closeable {
* Use {@link #modifyColumnFamily(TableName, ColumnFamilyDescriptor)}. * Use {@link #modifyColumnFamily(TableName, ColumnFamilyDescriptor)}.
*/ */
@Deprecated @Deprecated
void modifyColumn(final TableName tableName, final HColumnDescriptor columnFamily) default void modifyColumn(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException; throws IOException {
modifyColumnFamily(tableName, columnFamily);
}
/** /**
* Modify an existing column family on a table. * Modify an existing column family on a table.
@ -1231,13 +1148,13 @@ public interface Admin extends Abortable, Closeable {
* Modify an existing table, more IRB friendly version. * Modify an existing table, more IRB friendly version.
* *
* @param tableName name of table. * @param tableName name of table.
* @param htd modified description of the table * @param td modified description of the table
* @throws IOException if a remote or network exception occurs * @throws IOException if a remote or network exception occurs
* @deprecated since 2.0 version and will be removed in 3.0 version. * @deprecated since 2.0 version and will be removed in 3.0 version.
* use {@link #modifyTable(TableDescriptor)} * use {@link #modifyTable(TableDescriptor)}
*/ */
@Deprecated @Deprecated
void modifyTable(final TableName tableName, final HTableDescriptor htd) void modifyTable(final TableName tableName, final TableDescriptor td)
throws IOException; throws IOException;
/** /**
@ -1257,7 +1174,7 @@ public interface Admin extends Abortable, Closeable {
* operation to complete. * operation to complete.
* *
* @param tableName name of table. * @param tableName name of table.
* @param htd modified description of the table * @param td modified description of the table
* @throws IOException if a remote or network exception occurs * @throws IOException if a remote or network exception occurs
* @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the * @return the result of the async modify. You can use Future.get(long, TimeUnit) to wait on the
* operation to complete * operation to complete
@ -1265,7 +1182,7 @@ public interface Admin extends Abortable, Closeable {
* use {@link #modifyTableAsync(TableDescriptor)} * use {@link #modifyTableAsync(TableDescriptor)}
*/ */
@Deprecated @Deprecated
Future<Void> modifyTableAsync(final TableName tableName, final HTableDescriptor htd) Future<Void> modifyTableAsync(final TableName tableName, final TableDescriptor td)
throws IOException; throws IOException;
/** /**

View File

@ -994,18 +994,6 @@ public class HBaseAdmin implements Admin {
return getAlterStatus(TableName.valueOf(tableName)); return getAlterStatus(TableName.valueOf(tableName));
} }
/**
* {@inheritDoc}
* @deprecated Since 2.0. Will be removed in 3.0. Use
* {@link #addColumnFamily(TableName, ColumnFamilyDescriptor)} instead.
*/
@Override
@Deprecated
public void addColumn(final TableName tableName, final HColumnDescriptor columnFamily)
throws IOException {
addColumnFamily(tableName, columnFamily);
}
@Override @Override
public void addColumnFamily(final TableName tableName, final ColumnFamilyDescriptor columnFamily) public void addColumnFamily(final TableName tableName, final ColumnFamilyDescriptor columnFamily)
throws IOException { throws IOException {
@ -1092,18 +1080,6 @@ public class HBaseAdmin implements Admin {
} }
} }
/**
* {@inheritDoc}
* @deprecated As of 2.0. Will be removed in 3.0. Use
* {@link #modifyColumnFamily(TableName, ColumnFamilyDescriptor)} instead.
*/
@Override
@Deprecated
public void modifyColumn(final TableName tableName, final HColumnDescriptor columnFamily)
throws IOException {
modifyColumnFamily(tableName, columnFamily);
}
@Override @Override
public void modifyColumnFamily(final TableName tableName, public void modifyColumnFamily(final TableName tableName,
final ColumnFamilyDescriptor columnFamily) throws IOException { final ColumnFamilyDescriptor columnFamily) throws IOException {
@ -1872,29 +1848,19 @@ public class HBaseAdmin implements Admin {
} }
@Override @Override
public void modifyTable(final TableName tableName, final HTableDescriptor htd) public void modifyTable(final TableName tableName, final TableDescriptor td)
throws IOException { throws IOException {
get(modifyTableAsync(tableName, htd), syncWaitTimeout, TimeUnit.MILLISECONDS); get(modifyTableAsync(tableName, td), syncWaitTimeout, TimeUnit.MILLISECONDS);
} }
@Override @Override
public Future<Void> modifyTableAsync(final TableName tableName, final HTableDescriptor htd) public Future<Void> modifyTableAsync(final TableName tableName, final TableDescriptor td)
throws IOException { throws IOException {
if (!tableName.equals(htd.getTableName())) { if (!tableName.equals(td.getTableName())) {
throw new IllegalArgumentException("the specified table name '" + tableName + throw new IllegalArgumentException("the specified table name '" + tableName +
"' doesn't match with the HTD one: " + htd.getTableName()); "' doesn't match with the HTD one: " + td.getTableName());
} }
ModifyTableResponse response = executeCallable( return modifyTableAsync(td);
new MasterCallable<ModifyTableResponse>(getConnection(), getRpcControllerFactory()) {
@Override
protected ModifyTableResponse rpcCall() throws Exception {
setPriority(tableName);
ModifyTableRequest request = RequestConverter.buildModifyTableRequest(
tableName, htd, ng.getNonceGroup(), ng.newNonce());
return master.modifyTable(getRpcController(), request);
}
});
return new ModifyTableFuture(this, tableName, response);
} }
private static class ModifyTableFuture extends TableFuture<Void> { private static class ModifyTableFuture extends TableFuture<Void> {

View File

@ -243,12 +243,8 @@ public class HTable implements Table {
@Override @Override
public TableDescriptor getDescriptor() throws IOException { public TableDescriptor getDescriptor() throws IOException {
HTableDescriptor htd = HBaseAdmin.getHTableDescriptor(tableName, connection, rpcCallerFactory, return HBaseAdmin.getTableDescriptor(tableName, connection, rpcCallerFactory,
rpcControllerFactory, operationTimeout, readRpcTimeout); rpcControllerFactory, operationTimeout, readRpcTimeout);
if (htd != null) {
return new ImmutableHTableDescriptor(htd);
}
return null;
} }
/** /**

View File

@ -438,7 +438,7 @@ public final class SnapshotInfo extends AbstractHBaseTool {
} }
/** /**
* Dump the {@link org.apache.hadoop.hbase.HTableDescriptor} * Dump the {@link org.apache.hadoop.hbase.client.TableDescriptor}
*/ */
private void printSchema() { private void printSchema() {
System.out.println("Table Descriptor"); System.out.println("Table Descriptor");