sql >> Base de Datos >  >> NoSQL >> HBase

Introducción a las instantáneas de Apache HBase, parte 2:análisis más profundo

En la Parte 1 de esta serie sobre las instantáneas de Apache HBase, aprendió a usar la nueva función de instantáneas y un poco de teoría detrás de la implementación. Ahora es el momento de profundizar un poco más en los detalles técnicos.

¿Qué es una tabla?

Una tabla HBase comprende un conjunto de información de metadatos y un conjunto de pares clave/valor:

  • Información de la tabla :un archivo de manifiesto que describe la "configuración" de la tabla, como familias de columnas, códecs de compresión y codificación, tipos de filtros de floración, etc.
  • Regiones :Las “particiones” de la tabla se denominan regiones. Cada región es responsable de manejar un conjunto contiguo de clave/valor, y están definidos por una clave de inicio y una clave de finalización.
  • WAL/MemStore :antes de escribir datos en el disco, las transferencias se escriben en el registro de escritura anticipada (WAL) y luego se almacenan en la memoria hasta que la presión de la memoria activa un vaciado en el disco. El WAL proporciona una manera fácil de recuperar los puestos que no se vaciaron en el disco en caso de falla.
  • Archivos H :en algún momento, todos los datos se descargan en el disco; un HFile es el formato HBase que contiene los valores/clave almacenados. HFiles son inmutables, pero se pueden eliminar al compactar o eliminar regiones.

(Nota:para obtener más información sobre la ruta de escritura de HBase, eche un vistazo a la entrada de blog de la ruta de escritura de HBase).

¿Qué es una instantánea?

Una instantánea es un conjunto de información de metadatos que permite al administrador volver a un estado anterior de la tabla en la que se encuentra. Una instantánea no es una copia de la tabla; la forma más sencilla de verlo es como un conjunto de operaciones para realizar un seguimiento de los metadatos (información de la tabla y regiones) y los datos (HFiles, memstore, WAL). No hay copias de los datos involucradas durante la operación de instantánea.

  • Instantáneas sin conexión :El caso más simple para tomar una instantánea es cuando una tabla está deshabilitada. Deshabilitar una tabla significa que todos los datos se vacían en el disco y no se aceptan escrituras ni lecturas. En este caso, tomar una instantánea es solo cuestión de revisar los metadatos de la tabla y los HFiles en el disco y mantener una referencia a ellos. El maestro realiza esta operación y el tiempo requerido está determinado principalmente por el tiempo requerido por el nodo de nombre HDFS para proporcionar la lista de archivos.
  • Instantáneas en línea :Sin embargo, en la mayoría de las situaciones, las tablas están habilitadas y cada servidor de región maneja las solicitudes de colocación y obtención. En este caso, el maestro recibe la solicitud de instantánea y le pide a cada servidor de región que tome una instantánea de las regiones de las que es responsable.

La comunicación entre el maestro y los servidores de la región se realiza a través de Apache ZooKeeper mediante una transacción similar a una confirmación de dos fases. El maestro crea un znode que significa "preparar la instantánea". Cada servidor de región procesará la solicitud y preparará la instantánea para las regiones de la tabla de la que es responsable. Una vez que terminan, agregan un subnodo al znode de solicitud de preparación con el significado "Terminé".

Una vez que todos los servidores de la región han informado sobre su estado, el maestro crea otro znode que significa "instantánea de confirmación"; cada servidor de región finalizará la instantánea e informará el estado antes de unirse al nodo. Una vez que todos los servidores de la región hayan informado, el maestro finalizará la instantánea y marcará la operación como completa. En caso de que un servidor de región informe una falla, el maestro creará un nuevo znode que se usará para transmitir el mensaje de cancelación.

Dado que el servidor de la región procesa continuamente nuevas solicitudes, los diferentes casos de uso pueden requerir diferentes modelos de consistencia. Por ejemplo, alguien puede estar interesado en una instantánea descuidada sin los nuevos datos en MemStore, alguien más puede querer una instantánea completamente consistente que requiera escrituras bloqueadas por un tiempo, y así sucesivamente.

Por esta razón, el procedimiento para tomar una instantánea en el servidor de la región se puede conectar. Actualmente, la única implementación presente es "Flush Snapshot", que realiza un vaciado antes de tomar una instantánea y garantiza solo la coherencia de las filas. Es posible que en el futuro se implementen otros procedimientos con políticas de consistencia diferentes.

En el caso en línea, el tiempo requerido para tomar una instantánea está limitado por el tiempo requerido por el servidor de la región más lento para realizar la operación de instantánea e informar el éxito al maestro. Esta operación suele ser del orden de unos pocos segundos.

Archivado

Como hemos visto antes, los HFiles son inmutables. Esto nos permite evitar copiar los datos durante las operaciones de instantánea o clonación, pero durante la compactación se eliminan y reemplazan por una versión compactada. En este caso, si tiene una instantánea o una tabla clonada que hace referencia a uno de esos archivos, en lugar de eliminarlos, se mueven a una ubicación de "archivo". Si elimina una instantánea y nadie más hace referencia a los archivos a los que hace referencia la instantánea, esos archivos se eliminarán.

Clonación y restauración de tablas

Las instantáneas se pueden ver como una solución de copia de seguridad en la que se pueden usar para restaurar/recuperar una tabla después de un error de usuario o aplicación, pero la función de instantánea puede permitir mucho más que una simple copia de seguridad y restauración. Después de clonar una tabla a partir de una instantánea, puede escribir un trabajo de MapReduce o una aplicación simple para fusionar selectivamente las diferencias, o lo que crea que es importante, en producción. Otro caso de uso es que puede probar los cambios de esquema o las actualizaciones de los datos sin tener que esperar horas para obtener una copia de la tabla y sin terminar con una gran cantidad de datos duplicados en el disco.

Clonar una tabla a partir de una instantánea

Cuando un administrador realiza una operación de clonación, se crea una nueva tabla con el esquema de tabla presente en la instantánea previamente dividida con las claves de inicio/fin en la información de las regiones de la instantánea. Una vez que se crean los metadatos de la tabla, en lugar de copiar los datos, se usa el mismo truco que con la instantánea. Como los HFiles son inmutables, solo se crea una referencia al archivo de origen; esto permite que la operación evite copias de datos y permite editar el clon sin afectar la tabla de origen o la instantánea. La operación de clonación la realiza el maestro.

Restaurar una tabla desde una instantánea

La operación de restauración es similar a la operación de clonación; puede considerarlo como eliminar la tabla y clonarla desde la instantánea. La operación de restauración recupera los datos antiguos presentes en la instantánea eliminando cualquier dato de la tabla que no esté también en la instantánea, y también el esquema de la tabla se revierte al de la instantánea. En el fondo, la restauración se implementa haciendo una diferencia entre el estado de la tabla y la instantánea, eliminando los archivos que no están presentes en la instantánea y agregando referencias a los que están en la instantánea pero que no están presentes en el estado actual. Además, el descriptor de la tabla se modifica para reflejar el "esquema" de la tabla en el momento de la instantánea. La operación de restauración la realiza el maestro y la tabla debe estar deshabilitada.

Futuros

Actualmente, la implementación de instantáneas incluye todas las funciones básicas requeridas. Como hemos visto, las nuevas políticas de coherencia de instantáneas para las instantáneas en línea pueden proporcionar más flexibilidad, coherencia o mejoras de rendimiento. Una mejor gestión de archivos puede reducir la carga en el nodo de nombre HDFS y mejorar la gestión del espacio en disco. Además, las métricas, la interfaz de usuario web (Hue) y más están en la lista de tareas pendientes.

Conclusión

Las instantáneas de HBase agregan una nueva funcionalidad, como la "coordinación de procedimientos" utilizada por la instantánea en línea, o la instantánea de copia en escritura, la restauración y los clones.

Las instantáneas proporcionan una alternativa mejor y más rápida a las soluciones de "copia de seguridad" y "clonación" hechas a mano basadas en distcp o CopyTable. Todas las operaciones de instantáneas (instantánea, restauración, clonación) no implican copias de datos, lo que da como resultado instantáneas más rápidas de la tabla y ahorro de espacio en disco.

Para obtener más información sobre cómo habilitar y usar instantáneas, consulte el documento de administración operativa de HBase.

Matteo Bertozzi es ingeniero de software en el equipo de la plataforma y responsable de confirmación de HBase.