Replicar de HBase a Bigtable

La biblioteca de réplica de HBase de Cloud Bigtable es un componente del cliente de HBase de Cloud Bigtable de código abierto para Java. La biblioteca de replicación te permite replicar de forma asíncrona datos de un clúster de HBase a una instancia de Bigtable mediante el servicio de replicación de HBase, de modo que puedes realizar una migración online de HBase a Bigtable. Para consultar el archivo README y el código fuente, visita el repositorio de GitHub.

Para migrar datos de HBase a Bigtable sin conexión, consulta el artículo Migrar datos de HBase a Bigtable sin conexión.

Casos prácticos

  • Migración online a Bigtable: puedes usar la biblioteca de replicación de HBase de Bigtable junto con una migración offline de tus datos de HBase para migrar de HBase a Bigtable con un tiempo de inactividad casi nulo.
  • Recuperación de datos: prepárate para lo inesperado replicando tus datos de HBase en una instancia de Bigtable externa.
  • Centralizar conjuntos de datos: usa la biblioteca para replicar datos de clústeres de HBase en varias ubicaciones en una sola instancia de Bigtable que gestione automáticamente la replicación entre sus clústeres.
  • Ampliar tu huella de HBase: replica los datos en una instancia de Bigtable que tenga clústeres en ubicaciones distintas a las de tu instancia de HBase.

Información general

La biblioteca de replicación de HBase de Bigtable amplía el servicio de replicación de HBase. Los datos que se escriben en un clúster de HBase se replican de forma asíncrona en una instancia de Bigtable de la misma forma que la replicación estándar de HBase copia los datos en otro clúster de HBase. La biblioteca usa el registro de escritura anticipada (WAL) del clúster de HBase de origen para enviar las mutaciones a la instancia de Bigtable.

Puedes replicar un clúster de HBase completo en Bigtable o replicar solo tablas o familias de columnas específicas. Es decir, la replicación de HBase se habilita a nivel de clúster, tabla o familia de columnas.

La replicación de HBase a Bigtable es coherente con el tiempo.

imagen

Migrar a Bigtable

La biblioteca de replicación de HBase de Bigtable te permite migrar a Bigtable sin pausar tu aplicación.

A grandes rasgos, estos son los pasos que debe seguir para migrar de HBase a Bigtable online. Consulta el archivo README para obtener más información.

  1. Antes de empezar, siga los pasos de configuración.
  2. Habilita la replicación en tu clúster de HBase.
  3. Añade un endpoint de replicación de Bigtable como peer.
  4. Inhabilita el peer de Bigtable. Esto hace que las escrituras en HBase a partir de ese momento se almacenen en el clúster de HBase.
  5. Una vez que el almacenamiento en búfer haya empezado a registrar las nuevas escrituras, sigue la guía de migración sin conexión para migrar una instantánea de tus datos de HBase.
  6. Cuando se haya completado la migración sin conexión, vuelve a habilitar el peer de Bigtable para que se vacíe el búfer y se vuelvan a reproducir las escrituras en Bigtable.
  7. Una vez que se haya vaciado el búfer, reinicia la aplicación para enviar solicitudes a Bigtable.

Configurar la biblioteca de replicación

Antes de poder usar la replicación de HBase de Bigtable, debes completar las tareas de esta sección.

Configurar la autenticación

Para asegurarte de que la biblioteca de replicación tiene permiso para escribir en Bigtable, sigue los pasos que se indican en Crear una cuenta de servicio. Asigna el rol roles/bigtable.user a la cuenta de servicio que acabas de crear.

A continuación, añade lo siguiente a tu archivo hbase-site.xml en todo el clúster de HBase.

<property>
    <name>google.bigtable.auth.json.keyfile</name>
    <value>JSON_FILE_PATH</value>
    <description>
        Service account JSON file to connect to Cloud Bigtable
    </description>
</property>

Sustituye JSON_FILE_PATH por la ruta al archivo JSON que has descargado.

Para ver las propiedades adicionales que puedes definir, consulta HBaseToCloudBigtableReplicationConfiguration.

Crear una instancia y tablas de destino

Antes de poder replicar de HBase a Bigtable, crea una instancia de Bigtable. Una instancia de Bigtable puede tener uno o varios clústeres que funcionen de forma multimaestra. Las solicitudes del servicio de replicación de HBase se dirigen al clúster más cercano de la instancia de Bigtable y, a continuación, se replican en los demás clústeres de la instancia.

La tabla de destino de Bigtable debe tener el mismo nombre y las mismas familias de columnas que la tabla de HBase. Para obtener instrucciones detalladas sobre cómo usar la herramienta de traducción de esquemas de Bigtable para crear una tabla con el mismo esquema que tu tabla de HBase, consulta Migrar datos de HBase a Bigtable sin conexión. Aunque estés replicando los datos en lugar de importarlos, los pasos son los mismos.

Definir las propiedades de configuración

Añade lo siguiente a tu hbase-site.xml en todo el clúster de HBase.

<property>
    <name>google.bigtable.project.id</name>
    <value>PROJECT_ID</value>
    <description>
      Bigtable project ID
    </description>
</property>
<property>
    <name>google.bigtable.instance.id</name>
    <value>INSTANCE_ID</value>
    <description>
       Bigtable instance ID
    </description>
</property>
<property>
    <name>google.bigtable.app_profile.id</name>
    <value>APP_PROFILE_ID</value>
    <description>
       Bigtable app profile ID
    </description>
</property>

Haz los cambios siguientes:

  • PROJECT_ID: el proyecto Google Cloud en el que se encuentra tu instancia de Bigtable.
  • INSTANCE_ID: el ID de la instancia de Bigtable en la que vas a replicar los datos.
  • APP_PROFILE_ID: ID del perfil de aplicación que se va a usar para conectarse a Bigtable.

Instalar la biblioteca de replicación

Para usar la biblioteca de replicación de HBase de Bigtable, debes instalarla en todos los servidores del clúster de HBase. Usa la versión de la biblioteca de replicación que corresponda a tu versión de HBase (1.x o 2.x).

Descargar el archivo JAR

Para obtener la biblioteca de replicación, ejecuta lo siguiente en el shell de HBase.

wget BIGTABLE_HBASE_REPLICATION_URL

Sustituye BIGTABLE_HBASE_REPLICATION_URL por la URL del archivo JAR más reciente con las dependencias disponibles en el repositorio Maven de la biblioteca de replicación. El nombre del archivo es similar a https://repo1.maven.org/maven2/com/google/cloud/bigtable/bigtable-hbase-1.x-replication/1.0.0/bigtable-hbase-1.x-replication-1.0.0-jar-with-dependencies.jar.

Para encontrar la URL o descargar el archivo JAR manualmente, siga estos pasos.

  1. Ve al repositorio de la biblioteca de replicación de la versión de HBase que estés usando.
  2. Haz clic en el número de la versión más reciente, como 1.0.0.
  3. Identifica el archivo jar-with-dependencies (normalmente, en la parte superior).
  4. Haz clic con el botón derecho y copia la URL, o haz clic para descargar el archivo.

Instalar el JAR

En todos los servidores de HBase, incluidos los servidores maestros y de regiones, copia el archivo que acabas de descargar en una carpeta de la ruta de clases de HBase. Por ejemplo, puedes copiar el archivo en /usr/lib/hbase/lib/.

Añadir un peer de Bigtable

Para replicar datos de HBase en Bigtable, debes añadir un endpoint de Bigtable como peer de replicación.

  1. Reinicia los servidores de HBase para asegurarte de que se carga la biblioteca de replicación.
  2. Ejecuta lo siguiente en el shell de HBase.
add_peer PEER_ID_NUMBER, ENDPOINT_CLASSNAME =>
'com.google.cloud.bigtable.hbaseHBASE_VERSION_NUMBER_x.replication.HbaseToCloudBigtableReplicationEndpoint`

Haz los cambios siguientes:

  • PEER_ID_NUMBER: ID entero de la réplica de Bigtable. Para habilitar la replicación de HBase solo en las tablas seleccionadas, usa el add_peer parámetro opcional.

  • HBASE_VERSION_NUMBER: el número de la versión de HBase que estás usando. Usa 1 para HBase 1.x y 2 para HBase 2.x. (HBase 3.x no es compatible).

Siguientes pasos