Introducción a HBase MemStore
Cada familia de columnas de la tabla HBase mantiene un MemStore. Cuando se cumplen ciertas condiciones, MemStore realizará una actualización y generará un nuevo HFile en el sistema de archivos. La unidad más pequeña de cada descarga es el área.
Las funciones principales de MemStore:
Si hay demasiados MemStores en una Región H (demasiadas configuraciones de familia de columnas), entonces el costo de cada actualización debe ser muy alto y una gran Se generará una cantidad de archivos H, lo que afectará las operaciones posteriores. Por lo tanto, se recomienda minimizar el número de familias de columnas al diseñar una tabla.
MemStore es muy importante para el rendimiento de lectura y escritura de HBase, y la operación de actualización es la operación principal de MemStore. MemStore realiza operaciones de actualización en una variedad de situaciones:
Tenga en cuenta nuevamente que la unidad de actualización mínima de MemStore es HRegion, no un solo MemStore.
El bloqueo de actualizaciones tiene un gran impacto en un solo nodo y en todo el clúster. Debe prestar atención al tamaño de MemStore y a la longitud de la cola de Memstore Flush.
Para reducir el impacto del proceso de actualización en la lectura y escritura, HBase adopta un método similar al envío en dos etapas y divide todo el proceso de actualización en tres etapas:
Usted Puede ver lo anterior a través de la información de registro Proceso de actualización:
Todo el proceso de lavado puede implicar operaciones de compactación y división y es demasiado complejo para explicarlo en detalle.
En general, la mayoría de las operaciones de actualización de MemStore no tendrán mucho impacto en la lectura y escritura empresarial, como: actualización periódica de Memstore, activación manual, actualización de un solo Memstore, actualización regional, exceder el límite de cantidad de HLog, etc. . Estos escenarios solo bloquean temporalmente las solicitudes de escritura en la región correspondiente durante un tiempo muy breve, medido en milisegundos.
Pero una vez que se activen las restricciones regionales a nivel de servidor y provoquen un vaciado, tendrá un gran impacto en las solicitudes de los usuarios. Bloquea todas las operaciones de actualización que caen en el RegionServer, y el tiempo de bloqueo es muy largo, llegando incluso al nivel de minutos.
Los principales factores que activan los límites a nivel de servidor de región son:
-El número total de regiones que se ejecutan en el servidor de región.
Cuantas más regiones haya, más MemStores se mantendrán en el servidor de la región. De acuerdo con las solicitudes de lectura y escritura de la tabla de servicios y el tamaño de memoria que RegionServer puede asignar, establezca razonablemente el número de particiones de la tabla (en el caso de particiones previas).
-El número de tiendas en la región (el número de familias de columnas en la tabla)
Se mantiene un MemStore para cada familia de columnas y cada vez que se actualiza el MemStore, se se crea para cada familia de columnas New HFile. Cuando el MemStore de un CF alcanza el umbral de actualización, el MemStore de todos los demás CF también se actualizará. Por lo tanto, el desequilibrio de datos en diferentes CF generará demasiados HFiles y archivos pequeños, lo que afectará el rendimiento del clúster. En muchos casos, CF es el mejor diseño.
Actualizar la memoria con frecuencia creará una gran cantidad de archivos H. Es necesario leer una gran cantidad de archivos H durante la búsqueda y el rendimiento de lectura se verá muy afectado. Para evitar abrir demasiados HFiles y evitar el deterioro del rendimiento de lectura (amplificación de lectura), HBase tiene un proceso especial de fusión de HFile para fusionar archivos pequeños de acuerdo con ciertas estrategias y eliminar datos caducados. Los artículos posteriores lo presentarán en detalle.