Arquitectura HBase: modelo de datos HBase y mecanismo de lectura / escritura HBase



Este blog sobre la arquitectura HBase explica el modelo de datos HBase y ofrece información sobre la arquitectura HBase. También explica diferentes mecanismos en HBase.

Arquitectura HBase

En mi blog anterior sobre Tutorial de HBase , Expliqué qué es HBase y sus características. También mencioné el caso de estudio de Facebook Messenger para ayudarlo a conectarse mejor. Ahora avanzando más en nuestro , Te explicaré el modelo de datos de HBase y HBase Architecture.Antes de continuar, también debe saber que HBase es un concepto importante que constituye una parte integral del para la certificación Big Data Hadoop.

Los temas importantes que les llevaré en este blog de arquitectura de HBase son:





Primero entendamos el modelo de datos de HBase. Ayuda a HBase en búsquedas y lectura / escritura más rápidas.



Arquitectura HBase: Modelo de datos HBase

Como sabemos, HBase es una base de datos NoSQL orientada a columnas. Aunque parece similar a una base de datos relacional que contiene filas y columnas, no es una base de datos relacional. Las bases de datos relacionales están orientadas a filas, mientras que HBase está orientado a columnas. Entonces, primero comprendamos la diferencia entre las bases de datos orientadas a columnas y las orientadas a filas:

Bases de datos orientadas a filas vs orientadas a columnas:

  • Las bases de datos orientadas a filas almacenan registros de tablas en una secuencia de filas. Considerando que las bases de datos orientadas a columnasalmacenar registros de la tabla en una secuencia de columnas, es decir, las entradas en una columna se almacenan en ubicaciones contiguas en discos.

Para comprenderlo mejor, tomemos un ejemplo y consideremos la tabla siguiente.



Mesa - Arquitectura HBase - Edureka

Si esta tabla se almacena en una base de datos orientada a filas. Almacenará los registros como se muestra a continuación:

1,Paul Walker,NOS,231,Gallardo,

2, Vin Diesel,Brasil,520,Mustang

operador de resolución de alcance c ++

En las bases de datos orientadas a filas, los datos se almacenan sobre la base de filas o tuplas, como puede ver arriba.

Mientras que las bases de datos orientadas a columnas almacenan estos datos como:

1,2, Paul Walker,Vin Diesel, NOS,Brasil, 231,520, Gallardo,Mustang

En una base de datos orientada a columnas, todos los valores de columna se almacenan juntos como los valores de la primera columna se almacenarán juntos, luego los valores de la segunda columna se almacenarán juntos y los datos en otras columnas se almacenarán de manera similar.

  • Cuando la cantidad de datos es muy grande, como en términos de petabytes o exabytes, utilizamos un enfoque orientado a columnas, porque los datos de una sola columna se almacenan juntos y se puede acceder a ellos más rápido.
  • Si bien el enfoque orientado a filas maneja comparativamente menos número de filas y columnas de manera eficiente, la base de datos orientada a filas almacena datos en un formato estructurado.
  • Cuando necesitamos procesar y analizar un gran conjunto de datos semiestructurados o no estructurados, utilizamos un enfoque orientado a columnas. Como aplicaciones que tratan con Procesamiento analítico en línea como minería de datos, almacenamiento de datos, aplicaciones que incluyen análisis, etc.
  • Mientras, Procesamiento transaccional en línea como los dominios bancarios y financieros que manejan datos estructurados y requieren propiedades transaccionales (propiedades ACID) utilizan un enfoque orientado a filas.

Las tablas HBase tienen los siguientes componentes, que se muestran en la imagen siguiente:

  • Mesas : Los datos se almacenan en formato de tabla en HBase. Pero aquí las tablas están en formato orientado a columnas.
  • Fila Llave : Las teclas de fila se utilizan para buscar registros que agilizan las búsquedas. ¿Tendría curiosidad por saber cómo? Lo explicaré en la parte de arquitectura avanzando en este blog.
  • Columna Familias : Varias columnas se combinan en una familia de columnas. Estas familias de columnas se almacenan juntas, lo que acelera el proceso de búsqueda porque se puede acceder a los datos que pertenecen a la misma familia de columnas juntos en una única búsqueda.
  • Columna Calificadores : El nombre de cada columna se conoce como su calificador de columna.
  • Celda : Los datos se almacenan en celdas. Los datos se vuelcan en celdas que se identifican específicamente mediante calificadores de columna y clave de fila.
  • Marca de tiempo : La marca de tiempo es una combinación de fecha y hora. Siempre que se almacenan datos, se almacenan con su marca de tiempo. Esto facilita la búsqueda de una versión particular de los datos.

De una manera más simple y comprensiva, podemos decir que HBase consiste en:

  • Juego de mesas
  • Cada tabla con familias de columnas y filas
  • La clave de fila actúa como clave principal en HBase.
  • Cualquier acceso a las tablas de HBase utiliza esta clave principal
  • Cada calificador de columna presente en HBase denota el atributo correspondiente al objeto que reside en la celda.

Ahora que conoce el modelo de datos de HBase, veamos cómo este modelo de datos se ajusta a la arquitectura de HBase y lo hace adecuado para un gran almacenamiento y un procesamiento más rápido.

Arquitectura HBase: componentes de la arquitectura HBase

HBase tiene tres componentes principales, es decir, Servidor HMaster , Servidor de región HBase, regiones y Zookeeper .

La siguiente figura explica la jerarquía de la arquitectura HBase. Hablaremos de cada uno de ellos de forma individual.


Ahora, antes de pasar al HMaster, entenderemos las Regiones ya que todos estos Servidores (HMaster, Region Server, Zookeeper) están colocados para coordinar y administrar Regiones y realizar varias operaciones dentro de las Regiones. Entonces, ¿tendría curiosidad por saber qué son las regiones y por qué son tan importantes?

Arquitectura HBase: Región

Una región contiene todas las filas entre la tecla de inicio y la tecla final asignadas a esa región. Las tablas de HBase se pueden dividir en varias regiones de tal manera que todas las columnas de una familia de columnas se almacenan en una región. Cada región contiene las filas en un orden ordenado.

Muchas regiones están asignadas a Servidor de región , que es responsable de manejar, administrar, ejecutar operaciones de lectura y escritura en ese conjunto de regiones.

Entonces, concluyendo de una manera más simple:

  • Una tabla se puede dividir en varias regiones. Una región es un rango ordenado de filas que almacenan datos entre una clave de inicio y una clave de finalización.
  • Una región tiene un tamaño predeterminado de 256 MB que se puede configurar según las necesidades.
  • Un grupo de regiones es servido a los clientes por un servidor de región.
  • Un servidor de región puede servir aproximadamente 1000 regiones al cliente.

Ahora, comenzando desde la parte superior de la jerarquía, primero me gustaría explicarle sobre HMaster Server, que actúa de manera similar como un NameNode en HDFS . Luego, moviéndonos hacia abajo en la jerarquía, lo llevaré a través de ZooKeeper y Region Server.

Arquitectura HBase: HMaster

Como en la imagen de abajo, puede ver que HMaster maneja una colección de Region Server que reside en DataNode. Entendamos cómo HMaster hace eso.

marioneta vs chef vs jenkins
  • HBase HMaster realiza operaciones DDL (crear y eliminar tablas) y asigna regiones a los servidores de Región como puede ver en la imagen de arriba.
  • Coordina y administra el servidor de región (similar a como NameNode administra DataNode en HDFS).
  • Asigna regiones a los servidores de región en el inicio y reasigna regiones a los servidores de región durante la recuperación y el equilibrio de carga.
  • Supervisa todas las instancias del servidor de región en el clúster (con la ayuda de Zookeeper) y realiza actividades de recuperación cada vez que algún servidor de región está inactivo.
  • Proporciona una interfaz para crear, eliminar y actualizar tablas.

HBase tiene un entorno enorme y distribuido en el que HMaster por sí solo no es suficiente para gestionar todo. Entonces, ¿se preguntará qué ayuda a HMaster a administrar este enorme entorno? Ahí es donde ZooKeeper entra en escena. Una vez que entendamos cómo HMaster gestiona el entorno HBase, comprenderemos cómo Zookeeper ayuda a HMaster a gestionar el entorno.

Arquitectura HBase: ZooKeeper - El coordinador

Esta imagen de abajo explica el mecanismo de coordinación del ZooKeeper.

  • Zookeeper actúa como un coordinador dentro del entorno distribuido de HBase. Ayuda a mantener el estado del servidor dentro del clúster mediante la comunicación a través de sesiones.
  • Cada Region Server junto con HMaster Server envía latidos continuos a intervalos regulares a Zookeeper y verifica qué servidor está activo y disponible como se menciona en la imagen anterior. También proporciona notificaciones de fallas del servidor para que se puedan ejecutar las medidas de recuperación.
  • Refiriéndose a la imagen anterior que puede ver, hay un servidor inactivo, que actúa como respaldo para el servidor activo. Si el servidor activo falla, viene al rescate.
  • El HMaster activo envía latidos al Zookeeper mientras que el HMaster inactivo escucha la notificación enviada por el HMaster activo. Si el HMaster activo no envía un latido, la sesión se elimina y el HMaster inactivo se activa.
  • Mientras que si un servidor de región no puede enviar un latido, la sesión expira y todos los oyentes reciben una notificación al respecto. Luego, HMaster realiza las acciones de recuperación adecuadas que discutiremos más adelante en este blog.
  • Zookeeper también mantiene la ruta del servidor .META, que ayuda a cualquier cliente a buscar cualquier región. El Cliente primero tiene que verificar con .META Server en qué servidor de región pertenece una región, y obtiene la ruta de ese servidor de región.

Como hablé sobre el servidor .META, primero permítanme explicarles qué es el servidor .META. Por lo tanto, puede relacionar fácilmente el trabajo de ZooKeeper y .META Server juntos. Más adelante, cuando les explique el mecanismo de búsqueda de HBase en este blog, les explicaré cómo funcionan estos dos en colaboración.

Arquitectura HBase: Meta tabla

  • La mesa META es una mesa de catálogo especial de HBase. Mantiene una lista de todos los servidores de Regions en el sistema de almacenamiento HBase, como puede ver en la imagen de arriba.
  • Mirando la figura que puedes ver .META El archivo mantiene la tabla en forma de claves y valores. La clave representa la clave de inicio de la región y su id, mientras que el valor contiene la ruta del servidor de la región.

Como ya mencioné, el servidor de regiones y sus funciones mientras les explicaba las regiones, ahora nos estamos moviendo hacia abajo en la jerarquía y me enfocaré en el componente del servidor de regiones y sus funciones. Más adelante discutiré el mecanismo de búsqueda, lectura, escritura y comprenderé cómo todos estos componentes funcionan juntos.

Arquitectura HBase: Componentes de Region Server

La siguiente imagen muestra los componentes de un servidor de región. Ahora, los discutiré por separado.

Un servidor de región mantiene varias regiones ejecutándose en la parte superior de . Los componentes de un servidor de región son:

  • WAL: Como puede concluir en la imagen anterior, Write Ahead Log (WAL) es un archivo adjunto a cada servidor de región dentro del entorno distribuido. El WAL almacena los datos nuevos que no se han conservado o comprometido en el almacenamiento permanente. Se utiliza en caso de que no se recuperen los conjuntos de datos.
  • Caché de bloque: En la imagen de arriba, es claramente visible que Block Cache reside en la parte superior de Region Server. Almacena los datos leídos con frecuencia en la memoria. Si los datos en BlockCache se usaron menos recientemente, entonces esos datos se eliminan de BlockCache.
  • MemStore: Es el caché de escritura. Almacena todos los datos entrantes antes de guardarlos en el disco o en la memoria permanente. Hay un MemStore para cada familia de columnas de una región. Como puede ver en la imagen, hay varios MemStores para una región porque cada región contiene varias familias de columnas. Los datos se clasifican en orden lexicográfico antes de enviarlos al disco.
  • HFile: En la figura anterior, puede ver que HFile está almacenado en HDFS. Por tanto, almacena las células reales en el disco. MemStore envía los datos a HFile cuando excede el tamaño de MemStore.

Ahora que conocemos los componentes mayores y menores de la Arquitectura HBase, explicaré el mecanismo y su esfuerzo colaborativo en esto. Ya sea leyendo o escribiendo, primero debemos buscar desde dónde leer o dónde escribir un archivo. Entonces, entendamos este proceso de búsqueda, ya que este es uno de los mecanismos que hace que HBase sea muy popular.

Arquitectura HBase: ¿Cómo se inicializa la búsqueda en HBase?

Como sabe, Zookeeper almacena la ubicación de la mesa META. Siempre que un cliente se acerca con una lectura o escribe solicitudes a HBase, se produce la siguiente operación:

  1. El cliente recupera la ubicación de la tabla META del ZooKeeper.
  2. A continuación, el cliente solicita la ubicación del servidor de región de la clave de fila correspondiente de la tabla META para acceder a ella. El cliente almacena en caché esta información con la ubicación de la tabla META.
  3. Luego obtendrá la ubicación de la fila solicitándola al servidor de región correspondiente.

Para futuras referencias, el cliente usa su caché para recuperar la ubicación de la tabla META y leer previamente el servidor de región de clave de fila. Entonces, el cliente no se referirá a la tabla META, hasta y a menos que haya un error porque la región se haya cambiado o movido. Luego volverá a solicitar al servidor META y actualizará la caché.

Como siempre, los clientes no pierden tiempo en recuperar la ubicación de Region Server de META Server, por lo que esto ahorra tiempo y agiliza el proceso de búsqueda. Ahora, déjeme decirle cómo se escribe en HBase. ¿Cuáles son los componentes involucrados en él y cómo están involucrados?

Arquitectura HBase: Escritura de HBase Mecanismo

La siguiente imagen explica el mecanismo de escritura en HBase.

El mecanismo de escritura pasa por el siguiente proceso secuencialmente (consulte la imagen de arriba):

Paso 1: Siempre que el cliente tiene una solicitud de escritura, el cliente escribe los datos en el WAL (Write Ahead Log).

  • Las ediciones se adjuntan al final del archivo WAL.
  • Este archivo WAL se mantiene en cada servidor de región y el servidor de región lo usa para recuperar datos que no están comprometidos en el disco.

Paso 2: Una vez que los datos se escriben en WAL, se copian en MemStore.

Paso 3: Una vez que los datos se colocan en MemStore, el cliente recibe el reconocimiento.

Etapa 4: Cuando MemStore alcanza el umbral, vuelca o confirma los datos en un archivo HFile.

Ahora, profundicemos y entendamos cómo MemStore contribuye al proceso de escritura y cuáles son sus funciones.

Escritura de HBase Mecanismo- MemStore

  • MemStore siempre actualiza los datos almacenados en él, en un orden lexicográfico (secuencialmente en forma de diccionario) como KeyValues ​​ordenados. Hay un MemStore para cada familia de columnas y, por lo tanto, las actualizaciones se almacenan ordenadas para cada familia de columnas.
  • Cuando MemStore alcanza el umbral, vuelca todos los datos en un nuevo HFile de manera ordenada. Este HFile se almacena en HDFS. HBase contiene varios archivos H para cada familia de columnas.
  • Con el tiempo, la cantidad de archivos HFile aumenta a medida que MemStore vuelca los datos.
  • MemStore también guarda el último número de secuencia escrito, por lo que Master Server y MemStore saben qué está comprometido hasta ahora y dónde empezar. Cuando se inicia la región, se lee el último número de secuencia y, a partir de ese número, comienzan las nuevas ediciones.

Como mencioné varias veces, HFile es el principal almacenamiento persistente en una arquitectura HBase. Por fin, todos los datos se envían a HFile, que es el almacenamiento permanente de HBase. Por lo tanto, veamos las propiedades de HFile que lo hacen más rápido para buscar mientras lee y escribe.

Arquitectura HBase: Escritura de HBase Mecanismo- HFile

  • Las escrituras se colocan secuencialmente en el disco. Por tanto, el movimiento del cabezal de lectura y escritura del disco es muy inferior. Esto hace que el mecanismo de escritura y búsqueda sea muy rápido.
  • Los índices HFile se cargan en la memoria cada vez que se abre un HFile. Esto ayuda a encontrar un registro en una sola búsqueda.
  • El avance es un puntero que apunta al metabloque de HFile. Está escrito al final del archivo comprometido. Contiene información sobre la marca de tiempo y los filtros de floración.
  • Bloom Filter ayuda a buscar pares clave-valor, omite el archivo que no contiene la clave de fila requerida. La marca de tiempo también ayuda a buscar una versión del archivo, ayuda a omitir los datos.

Después de conocer el mecanismo de escritura y la función de varios componentes para acelerar la escritura y la búsqueda. ¿Les estaré explicando cómo funciona el mecanismo de lectura dentro de una arquitectura HBase? Luego pasaremos a los mecanismos que aumentan el rendimiento de HBase, como la compactación, la división de regiones y la recuperación.

Arquitectura HBase: Leer mecanismo

Como se discutió en nuestro mecanismo de búsqueda, primero el cliente recupera la ubicación del servidor de región de .META Server si el cliente no lo tiene en su memoria caché. Luego, sigue los pasos secuenciales de la siguiente manera:

  • Para leer los datos, el escáner primero busca la celda Fila en la caché de bloques. Aquí se almacenan todos los pares clave-valor leídos recientemente.
  • Si Scanner no encuentra el resultado requerido, se mueve al MemStore, ya que sabemos que esta es la memoria caché de escritura. Allí, busca los archivos escritos más recientemente, que aún no se han volcado en HFile.
  • Por último, utilizará filtros de floración y caché de bloques para cargar los datos de HFile.

Hasta ahora, he discutido el mecanismo de búsqueda, lectura y escritura de HBase. Ahora veremos el mecanismo HBase que hace que la búsqueda, lectura y escritura sean rápidas en HBase. Primero, entenderemos Compactación , que es uno de esos mecanismos.

Arquitectura HBase: Compactación

HBase combina HFiles para reducir el almacenamiento y reducir la cantidad de búsquedas de disco necesarias para una lectura. Este proceso se llama compactación . Compaction elige algunos archivos H de una región y los combina. Hay dos tipos de compactación como puedes ver en la imagen de arriba.

  1. Compactación menor : HBase selecciona automáticamente archivos H más pequeños y los vuelve a comprometer a archivos H más grandes, como se muestra en la imagen de arriba. Esto se llama compactación menor. Realiza una clasificación de combinación para enviar archivos H más pequeños a archivos H más grandes. Esto ayuda a optimizar el espacio de almacenamiento.
  2. Compactación mayor: Como se ilustra en la imagen anterior, en Compactación principal, HBase fusiona y vuelve a comprometer los archivos H más pequeños de una región a un nuevo archivo H. En este proceso, las mismas familias de columnas se colocan juntas en el nuevo HFile. Deja caer la celda eliminada y caducada en este proceso. Aumenta el rendimiento de lectura.

Pero durante este proceso, los discos de entrada y salida y el tráfico de la red pueden congestionarse. Esto se conoce como escribir amplificación . Por lo tanto, generalmente se programa durante tiempos de carga máxima baja.

Ahora, otro proceso de optimización del rendimiento que discutiré es División de región . Esto es muy importante para el equilibrio de carga.

Arquitectura HBase: División de región

La siguiente figura ilustra el mecanismo de división de regiones.

Siempre que una región se vuelve grande, se divide en dos regiones secundarias, como se muestra en la figura anterior. Cada región representa exactamente la mitad de la región principal. Luego, esta división se informa al HMaster. Esto es manejado por el mismo servidor de región hasta que el HMaster los asigna a un nuevo servidor de región para balancear la carga.

Avanzando en la línea, por último, pero no menos importante, le explicaré cómo HBase recupera datos después de una falla. Como sabemos que Recuperación de fallas es una característica muy importante de HBase, por lo tanto, háganos saber cómo HBase recupera datos después de una falla.

Arquitectura HBase: Bloqueo de HBase y recuperación de datos

  • Siempre que falla un servidor de región, ZooKeeper notifica al HMaster sobre la falla.
  • Luego, HMaster distribuye y asigna las regiones del servidor de región averiado a muchos servidores de región activos. Para recuperar los datos del MemStore del Region Server fallido, el HMaster distribuye el WAL a todos los Region Server.
  • Cada servidor de región vuelve a ejecutar el WAL para crear MemStore para la familia de columnas de esa región fallida.
  • Los datos se escriben en orden cronológico (en un orden oportuno) en WAL. Por lo tanto, volver a ejecutar ese WAL significa realizar todos los cambios que se realizaron y almacenaron en el archivo MemStore.
  • Por lo tanto, después de que todos los servidores de región ejecuten WAL, se recuperan los datos de MemStore para toda la familia de columnas.

Espero que este blog le haya ayudado a comprender el modelo de datos HBase y la arquitectura HBase. Espero que lo hayas disfrutado. Ahora puede identificarse con las características de HBase (que expliqué en mi anterior Tutorial de HBase blog) con HBase Architecture y comprender cómo funciona internamente. Ahora que conoce la parte teórica de HBase, debería pasar a la parte práctica. Teniendo esto en cuenta, nuestro próximo blog de estará explicando una muestra HBase POCO .

conversión de tipo c ++

Ahora que ha entendido la arquitectura HBase, consulte la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación de certificación de Edureka Big Data Hadoop ayuda a los alumnos a convertirse en expertos en HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume y Sqoop utilizando casos de uso en tiempo real en el dominio de comercio minorista, redes sociales, aviación, turismo y finanzas.

Tienes una pregunta para nosotros? Menciónalo en la sección de comentarios y nos comunicaremos contigo.