Replica de HBase a Bigtable

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

Casos de uso

  • Migración en línea a Bigtable: Puedes usar la biblioteca de replicación de HBase de Bigtable, junto con una migración sin conexión de tus datos de HBase existentes, para migrar de HBase a Bigtable casi sin tiempo de inactividad.
  • Recuperación de datos: Prepárate para lo inesperado mediante la replicación de tus datos de HBase en una instancia de Bigtable fuera de las instalaciones.
  • Centralización de conjuntos de datos: Usa la biblioteca para replicar datos de clústeres de HBase en varias ubicaciones a una sola instancia de Bigtable que maneja la replicación entre sus clústeres de forma automática.
  • Extensión de tu huella de HBase: Replica a una instancia de Bigtable que tenga clústeres en ubicaciones más allá de tus ubicaciones actuales de HBase.

Descripción general

La biblioteca de replicación de HBase de Bigtable extiende el servicio base de replicación de HBase. Los datos que se escriben en un clúster de HBase se replican de forma asíncrona a una instancia de Bigtable de la misma manera que la replicación estándar de HBase copia los datos en otro clúster de HBase. La biblioteca usa el registro de escritura por adelantado (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. En otras palabras, la replicación de HBase está habilitada a nivel de clúster, tabla o familia de columnas.

La replicación de HBase a Bigtable tiene coherencia eventual.

imagen

Migra a Bigtable

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

A grandes rasgos, los pasos para la migración en línea de HBase a Bigtable son los siguientes. Consulta la README para obtener más información.

  1. Antes de comenzar, sigue los pasos de preparación y configuración.
  2. Habilita la replicación en tu clúster de HBase.
  3. Agrega un extremo de replicación de Bigtable como un par.
  4. Inhabilitar el par de Bigtable. Esto hace que las escrituras a HBase desde ese punto se almacenen en búfer en el clúster de HBase.
  5. Una vez que el búfer comience a capturar escrituras nuevas, sigue la guía de migración sin conexión para migrar una instantánea de tus datos de HBase existentes.
  6. Cuando se complete la migración sin conexión, vuelve a habilitar el par de Bigtable para permitir que el búfer se vacíe y vuelva a realizar escrituras en Bigtable.
  7. Una vez que el búfer se vacíe, reinicia tu aplicación para enviar solicitudes a Bigtable.

Configura la biblioteca de replicación

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

Configura la autenticación

A fin de garantizar que la biblioteca de replicación tenga permiso para escribir en Bigtable, sigue los pasos que se indican Crea una cuenta de servicio. Asigna el rol roles/bigtable.user a la cuenta de servicio recién creada.

A continuación, agrega lo siguiente al 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>

Reemplaza JSON_FILE_PATH por la ruta de acceso al archivo JSON que descargaste.

Para obtener propiedades adicionales que puedas establecer, consulta HBaseToCloudBigtableReplicationConfiguration.

Crea una instancia de destino y tablas

Antes de que puedas replicar de HBase a Bigtable, crea una instancia de Bigtable. Una instancia de Bigtable puede tener un clúster o varios clústeres que operan con varias instancias principales. Las solicitudes del servicio de replicación de HBase se enrutan al clúster más cercano en la instancia de Bigtable y, luego, se replican en los otros clústeres de la instancia.

Tu tabla de destino de Bigtable debe tener el mismo nombre y las mismas familias de columnas que tu tabla de HBase. Si deseas obtener instrucciones paso a paso para usar la herramienta de traducción de esquemas de Bigtable a fin de crear una tabla con el mismo esquema que tu tabla de HBase, consulta Crea tablas de destino. Si bien estás replicando los datos en lugar de importarlos, los pasos son los mismos.

Establece las propiedades de configuración

Agrega 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>

Reemplaza lo siguiente:

  • PROJECT_ID: El proyecto de Google Cloud en el que se encuentra tu instancia de Bigtable.
  • INSTANCE_ID: El ID de la instancia de Bigtable a la que replicas los datos.
  • APP_PROFILE_ID: El ID del perfil de la app que se usará para conectarse a Bigtable.

Instala 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).

Descarga el archivo JAR

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

wget BIGTABLE_HBASE_REPLICATION_URL

Reemplaza BIGTABLE_HBASE_REPLICATION_URL por la URL del último JAR con dependencias disponibles en el repositorio de 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 de forma manual, haz lo siguiente.

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

Instala el JAR

Copia el archivo en cada servidor de HBase, incluidos los servidores principales y regionales. que acabas de descargar en una carpeta de la ruta de clase de HBase. Por ejemplo: puedes copiar el archivo en /usr/lib/hbase/lib/.

Agregar un par de Bigtable

Para replicar de HBase a Bigtable, debes agregar un extremo de Bigtable como un par de replicación.

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

Reemplaza lo siguiente:

  • PEER_ID_NUMBER: Un ID de número entero para el par de replicación de Bigtable. Para habilitar la replicación de HBase solo de tablas seleccionadas, usa un parámetro opcional add_peer.

  • HBASE_VERSION_NUMBER: El número de la versión de HBase que usas. Usa 1 para HBase 1.x y 2 para HBase 2.x. (HBase 3.x no es compatible).

¿Qué sigue?