Principios básicos de HBase
HBase lleva a cabo el almacenamiento de datos. HBase es un sistema de almacenamiento distribuido de código abierto, orientado a columnas que es adecuado para almacenar cantidades masivas de datos no estructurados o semiestructurados. Cuenta con alta confiabilidad, alto rendimiento y escalabilidad flexible, y admite lectura/escritura de datos en tiempo real. Para obtener más información acerca de HBase, consulte https://hbase.apache.org/.
Las características típicas de una tabla almacenada en HBase son las siguientes:
- Tabla grande (BigTable): Una tabla contiene cientos de millones de filas y millones de columnas.
- Orientado a columnas: almacenamiento orientado a columnas, recuperación y control de permisos
- Disperso: las columnas nulas de la tabla no ocupan ningún espacio de almacenamiento.
Además, MRS HBase admite indexación secundaria para permitir que se creen índices para valores de columna de modo que los datos se puedan filtrar por columna usando API HBase nativas.
Arquitectura de HBase
Un clúster de HBase consta de procesos de HMaster activos y en espera y múltiples procesos de RegionServer.
Módulo |
Descripción |
---|---|
Master |
Master también se llama HMaster. En modo de HA, HMaster consiste en un HMaster activo y un HMaster en espera.
|
Client |
Client se comunica con Master para la gestión y con RegionServer para la protección de datos mediante el mecanismo de llamada a procedimiento remoto (RPC) de HBase. |
RegionServer |
RegionServer proporciona servicios de lectura y escritura de datos de tablas como una unidad de procesamiento de datos y computación en HBase. RegionServer se implementa con DataNodes de clústeres HDFS para almacenar datos. |
ZooKeeper cluster |
ZooKeeper ofrece servicios de coordinación distribuida para procesos en clústeres de HBase. Cada RegionServer está registrado en ZooKeeper para que Master activo pueda obtener el estado de salud de cada RegionServer. |
HDFS cluster |
HDFS proporciona servicios de almacenamiento de archivos altamente confiables para HBase. Todos los datos de HBase se almacenan en el HDFS. |
Principios de HBase
- Modelo de datos de HBase
HBase almacena los datos en tablas, como se muestra en Figura 2. Los datos de una tabla se dividen en varias Regiones, que el Master asigna a RegionServers para su gestión.
Cada Region contiene datos dentro de un rango de RowKey. Una tabla de datos de HBase contiene solo un Region al principio. A medida que aumenta el número de datos y alcanza el límite superior de la capacidad de Region, el Region se divide en dos Regions. Puede definir el rango RowKey de un Region al crear una tabla o definir el tamaño de Region en el archivo de configuración.
Tabla 2 Conceptos Módulo
Descripción
RowKey
Similar a la clave principal de una tabla de relaciones, que es el ID único de los datos de cada fila. Un RowKey puede ser una cadena, un entero o una cadena binaria. Todos los registros se almacenan después de ser ordenados por RowKey.
Timestamp
La marca de tiempo de una operación de datos. Los datos se pueden especificar con diferentes versiones por sello de tiempo. Los datos de diferentes versiones en cada celda se almacenan por tiempo en orden descendente.
Cell
Unidad de almacenamiento mínima de HBase, que consta de claves y valores. Una clave consta de seis campos, a saber, row, column family, column qualifier, timestamp, type, and MVCC version. Los valores son los objetos de datos binarios.
Column Family
Una o varias familias de columnas horizontales forman una tabla. Una familia de columnas puede consistir en varias columnas aleatorias. Una columna es una etiqueta bajo una familia de columnas, que se puede agregar según sea necesario cuando se escriben datos. La familia de columnas admite la expansión dinámica, por lo que no es necesario que el número y el tipo de columnas estén predefinidos. Las columnas de una tabla en HBase están escasamente distribuidas. El número y el tipo de columnas en diferentes filas pueden ser diferentes. Cada familia de columnas tiene el tiempo de vida independiente (TTL). Solo puede bloquear la fila. Las operaciones de la fila de una familia de columnas son las mismas que las de las demás filas.
Column
Similar a las bases de datos tradicionales, las tablas de HBase también utilizan columnas para almacenar datos del mismo tipo.
- Almacenamiento de datos de RegionServer
RegionServer gestiona las regiones asignadas por HMaster. Figura 3 muestra la estructura de almacenamiento de datos de RegionServer.
Tabla 3 enumera cada componente de la región descrito en Figura 3.
Tabla 3 Descripción de la estructura de la región Módulo
Descripción
Store
Un Region se compone de una o varias Stores. Cada Store asigna una familia de columnas en Figura 2.
MemStore
Un Store contiene un MemStore. El MemStore almacena en caché los datos insertados en un Region por el cliente. Cuando la capacidad de MemStore alcanza el límite superior, RegionServer vacia los datos de MemStore a HDFS.
StoreFile
Los datos enviados al HDFS se almacenan como StoreFile en el HDFS. A medida que se insertan más datos, se generan múltiples StoreFiles en un Store. Cuando el número de StoreFiles alcanza el límite superior, RegionServer fusiona varios StoreFiles en un StoreFile grande.
HFile
HFile define el formato de almacenamiento de StoreFiles en un sistema de archivos. HFile es la implementación subyacente de StoreFile.
HLog
HLogs evitan la pérdida de datos cuando RegionServer es defectuoso. Múltiples regiones en un RegionServer comparten el mismo HLog.
- Tabla de metadatos
La tabla de metadatos es una tabla HBase especial, que es utilizada por el cliente para localizar una región. La tabla de metadatos incluye una tabla hbase:meta para registrar información de región de las tablas de usuario, como la ubicación de región y las RowKey de inicio y fin.
Figura 4 muestra la relación de asignación entre las tablas de metadatos y las tablas de usuario.
- Proceso de operación de datos
Figura 5 muestra el proceso de operación de datos de HBase.
- Cuando agrega, elimina, modifica y consulta datos de HBase, el cliente de HBase primero se conecta a ZooKeeper para obtener información sobre el RegionServer donde se encuentra la tabla hbase:meta. Si modifica el espacio de nombres, como crear y eliminar una tabla, debe acceder a HMaster para actualizar la información de metadatos.
- HBase Client se conecta al RegionServer donde se encuentra la región de la tabla hbase:meta y obtiene la ubicación RegionServer donde reside la región de la tabla de usuario.
- A continuación, el HBase client se conecta al RegionServer donde se encuentra la región de la tabla de usuario y emite un comando de operación de datos al RegionServer. El RegionServer ejecuta el comando.
Para mejorar la eficiencia del procesamiento de datos, el cliente HBase almacena en caché la información de región de la tabla hbase:meta y la tabla de usuario. Cuando una aplicación inicia una segunda operación de datos, el HBase client consulta la información de región de la memoria. Si no se encuentra ninguna coincidencia en la memoria, el HBase client realiza las operaciones anteriores para obtener información de región.