Perspectivas sobre la arquitectura HBase



Esta publicación analiza HBase y los conocimientos sobre la arquitectura HBase. También analiza los componentes de Hbase como Master, Region server y Zoo keeper y cómo usarlos.

En la publicación de hoy, hablemos de la arquitectura HBase. Repasemos nuestros conceptos básicos de HBase antes de profundizar en la arquitectura de HBase.





HBase - Conceptos básicos:

HBase es una tienda de código abierto, NoSQL, distribuida, no relacional, versionada, multidimensional y orientada a columnas que se ha modelado a partir de Google BigTable que se ejecuta sobre HDFS. 'NoSQL' es un término amplio que significa que la base de datos no es un RDBMS que admita SQL como su lenguaje de acceso principal. Pero hay muchos tipos de bases de datos NoSQL y Berkeley DB es un buen ejemplo de una base de datos NoSQL local, mientras que HBase es una base de datos muy distribuida.

HBase proporciona todas las funciones de Google BigTable. Comenzó como un proyecto de Powerset para procesar cantidades masivas de datos para la búsqueda en lenguaje natural. Se desarrolló como parte del proyecto Hadoop de Apache y se ejecuta sobre HDFS (Hadoop Distributed File System). Proporciona formas tolerantes a fallas de almacenar grandes cantidades de datos escasos. HBase es más un 'almacén de datos' que una 'base de datos' porque carece de muchas de las funciones disponibles en RDBMS, como columnas escritas, índices secundarios, activadores y lenguajes de consulta avanzados, etc.



En las bases de datos orientadas a columnas, la tabla de datos se almacena como secciones de columnas de datos en lugar de filas de datos. El modelo de datos de la base de datos orientada a columnas consiste en el nombre de la tabla, la clave de fila, la familia de columnas, las columnas y la marca de tiempo. Al crear tablas en HBase, las filas se identificarán de forma única con la ayuda de claves de fila y marca de tiempo. En este modelo de datos, la familia de columnas es estática, mientras que las columnas son dinámicas. Ahora echemos un vistazo a la arquitectura HBase.

aprender pl sql en línea gratis

¿Cuándo optar por HBase?

HBase es una buena opción solo cuando hay cientos de millones o miles de millones de filas. HBase también se puede usar en lugares cuando se considera pasar de un RDBMS a HBase como un rediseño completo en lugar de un puerto. En otras palabras, HBase no está optimizado para aplicaciones transaccionales clásicas o incluso análisis relacional. Tampoco es un sustituto completo de HDFS cuando se hace MapReduce por lotes grandes. Entonces, ¿por qué deberías optar por HBase? Si su aplicación tiene un esquema variable en el que cada fila es ligeramente diferente, entonces debería mirar HBase.

Arquitectura HBase:

La siguiente figura explica claramente la arquitectura HBase.



Perspectivas sobre la arquitectura HBase

En HBase, hay tres componentes principales: Maestro, servidor regional y guardián del zoológico . Los otros componentes son Memstore, HFile y WAL.

Dado que HBase se ejecuta sobre HDFS, utiliza la arquitectura Maestro-Esclavo en la que HMaster será el nodo maestro y los Servidores de Región son los nodos esclavos. Cuando el cliente envía una solicitud de escritura, HMaster obtiene esa solicitud y la reenvía al respectivo servidor de región.

cómo usar java swing

Servidor de región:

Es un sistema que actúa de manera similar a un nodo de datos. Cuando el servidor de región (RS) recibe una solicitud de escritura, dirige la solicitud a una región específica. Cada región almacena un conjunto de filas. Los datos de las filas se pueden separar en varias familias de columnas (CF). Los datos de CF en particular se almacenan en HStore, que consta de Memstore y un conjunto de HFiles.

¿Qué hace Memstore?

Memstore realiza un seguimiento de todos los registros de las operaciones de lectura y escritura que se han realizado dentro de ese servidor de región en particular. De esto podemos decir que está actuando de manera similar a un nodo de nombre en Hadoop. Memstore es un almacenamiento en memoria, por lo tanto, Memstore utiliza el almacenamiento en memoria de cada nodo de datos para almacenar los registros. Cuando se alcanzan ciertos umbrales, los datos de Memstore se vacían en HFile.

El propósito clave de usar Memstore es la necesidad de almacenar datos en DFS ordenados por clave de fila. Como HDFS está diseñado para lecturas / escrituras secuenciales, sin modificaciones de archivos permitidas, HBase no puede escribir datos de manera eficiente en el disco mientras se reciben: los datos escritos no se ordenarán (cuando la entrada no se ordena) lo que significa que no se optimizarán para el futuro recuperación. Para resolver este problema, HBase almacena en búfer los últimos datos recibidos en la memoria (en Memstore), los 'ordena' antes de vaciarlos y luego escribe en HDFS mediante escrituras secuenciales rápidas. Por tanto, HFile contiene una lista de filas ordenadas.

Cada vez que se produce una descarga de Memstore, se crea un archivo H para cada CF y las descargas frecuentes pueden crear toneladas de archivos HF. Dado que durante la lectura de HBase tendrá que mirar muchos HFiles, la velocidad de lectura puede verse afectada. Para evitar abrir demasiados archivos HFiles y evitar el deterioro del rendimiento de lectura, se utiliza el proceso de compactación de archivos HFiles. HBase periódicamente (cuando se alcanzan ciertos umbrales configurables) compacta varios archivos H más pequeños en uno grande. Obviamente, cuantos más archivos crea Memstore, más trabajo (carga extra) para el sistema. Sumado a eso, mientras que el proceso de compactación generalmente se realiza en paralelo con el servicio de otras solicitudes y cuando HBase no puede seguir el ritmo de compactación de HFiles (sí, también hay umbrales configurados para eso), bloqueará las escrituras en RS nuevamente. Como comentamos anteriormente, esto es muy indeseable.

No podemos estar seguros de que los datos sean persistentes en Memstore. Suponga que un nodo de datos en particular está inactivo. Entonces, los datos que residen en la memoria de ese nodo de datos se perderán.

Para superar este problema, cuando la solicitud proviene del maestro, también se escribió en WAL. WAL no es más que Escribir registros anticipados que reside en el HDFS, un almacenamiento permanente. Ahora podemos asegurarnos de que incluso si el nodo de datos está inactivo, los datos no se perderán, es decir, tenemos la copia de todas las acciones que se supone que debes hacer en el WAL. Cuando el nodo de datos esté activo, volverá a realizar todas las actividades. Una vez que se completa la operación, todo se vacía de Memstore y WAL y se escribe en HFile para asegurarnos de que no nos estamos quedando sin memoria.

Tomemos un ejemplo simple en el que quiero agregar la fila 10 y luego entra la solicitud de escritura, dice que da todos los metadatos al Memstore y WAL. Una vez que esa fila en particular se escribe en HFile, todo en Memstore y WAL se vacía.

Guardián del zoológico:

HBase viene integrado con Zoo keeper. Cuando inicio HBase, también se inicia la instancia de Zoo keeper. La razón es que el encargado del zoológico nos ayuda a realizar un seguimiento de todos los servidores de la región que están allí para HBase. El encargado del zoológico realiza un seguimiento de cuántos servidores de región hay, qué servidores de región tienen desde qué nodo de datos hasta qué nodo de datos. Realiza un seguimiento de conjuntos de datos más pequeños donde Hadoop se está perdiendo. Disminuye la sobrecarga en la parte superior de Hadoop, que realiza un seguimiento de la mayoría de sus metadatos. Por lo tanto, HMaster obtiene los detalles de los servidores de la región contactando al encargado del zoológico.

Tienes una pregunta para nosotros? Menciónalos en la sección de comentarios y nos pondremos en contacto contigo.

qué es el semáforo en java

Artículos Relacionados:

Comandos útiles de Hive