Migrar desde versiones anteriores de HBase

El cliente de HBase de Cloud Bigtable para Java está orientado a las API de Apache HBase desde su versión 1.0 en adelante. La versión 1.0 de la API contenía algunos cambios considerables respecto a las versiones anteriores de HBase. Si migras a Cloud Bigtable desde HBase y tu aplicación se orienta a versiones más antiguas de la API de HBase, deberás actualizar tu aplicación a fin de que sea compatible con Cloud Bigtable.

Para ayudarte con la migración, en esta página, se resumen los cambios más destacados en la API de HBase 1.0.

Interfaz de conexión

Desde HBase 1.0 en adelante, en lugar de confiar en la interfaz obsoleta de HConnection, deberías usar org.apache.hadoop.hbase.client.ConnectionFactory. Esta clase crea objetos que implementan la interfaz Connection nueva. ConnectionFactory reemplaza las clases obsoletas ConnectionManager y HConnectionManager.

Crear un objeto Connection es una operación relativamente cara. Deberías crear un objeto Connection por proceso y compartirlo según sea necesario. Los objetos Connection tienen seguridad en los subprocesos.

Además, asegúrate de cerrar la conexión cuando termines de usarla. En HBase 1.0 y versiones posteriores, la aplicación tiene la responsabilidad de administrar el ciclo de vida de la conexión.

Tu código actualizado debería ser similar al siguiente ejemplo:

Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();

Clase TableName

En versiones anteriores de HBase, cuando manipulabas una tabla, podías especificar su nombre como un valor String o byte[]. Desde HBase 1.0 en adelante, para especificar el nombre de una tabla, debes crear una instancia de org.apache.hadoop.hbase.TableName:

String tableName = "MyTable";
    // or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);

Interfaces de tabla, BufferedMutator y RegionLocator

En HBase 1.0, la clase HTable se reemplaza con las siguientes interfaces:

Usa un objeto Connection para obtener una instancia de estas interfaces:

Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);

Las instancias de Table, BufferedMutator y RegionLocator no tienen seguridad en los subprocesos. Sin embargo, estos objetos son livianos, por lo que puedes crear todos los que necesites en el contexto de un solo subproceso.

Interfaz de administrador

En HBase 1.0, la clase HBaseAdmin se reemplaza con la interfaz org.apache.hadoop.hbase.client.Admin. Dado que Cloud Bigtable controla automáticamente las tareas de mantenimiento, muchos métodos de la interfaz Admin no se admiten. Si deseas obtener más detalles, consulta Diferencias entre las API de HBase y Cloud Bigtable.

Usa un objeto Connection para obtener una instancia de la interfaz Admin.

Admin admin = connection.getAdmin();
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Cloud Bigtable