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

Introducción a las instantáneas de Apache HBase

La versión actual (4.2) de CDH, la distribución 100 % de código abierto de Cloudera de Apache Hadoop y proyectos relacionados (incluido Apache HBase), introdujo una nueva función de HBase, recientemente incluida en el troncal, que permite a un administrador tomar una instantánea de un determinado mesa.

Antes de CDH 4.2, la única forma de hacer una copia de seguridad o clonar una tabla era usar Copiar/Exportar tabla o, después de deshabilitar la tabla, copiar todos los archivos h en HDFS. Copiar/Exportar tabla es un conjunto de herramientas que utiliza MapReduce para escanear y copiar la tabla, pero con un impacto directo en el rendimiento del servidor de región. Deshabilitar la tabla detiene todas las lecturas y escrituras, lo que casi siempre será inaceptable.

Por el contrario, las instantáneas de HBase permiten que un administrador clone una tabla sin copias de datos y con un impacto mínimo en los servidores regionales. La exportación de la instantánea a otro clúster no afecta directamente a ninguno de los servidores de la región; export es solo un distcp con un poco más de lógica.

Estos son algunos de los casos de uso de las instantáneas de HBase:

  • Recuperación de errores de usuario/aplicación
    • Restaurar/Recuperar desde un estado seguro conocido.
    • Vea instantáneas anteriores y fusione selectivamente la diferencia en producción.
    • Guarde una instantánea justo antes de una actualización o cambio importante de la aplicación.
  • Auditoría y/o informes sobre vistas de datos en un momento específico
    • Capture datos mensuales con fines de cumplimiento.
    • Ejecutar informes de fin de día/mes/trimestre.
  • Pruebas de aplicaciones
    • Pruebe los cambios en el esquema o la aplicación en datos similares a los de producción a partir de una instantánea y luego deséchelos. Por ejemplo:tome una instantánea, cree una nueva tabla a partir del contenido de la instantánea (esquema más datos) y manipule la nueva tabla cambiando el esquema, agregando y eliminando filas, etc. (La tabla original, la instantánea y la nueva tabla siguen siendo independientes entre sí).
  • Descarga de trabajo
    • Tome una instantánea, expórtela a otro clúster y ejecute sus trabajos de MapReduce. Dado que la instantánea de exportación funciona a nivel de HDFS, no ralentiza su clúster HBase principal tanto como lo hace CopyTable.

¿Qué es una instantánea?

Una instantánea es un conjunto de información de metadatos que permite a un administrador volver al estado anterior de la tabla. Una instantánea no es una copia de la tabla; es solo una lista de nombres de archivos y no copia los datos. Una restauración de instantánea completa significa que vuelve al "esquema de tabla" anterior y recupera sus datos anteriores, perdiendo los cambios realizados desde que se tomó la instantánea.

Operaciones

  • Tomar una instantánea: esta operación intenta tomar una instantánea en una tabla específica. La operación puede fallar si las regiones se mueven durante el equilibrio, la división o la fusión.
  • Clonar una instantánea:esta operación crea una nueva tabla con el mismo esquema y con los mismos datos presentes en la instantánea especificada. El resultado de esta operación es una nueva tabla completamente funcional que se puede modificar sin afectar la tabla original o la instantánea.
  • Restaurar una instantánea:esta operación devuelve el esquema de la tabla y los datos al estado de la instantánea. (Nota:esta operación descarta cualquier cambio realizado desde que se tomó la instantánea).
  • Eliminar una instantánea: esta operación elimina una instantánea del sistema, liberando espacio en disco no compartido, sin afectar a los clones ni a otras instantáneas.
  • Exportar una instantánea:esta operación copia los datos y metadatos de la instantánea en otro clúster. La operación solo involucra HDFS, por lo que no hay comunicación con los servidores maestro o regional y, por lo tanto, el clúster HBase puede estar inactivo.

Instantánea de copia cero, restauración, clonación

La principal diferencia entre una instantánea y una CopyTable/ExportTable es que las operaciones de instantáneas solo escriben metadatos. No hay copias de datos masivas involucradas.

Uno de los principales principios de diseño de HBase es que una vez que se escribe un archivo, nunca se modificará. Tener archivos inmutables significa que una instantánea solo realiza un seguimiento de los archivos utilizados en el momento de la operación de la instantánea, y durante una compactación, es responsabilidad de la instantánea informar al sistema que el archivo no debe eliminarse, sino que debe archivarse.

El mismo principio se aplica a una operación de Clonar o Restaurar. Dado que los archivos son inmutables, se crea una nueva tabla con solo "enlaces" a los archivos a los que hace referencia la instantánea.

Exportar instantánea es la única operación que requiere una copia de los datos, ya que el otro clúster no tiene los archivos de datos.

Exportar instantánea frente a copiar/exportar tabla

Además de las mejores garantías de consistencia que puede proporcionar una instantánea en comparación con un trabajo de copia/exportación, la principal diferencia entre exportar una instantánea y copiar/exportar una tabla es que ExportSnapshot opera a nivel de HDFS. Esto significa que los Servidores Maestro y de Región no están involucrados en estas operaciones. En consecuencia, no se crean cachés de datos innecesarios y no se desencadenan pausas adicionales del GC debido a la cantidad de objetos creados durante el proceso de escaneo. El impacto en el rendimiento del clúster de HBase se deriva de la carga de trabajo de disco y red adicional que experimentan los DataNodes.

HBase Shell:operaciones de instantáneas

Confirme que la compatibilidad con instantáneas esté activada comprobando si hbase.snapshot.enabled propiedad en hbase-site.xml se establece en verdadero. Para tomar una instantánea de una tabla específica, utilice la snapshot dominio. (No se realizan copias de archivos)

hbase> snapshot ‘tableName’, ‘snapshotName’

Para enumerar todas las instantáneas, use el list_snapshot dominio. mostrará el nombre de la instantánea, la tabla de origen y la fecha y hora de creación.

hbase> list_snapshots
SNAPSHOT               TABLE + CREATION TIME
 TestSnapshot          TestTable (Mon Feb 25 21:13:49 +0000 2013)

Para eliminar una instantánea, use delete_snapshot dominio. La eliminación de una instantánea no afecta las tablas clonadas u otras instantáneas posteriores tomadas.

hbase> delete_snapshot 'snapshotName'

Para crear una nueva tabla a partir de una instantánea específica (clon), use clone_snapshot dominio. No se realizan copias de datos, por lo que no acaba utilizando el doble de espacio para los mismos datos.

hbase> clone_snapshot 'snapshotName', 'newTableName'

Para reemplazar el esquema/datos de la tabla actual con un contenido de instantánea específico, use el restore_snapshot  comando.

hbase> restore_snapshot 'snapshotName'

Para exportar una instantánea existente a otro clúster, use ExportSnapshot herramienta. La exportación no afecta la carga de trabajo de RegionServers, funciona en el nivel de HDFS y debe especificar una ubicación de HDFS (el hbase.rootdir del otro clúster).

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase

Limitaciones de corriente

Las instantáneas se basan en algunas suposiciones, y actualmente hay un par de herramientas que no están completamente integradas con la nueva función:

  • La combinación de regiones a las que hace referencia una instantánea provoca la pérdida de datos en la instantánea y en las tablas clonadas.
  • Restaurar una tabla con replicación activada para la tabla restaurada termina con los dos clústeres fuera de sincronización. La tabla no se restaura en la réplica.

Conclusión

Actualmente, la función de instantáneas incluye todas las funciones básicas requeridas, pero aún queda mucho trabajo por hacer, incluidas las métricas, la integración de la interfaz de usuario web, las optimizaciones del uso del disco y más.

Para obtener más información sobre cómo configurar HBase y usar instantáneas, revise la documentación.

Matteo Bertozzi es un ingeniero de software en el equipo de la plataforma y un confirmador de HBase.