HBase ArchiTecnología: casos de uso, componentes y modelo de datos

⚡ Resumen inteligente

La arquitectura de HBase se compone de cuatro componentes coordinados —HMaster, servidores de región, ZooKeeper y HDFS— que almacenan datos en un modelo orientado a columnas, los dividen en regiones y permiten lecturas y escrituras aleatorias de baja latencia.

  • 🧭 Maestro: Asigna regiones a los servidores regionales, gestiona el equilibrio de carga y la conmutación por error, y administra los cambios de esquema y metadatos.
  • 🗄️ Servidores regionales: Atender automáticamente las solicitudes de lectura y escritura de los clientes, alojar regiones y dividir regiones a medida que aumentan los datos.
  • 🧱 Regiones y tiendas: Cada región mantiene un almacén por familia de columnas, creado a partir de un MemStore en memoria y HFiles en disco.
  • 🔗 Cuidador de animales: Coordina el clúster, tracks fallas del servidor y mantiene la configuración de quórum que los clientes usan para conectarse.
  • 🧮 Modelo de datos: Las tablas agrupan familias de columnas y filas, y una clave de fila actúa como clave principal para cada acceso.
  • HBase frente a HDFS: HBase añade lecturas y escrituras aleatorias de baja latencia sobre el almacenamiento por lotes de HDFS.

Arquitectura de HBase con sus componentes, modelo de datos y flujo de lectura y escritura de datos.

Apache HBase es una base de datos NoSQL distribuida y orientada a columnas que se ejecuta sobre Hadoop y el Sistema de Archivos Distribuidos de Hadoop (HDFS). Su arquitectura combina un maestro coordinador, servidores de región y ZooKeeper para almacenar tablas muy grandes y permitir lecturas y escrituras aleatorias rápidas.

HBase Architectura y sus componentes importantes

La arquitectura de HBase tiene los siguientes componentes principales:

  • Maestro
  • HRegiónServidor
  • HRegiones
  • guardián del zoológico
  • HDFS

A continuación se muestra la arquitectura detallada de HBase con sus componentes, tal como se muestra en el diagrama.

Diagrama de arquitectura de HBase que muestra HMaster, servidores de región, ZooKeeper y HDFS.

Maestro

HMaster en HBase es la implementación de un servidor maestro en la arquitectura de HBase. Actúa como agente de monitorización para supervisar todas las instancias de Region Server presentes en el clúster y como interfaz para todos los cambios de metadatos. En un entorno de clúster distribuido, el maestro se ejecuta en el NameNode. El maestro ejecuta varios hilos en segundo plano.

A continuación se describen las funciones importantes que desempeña HMaster en HBase:

  • Desempeña un papel vital en términos de rendimiento y mantenimiento de los nodos del clúster.
  • HMaster proporciona rendimiento administrativo y distribuye servicios a servidores de diferentes regiones.
  • HMaster asigna regiones a servidores de regiones.
  • HMaster controla el equilibrio de carga y la conmutación por error para gestionar la carga en los nodos presentes en el clúster.
  • Cuando un cliente desea modificar algún esquema o realizar alguna operación de metadatos, HMaster se responsabiliza de dichas operaciones.

Algunos de los métodos expuestos por la interfaz HMaster son principalmente métodos orientados a metadatos:

  • Tabla (crearTabla, eliminarTabla, habilitar, deshabilitar)
  • ColumnFamily (agregar columna, modificar columna)
  • Región (mover, asignar)

El cliente se comunica de forma bidireccional con HMaster y ZooKeeper. Para las operaciones de lectura y escritura, contacta directamente con los servidores HRegion. HMaster asigna regiones a los servidores de región y, a su vez, verifica el estado de salud de estos últimos.

En toda la arquitectura, contamos con varios servidores de región. En los servidores de región hay un HLog que almacena todos los archivos de registro.

Servidores de región HBase

Cuando un servidor de región de HBase recibe solicitudes de lectura y escritura del cliente, las asigna a una región específica donde reside la familia de columnas. El cliente puede contactar directamente con los servidores HRegion; no se requiere ningún permiso HMaster para comunicarse con ellos. El cliente solo necesita la ayuda de HMaster cuando se requieren operaciones relacionadas con cambios de metadatos y esquemas.

HRegionServer es la implementación del servidor de regiones. Se encarga de gestionar las regiones, es decir, los datos presentes en un clúster distribuido. Los servidores de regiones se ejecutan en los nodos de datos del clúster Hadoop.

HMaster puede ponerse en contacto con varios servidores HRegion y realiza las siguientes funciones:

  • Alojamiento y gestión de regiones
  • Dividir regiones automáticamente
  • Gestión de solicitudes de lectura y escritura
  • Comunicarse con el cliente directamente.

Regiones HBase

Las regiones H son los elementos básicos de un clúster HBase. Consisten en la distribución de tablas y están compuestas por familias de columnas. Una región contiene varios almacenes, uno para cada familia de columnas. Se compone principalmente de dos elementos: el MemStore y el HFile.

guardián del zoológico

HBase guardián del zoológico ZooKeeper es un servidor de monitorización centralizado que mantiene la información de configuración y proporciona sincronización distribuida. La sincronización distribuida coordina las aplicaciones distribuidas que se ejecutan en el clúster, ofreciendo servicios de coordinación entre los nodos. Si el cliente desea comunicarse con las regiones, primero debe acceder a ZooKeeper.

Es un proyecto de código abierto y proporciona muchos servicios importantes.

Servicios prestados por ZooKeeper:

  • Mantiene la información de configuración
  • Proporciona sincronización distribuida
  • Establece comunicación entre el cliente y los servidores regionales.
  • Proporciona nodos efímeros que representan diferentes servidores de región.
  • Permite que el servidor maestro utilice estos nodos efímeros para descubrir los servidores disponibles en el clúster.
  • TracFallo del servidor ks y particiones de red

Los nodos maestro y esclavo de HBase (servidores de región) se registran en ZooKeeper. El cliente necesita acceso a la configuración de quórum de ZooKeeper (ZK) para conectarse con los servidores maestro y de región.

En caso de fallo de los nodos presentes en el clúster de HBase, el quórum de ZooKeeper activa mensajes de error y comienza a reparar los nodos que han fallado.

HDFS

HDFS es el sistema de archivos distribuido de Hadoop. Sistema de archivosComo su nombre indica, proporciona un entorno distribuido para el almacenamiento y es un sistema de archivos diseñado para ejecutarse en hardware estándar. Almacena cada archivo en múltiples bloques y, para garantizar la tolerancia a fallos, estos bloques se replican en un clúster Hadoop.

HDFS ofrece un alto grado de tolerancia a fallos y funciona con hardware estándar económico. Al añadir nodos al clúster y realizar el procesamiento y el almacenamiento con hardware estándar económico, se obtienen mejores resultados para el cliente en comparación con la configuración actual.

En este sistema, los datos almacenados en cada bloque se replican en 3 nodos, por lo que si alguno falla, no habrá pérdida de datos; cuenta con un mecanismo adecuado de copia de seguridad y recuperación.

HDFS se comunica con los componentes de HBase y almacena una gran cantidad de datos de forma distribuida.

Modelo de datos HBase

El modelo de datos de HBase es un conjunto de componentes que incluye tablas, filas, familias de columnas, celdas, columnas y versiones. Las tablas de HBase contienen familias de columnas y filas, con elementos definidos como claves primarias. Una columna en la tabla del modelo de datos de HBase representa un atributo de los objetos.

El modelo de datos de HBase consta de los siguientes elementos:

  • conjunto de mesas
  • Cada tabla con familias de columnas y filas.
  • Cada tabla debe tener un elemento definido como clave primaria.
  • La clave de fila actúa como clave primaria en HBase.
  • Cualquier acceso a las tablas de HBase utiliza esta clave primaria.
  • Cada columna presente en HBase denota un atributo que corresponde a un objeto.

Casos de uso de HBase

A continuación se presentan ejemplos de casos de uso de HBase con una explicación detallada de la solución que HBase proporciona a diversos problemas técnicos.

Planteamiento del problema Solución
La industria de las telecomunicaciones se enfrenta a los siguientes retos técnicos: almacenar miles de millones de registros de detalles de llamadas (CDR, por sus siglas en inglés) generados por el sector; proporcionar acceso en tiempo real a los registros CDR y a la información de facturación de los clientes; y ofrecer una solución rentable en comparación con los sistemas de bases de datos tradicionales. HBase se utiliza para almacenar miles de millones de filas de registros de llamadas detallados. Si se agregan 20 TB de datos por mes a la base de datos RDBMS existente, el rendimiento se deteriorará. Para manejar una gran cantidad de datos en este caso de uso, HBase es la mejor solución. HBase realiza consultas rápidas y muestra registros.
El sector bancario genera millones de registros diariamente. Además, necesita una solución analítica que permita detectar el fraude en las transacciones monetarias. Para almacenar, procesar y actualizar grandes volúmenes de datos y realizar análisis, una solución ideal es HBase integrado con varios componentes del ecosistema Hadoop.

Además de eso, se puede utilizar HBase:

  • Siempre que se necesiten aplicaciones con mucha escritura.
  • Para realizar análisis de registros en línea y generar informes de cumplimiento.

Mecanismo de almacenamiento en HBase

HBase es una base de datos orientada a columnas, y los datos se almacenan en tablas. Las tablas se ordenan por RowId. Como se muestra a continuación, HBase tiene un RowId, que es la colección de varias familias de columnas presentes en la tabla.

Las familias de columnas presentes en el esquema son pares clave-valor. Si observamos con detalle, cada familia de columnas tiene varias columnas. Los valores de las columnas se almacenan en la memoria del disco. Cada celda de la tabla tiene sus propios metadatos, como una marca de tiempo y otra información.

A continuación se muestra la disposición de almacenamiento orientada a columnas, con claves de fila, familias de columnas y celdas.

Mecanismo de almacenamiento de HBase que muestra la clave de fila, las familias de columnas, las columnas y las celdas.

Los siguientes son los términos clave que representan un esquema de tabla de HBase:

  • Tabla: Colección de filas presentes.
  • Fila: Colección de familias de columnas.
  • Familia de columnas: Colección de columnas.
  • Columna: Colección de pares clave-valor.
  • Espacio de nombres: Grupo lógicoping de mesas.
  • Celda: Una tupla {fila, columna, versión} que especifica con exactitud la definición de una celda en HBase.

Almacenamiento orientado a columnas versus almacenamiento orientado a filas

Los sistemas de almacenamiento orientados a columnas y a filas difieren en su mecanismo de almacenamiento. Como es sabido, los modelos relacionales tradicionales almacenan los datos en formato de filas, es decir, en filas de datos. Los sistemas de almacenamiento orientados a columnas almacenan las tablas de datos en términos de columnas y familias de columnas.

La siguiente tabla muestra algunas diferencias clave entre estos dos sistemas de almacenamiento.

Base de datos orientada a columnas Base de datos orientada a filas
Se utiliza cuando la situación implica procesamiento y análisis, como el procesamiento analítico en línea y sus aplicaciones. El procesamiento de transacciones en línea, como en los ámbitos bancario y financiero, utiliza este enfoque.
La cantidad de datos que se pueden almacenar en este modelo es muy grande, en términos de petabytes. Está diseñado para una pequeña cantidad de filas y columnas.

Explicación de lectura y escritura de datos de HBase

Las operaciones de lectura y escritura desde el cliente hacia el archivo HFile se muestran en el siguiente diagrama.

Flujo de datos de lectura y escritura de HBase entre el cliente, el servidor de región, MemStore y HFile.

Paso 1) El cliente quiere escribir datos y, a su vez, primero se comunica con el servidor de región y luego con las regiones.

Paso 2) La región se comunica con MemStore para almacenar los datos asociados con la familia de columnas.

Paso 3) Primero, los datos se almacenan en MemStore, donde se ordenan, y luego se transfieren a HFile. La principal razón para usar MemStore es almacenar datos en un sistema de archivos distribuido basado en la clave de fila. MemStore se ubica en la memoria principal del servidor de región, mientras que los archivos HFile se escriben en HDFS.

Paso 4) El cliente quiere leer datos de las regiones.

Paso 5) A su vez, el cliente puede tener acceso directo al MemStore y solicitar datos.

Paso 6) El cliente accede a HFiles para obtener los datos. El cliente obtiene y recupera los datos.

El MemStore almacena las modificaciones realizadas en memoria al almacén. La jerarquía de objetos en las regiones de HBase, de arriba a abajo, se muestra en la tabla siguiente.

Tabla Tabla HBase presente en el clúster HBase
Región H Regiones para las tablas presentadas
Tienda Almacena uno por familia de columnas para cada región de la tabla.
TiendaMem MemStore para cada almacenamiento en cada región de la tabla. Ordena los datos antes de volcarlos en HFiles. El rendimiento de lectura y escritura aumenta gracias a la ordenación.
almacenar archivo StoreFiles para cada tienda para cada región de la tabla
Bloquear Bloques presentes dentro de StoreFiles

HBase frente a HDFS

HBase se ejecuta sobre HDFS y Hadoop. Algunas diferencias clave entre HDFS y HBase radican en las operaciones y el procesamiento de datos.

HBase HDFS
Operaciones de baja latencia Operaciones de alta latencia
Lecturas y escrituras aleatorias Escribe una vez, lee muchas veces.
Accedido a través de comandos de shell, una API de cliente en Java, REST, Avro o Thrift Se accede principalmente a través de MapReduce (MR) empleos
Se pueden realizar tanto el almacenamiento como el procesamiento. Es solo para áreas de almacenamiento

Algunas aplicaciones industriales de TI típicas utilizan operaciones de HBase junto con Hadoop. Las aplicaciones incluyen operaciones con datos de bolsa de valores y datos de banca en línea, donde HBase es la solución más adecuada. Una vez que su clúster esté listo, podrá leer y escribir datos en HBase or Instalar HBase en un nodo nuevo.

Preguntas Frecuentes

Sí. HBase es una base de datos NoSQL distribuida y orientada a columnas modelada en Google Bigtable se basa en HDFS. Almacena datos dispersos en tablas de familias de columnas y no utiliza esquemas fijos ni uniones SQL como una base de datos relacional.

El registro WAL, también llamado HLog, registra cada escritura en el servidor de región antes de que ingrese al MemStore. Se almacena en HDFS, por lo que si un servidor de región falla antes de que se complete el vaciado, HBase reproduce el registro WAL para recuperar las ediciones no guardadas.

La compactación fusiona los archivos HFile para mantener la velocidad de lectura. La compactación menor combina varios archivos HFile pequeños y adyacentes en uno solo. La compactación mayor reescribe todos los archivos HFile de una familia de columnas en un único archivo y elimina físicamente las celdas borradas y caducadas.

Ambos son almacenes NoSQL inspirados en Bigtable, pero HBase se ejecuta en HDFS con un único HMaster activo y una fuerte consistencia, mientras que Cassandra es sin maestro con replicación ajustable y eventualmente consistente. HBase es adecuado para el análisis de Hadoop; Cassandra Trajes que siempre están conectados escriben.

Diseñe las claves de fila de manera que las lecturas y escrituras se distribuyan uniformemente entre las regiones. Evite las claves que aumentan monótonamente, ya que crean puntos críticos en un servidor de región. Utilice el uso de salting, hash o inversión de campos, y mantenga las claves cortas, ya que se repiten en cada celda.

Una región se divide automáticamente cuando su almacenamiento supera un umbral de tamaño configurado. El servidor de regiones la divide en dos regiones secundarias en la clave de fila central, y HMaster puede reasignar una de ellas a otro servidor para equilibrar la carga.

Las herramientas de IA y aprendizaje automático analizan los patrones de consulta y acceso para sugerir diseños de claves de fila y familias de columnas que eviten puntos críticos. También examinan las métricas y los registros del servidor de regiones para detectar anomalías, como regiones desequilibradas o nodos con fallos, de forma temprana.

Sí. Copiloto de GitHub borradores HBase Java Código del cliente, comandos de shell y filtros de escaneo a partir de un breve comentario. RevRevise su salida para verificar que los nombres de las tablas, las familias de columnas y las clases de API, como Connection y Table, sean correctos antes de ejecutarlo en un clúster real.

Resumir este post con: