Puntos teóricos de Hbase

Directorio de artículos

Resumen de los puntos de conocimiento teórico de Hbase

Pregunta 01: ¿Cuáles son las funciones y los escenarios de aplicación de Hbase?

  • Función: Hbase es una base de datos NoSQL distribuida basada en columnas basada en memoria distribuida y HDFS

  • Aplicación: Hbase es adecuado para escenarios que requieren acceso de lectura y escritura rápido y aleatorio a grandes cantidades de datos en tiempo real.

Pregunta 02: ¿Cuáles son las características de Hbase?

  • Distribuido, puede lograr una alta lectura y escritura de datos concurrentes

  • La capa superior crea memoria distribuida, que puede realizar lectura y escritura de alto rendimiento, aleatoria y en tiempo real.

  • La capa inferior se basa en HDFS, que puede realizar grandes volúmenes de datos.

  • Almacene por columna, realice el almacenamiento de datos en función de la columna, con mayor flexibilidad

Pregunta 03: ¿Cuál es la filosofía de diseño de Hbase?

  • Idea de diseño: separe los datos calientes y fríos, Hbase escribe nuevos datos directamente en la memoria, si se almacenan demasiados datos en la memoria, escribe los datos en la memoria en HDFS

    • Hot data se refiere a los datos que se acaban de generar, primero se escriben en la memoria y, en el caso de alta probabilidad, se pueden leer directamente desde la memoria.

    • Los datos fríos se refieren a los datos que se generan primero, los datos que se han generado en la memoria durante mucho tiempo se escriben en HDFS y la probabilidad de que se lean es pequeña.

Pregunta 04: ¿Cuál es la diferencia entre Hbase y HDFS?

  • Hbase es un sistema de almacenamiento de base de datos de datos de lectura y escritura aleatoria en tiempo real de alto rendimiento para el almacenamiento de datos en tiempo real

  • HDFS es un sistema de almacenamiento de archivos de big data fuera de línea distribuido, que se utiliza para realizar el almacenamiento de archivos fuera de línea

Pregunta 05: ¿Cuál es la diferencia entre Hbase y MySQL?

  • Hbase es una base de datos NoSQL distribuida que puede realizar almacenamiento de big data de alto rendimiento
  • MySQL es una base de datos relacional RDBMS, que solo puede lograr el almacenamiento de datos estructurados con una pequeña cantidad de datos

Pregunta 06: ¿Cuál es la diferencia entre Hbase y Hive?

  • Hive crea metadatos y asigna archivos HDFS a tablas. La esencia es HDFS para realizar grandes almacenes de datos sin conexión.
  • Hbase es una base de datos NoSQL que realiza el almacenamiento en tiempo real de big data mediante la construcción de memoria distribuida de capa superior y HDFS de capa inferior.

Pregunta 07: ¿Cuál es el almacenamiento de columnas de Hbase?

  • El diseño de almacenamiento basado en columnas de Hbase significa que la unidad de operación más pequeña en Hbase es una columna, que puede leer y escribir cada fila y cada columna.

  • Las columnas de cada fila son dinámicas y cada fila puede tener columnas diferentes.

Pregunta 08: Describa brevemente las funciones y los significados de Namespace, Rowkey, ColumnFamily y múltiples versiones

  • Espacio de nombres: espacio de nombres, similar al diseño de la base de datos, utilizado para distinguir diferentes tablas de negocios.

  • Rowkey: Rowkey, similar al diseño de la clave principal, identifica de forma única un dato y sirve como el único índice en Hbase

  • ColumnFamily: familia de columnas, utilizada para agrupar columnas, la capa inferior se utiliza para distinguir y almacenar diferentes columnas para mejorar el rendimiento de la consulta

  • Varias versiones: Hbase permite que una columna almacene el valor de varias versiones y distingue las diferentes versiones por la marca de tiempo cuando se escriben los datos.

    Plantilla universal Hbase:
    Hbase es un sistema de almacenamiento de base de datos NoSQL de big data que crea datos de lectura y escritura aleatorios, en tiempo real y de alto rendimiento mediante la creación de memoria distribuida de nivel superior, HDFS de nivel inferior, distribuida, basada en memoria y Almacenamiento basado en columnas y basado en HDFS

Pregunta 09: Describa brevemente la arquitectura distribuida maestro-esclavo de Hbase

  • Nodo maestro: HMaster: el nodo de administración, el nodo esclavo responsable de administrar el clúster, los metadatos y la distribución de todas las regiones.
  • Nodo esclavo: HRegionServer: nodo de almacenamiento, responsable de realizar el almacenamiento de todos los datos, administrar la región y construir memoria distribuida

Pregunta 10: Describa brevemente la relación entre la tabla Table y RegionServer

  • La tabla es un objeto de tabla en Hbase, una tabla se puede dividir en múltiples particiones de región
  • RegionServer es el nodo que implementa el almacenamiento de datos en Hbase, responsable de almacenar cada Región

Pregunta 11: ¿Cuáles son las reglas para particionar la región de la tabla y las reglas para escribir datos en la partición?

  • Reglas de división de región: división de rango, una tabla se puede dividir en múltiples Regiones en la dirección de la fila Rowkey, y cada Región constituye un intervalo continuo
  • Regla de división de datos: según el rango de la región a la que pertenece la clave de fila, escriba estos datos en la partición de la región

Pregunta 12: ¿Cuál es la estructura de almacenamiento interno de la Región?

  • Administrar múltiples regiones en cada RegionServer
  • Cada región se divide en varias tiendas según la familia de columnas
  • Hay 1 memstore y varios archivos StoreFile en cada tienda
  • Los datos se escriben en memstore. Si se alcanza el umbral de memoria, los datos en memstore se escribirán en StoreFile

Pregunta 13: ¿Qué es un tema candente?

  • Fenómeno: en un cierto período de tiempo, una gran cantidad de solicitudes de lectura y escritura se concentran en una determinada región, lo que hace que la carga de este RegionServer sea relativamente alta y que otras Regiones y RegionServers estén relativamente inactivas

  • Problema: La probabilidad de falla de este RegionServer aumentará, el rendimiento general disminuirá y la eficiencia será relativamente baja.

  • Razón: la razón esencial es que los datos no se distribuyen de manera uniforme

  • Sucediendo

    • Una mesa tiene solo una Región

    • Una tabla tiene varias regiones, pero la clave de fila se genera continuamente

Pregunta 14: ¿Cómo resolver problemas candentes?

  • Diseñe el Rowkey de manera razonable y construya un Rowkey discontinuo
  • De acuerdo con el prefijo de Rowkey, divida la tabla en múltiples Regiones

Pregunta 15: ¿Cómo está diseñado Rowkey y cuáles son las reglas de diseño?

  • Principio empresarial: adaptarse al negocio y asegurarse de que el prefijo sea el campo de consulta más utilizado
  • Principio único: cada clave de fila representa de forma única un dato
  • Principio de combinación: combinación de condiciones de consulta de uso común como clave de fila
  • Principio de hash: la construcción de clave de fila no puede ser continua
  • Principio de duración: satisfaga las necesidades comerciales lo más brevemente posible

Pregunta 16: ¿Cuáles son las reglas de diseño para las familias de columnas?

  • Principio numérico: si el número de columnas es relativamente grande, se recomiendan 2 ~ 3, si el número de columnas es relativamente pequeño, se recomienda 1
    • El número de familias de columnas es demasiado grande, lo que genera más comparaciones y reduce el rendimiento.
    • La cantidad de familias de columnas es menor, lo que genera más comparaciones de columnas y reduce el rendimiento.
  • Principio de longitud: siempre que se puedan satisfacer las necesidades comerciales, cuanto más corto, mejor

Pregunta 17: ¿Cuál es el principio de implementación de Hive en Hbase?

  • El principio de Hive en Hbase es leer y escribir datos de Hbase a través de MapReduce
  • MapReduce proporciona TableInputFormat para leer datos de Hbase, TableOutputFormat para escribir datos en Hbase

Pregunta 18: ¿Qué es Phoenix?

  • Phoenix es una herramienta SQL en Hbase especialmente diseñada para Hbase
  • La capa inferior se implementa a través de la API de Hbase y una gran cantidad de coprocesadores.
  • Puede realizar funciones como el acceso basado en SQL a Hbase y la construcción y mantenimiento de índices secundarios.

Pregunta 19: ¿Qué es un índice secundario? Por qué crear un índice secundario

  • El índice secundario se refiere a la construcción de un índice basado en el índice primario.
  • Hbase usa Rowkey como índice único, y solo usa el prefijo Rowkey para la consulta, luego indexa la consulta
  • Como resultado, la mayoría de las consultas no están indexadas y el rendimiento es relativamente bajo.
  • Al crear un índice secundario, puede reemplazar el escaneo completo de la tabla tomando dos índices para acelerar la consulta

Pregunta 20: Cuando Phoenix implementa índices secundarios, ¿qué tipos de índices se pueden construir?

  • Índice global
  • Índice de cobertura
  • Índice local
  • Índice de función

Pregunta 21: ¿Qué es un índice global?

  • Crea un índice global, automáticamente creará una tabla de índice.

  • Estructura de la tabla de índice

    • Clave de fila: campo de índice + clave de fila de la tabla original
    • Columna: ocupa la posición x
  • Características: si el campo de consulta o la condición de consulta no es un campo de índice, el índice no se utilizará

  • Aplicación: adecuado para leer más y escribir menos

Pregunta 22: ¿Qué es un índice de cobertura?

  • Cree un índice de cobertura, automáticamente creará una tabla de índice.

  • Estructura de la tabla de índice

    • Clave de fila: campo de índice + clave de fila de la tabla original
    • Columna: coloque las columnas de la inclusión en la tabla de índice
  • Características

    • Si el campo de consulta o la condición de consulta no es un campo de índice, el índice no se tomará

    • Si el campo de consulta está en la tabla de índice, devuelva el resultado directamente desde la tabla de índice

Pregunta 23: ¿Qué es un índice local?

  • Cree un índice de cobertura, automáticamente creará una familia de columnas basada en la tabla original para lograr el almacenamiento del índice.

  • En los datos de la tabla original: una familia de columnas de índice más

  • Características

    • Independientemente de si el campo de consulta es un campo de índice, tomará el índice
    • Almacene el índice y los datos en el mismo RegionServer para mejorar el rendimiento de lectura y escritura del índice
  • Nota

    • El índice local modificará la tabla de datos original. Para el índice local, solo Phoenix puede usarse para manipular los datos de la tabla.
    • La tabla de sal no puede usar el índice local

Pregunta 24: Describa brevemente el proceso de escritura de datos de Hbase

  • paso 1: obtener metadatos

    • El cliente solicita a Zookeeper que obtenga la dirección del servidor de regiones donde se encuentra la metatabla.
    • Leer los datos de la metatabla: obtener los metadatos de todas las tablas
  • paso 2: Encuentra la región correspondiente

    • De acuerdo con los metadatos en la metatabla, busque todas las regiones correspondientes a la tabla
    • Determine qué región debe escribirse de acuerdo con el rango de la región y la clave de fila escrita
    • Según la dirección del Regionserver de la región, solicite el RegionServer correspondiente
  • paso 3: escribir datos

    • Solicite a RegionServer que escriba la región correspondiente: especifique qué región escribir de acuerdo con el nombre de la región

    • Determine qué tienda específica escribir según la familia de columnas

      • Escriba primero en WAL: registro de escritura anticipada de Hlog
    • Escribe en el MemStore de la tienda correspondiente

      • MemStore

Pregunta 25: Describa brevemente el proceso de lectura de datos de Hbase

  • paso 1: obtener metadatos
    • El cliente solicita a Zookeeper que obtenga la dirección del servidor de regiones donde se encuentra la metatabla.
    • Leer los datos de la metatabla
    • Nota: El cliente almacenará en caché los datos de la metatabla. Solo la primera vez que se conecte a ZK y lea los datos de la metatabla, la caché se invalidará periódicamente y debe volver a almacenarse en caché.
      • Evite conectarse a zk para cada solicitud y luego lea la metatabla
  • paso 2: Encuentra la región correspondiente
    • De acuerdo con los metadatos en la metatabla, busque la región correspondiente a la tabla
    • Determine qué región debe escribirse de acuerdo con el rango de la región y la clave de fila escrita
    • Según la dirección del Regionserver de la región, solicite el RegionServer correspondiente
  • paso 3: leer datos
    • Consultar memstore primero
    • Si la familia de columnas consultadas tiene habilitado el mecanismo de almacenamiento en caché, lea BlockCache
    • Si no es así, lea StoreFile y coloque el resultado en BlockCache

Pregunta 26: Describa brevemente las ideas de diseño del modelo LSM

  • Paso 1: al escribir datos, solo escribe en la memoria
  • paso 2: Los datos se organizan en la memoria en orden. Cuando la cantidad de datos es grande, los datos ordenados se escriben en el disco para convertirse en un archivo de datos ordenados
  • paso 3: Basado en todos los archivos pequeños en orden, combínelos en un archivo grande en orden

Pregunta 27: ¿Qué es Flush y cuándo se activará Flush?

  • Flush significa escribir los datos en memstore en HDFS y convertirse en StoreFile

  • Antes de 2.0: determine el tamaño de almacenamiento del memstore, un solo memstore activará Flush cuando alcance los 128M, o todo el memstore se activará cuando alcance el 95%

  • Después de 2.0: Calcule la marca de agua en función del tamaño de almacenamiento promedio de cada almacén de memoria y el valor máximo de 16 M. Si es más alta que la marca de agua, se enjuagará, si no es más alta que no se enjuagará, y no sera mas alto que todo el rubor

Pregunta 28: ¿Qué es la compactación y cuándo se activará?

  • La función de Compactación es fusionar varios archivos StoreFile ordenados por separado en un archivo ordenado grande y eliminar los datos obsoletos para acelerar la velocidad de lectura.
  • Antes de 2.0: mediante una compactación menor y una compactación mayor para lograr
    • compactación menor: se utiliza para fusionar los primeros archivos pequeños generados sin limpiar los datos caducados
    • compactación importante: se utiliza para fusionar todos los archivos de tienda en un solo StoreFile y limpiar los datos caducados
  • Después de 2.0: además de la compactación menor y la compactación mayor, se agrega compactación en memoria
    • Compactación en memoria: fusionar en la memoria y luego vaciar el resultado combinado. Hay cuatro configuraciones
      • ninguno: no abrir
      • básico: abra, pero no elimine los datos caducados al fusionar
      • ansioso: abrir, limpiar y eliminar datos caducados al fusionar
      • adaptable: abre y determina automáticamente si se deben limpiar los datos caducados de acuerdo con la cantidad de datos al fusionar

Pregunta 29: ¿Qué es Spit y cuándo se activará Split?

  • Dividir se refiere a cuando una región almacena demasiados datos, lo que hace que la carga de esta región sea relativamente alta. Hbase establece un umbral para la cantidad máxima de datos almacenados en una región. Una vez que se alcanza el umbral, la región puede dividirse en dos regiones, la región anterior se desconectará y las dos nuevas regiones brindarán servicios al mundo exterior

  • Antes de 0.94: ConstantSizeRegionSplitPolicy

    • Siempre que el archivo de almacenamiento en la región alcance 10G, se dividirá
  • 2.0 之前 : IncreasingToUpperBoundRegionSplitPolicy

    • El cálculo se implementa según el número de regiones. Cuando se alcanzan 4 regiones, también se divide en 10 GB.
  • Después de 2.0: SteppingSplitPolicy

    • El número de regiones es igual a 1: dividido según 256M
    • El número de regiones supera uno: dividido según 10 GB

Pregunta 30: ¿Cuál es el principio y el valor de retorno de MapReduce leyendo datos de Hbase?

  • Cómo MapReduce lee Hbase: encapsula un TableInputFormat para leer datos de Hbase

  • valor de retorno

    • Cada región corresponde a un fragmento y cada fragmento inicia una MapTask para su procesamiento.

    • Los datos de cada Rowkey se convierten en un par KV

    • K es el objeto de bytes de Rowkey: ImmutableBytesWriable type

    • V es el objeto de datos de Rowkey: tipo de resultado

Pregunta 31: ¿Cuáles son los principios y requisitos para escribir MapReduce en Hbase?

  • Cómo MapReduce escribe en Hbase: encapsula un TableOutputFormat para implementar datos escritos en Hbase
  • Afirmar
    • El tipo de V de los datos escritos en Hbase debe ser tipo Put

Pregunta 32: ¿Qué es BulkLoad y en qué escenarios?

  • BulkLoad significa convertir directamente datos en archivos StoreFile y colocarlos en Hbase sin pasar por la memoria de Hbase para evitar que una gran cantidad de datos ingresen a la memoria y luego ingresen a HDFS desde la memoria.
  • Aplicación: se escribe un gran volumen de datos en Hbase en lotes

Pregunta 33: ¿Qué es un coprocesador? ¿Cuántos coprocesadores se proporcionan en Hbase?

  • Coprocesador se refiere a que Hbase proporciona algunas interfaces de desarrollo, que se pueden personalizar para desarrollar algunas funciones e integrarse en Hbase
  • De manera similar a la UDF en Hive, cuando esta función no está disponible, puede usar el coprocesador para personalizar el desarrollo y dejar que Hbase admita la función correspondiente.
  • Los coprocesadores se dividen en dos categorías
    • Observador: clase de observador, similar a la implementación del oyente.
    • Punto final: clase de terminal, similar a la implementación de procedimientos almacenados

Pregunta 34: ¿Cuáles son las optimizaciones comunes de Hbase?

  • Optimización de la memoria: para diferentes escenarios de lectura y escritura, ajuste razonablemente la proporción de Memstore y BlockCache
  • Optimización de la compresión: configure el almacenamiento de compresión para familias de columnas para reducir el consumo de E / S
  • Filtro Bloom: cree un índice Bloom basado en archivos de datos para acelerar la consulta de datos
  • Aumente el espacio de la caché del cliente, especifique el número de filas por escaneo, configure los algoritmos de GC apropiados, etc.
  • Otras optimizaciones
    • Optimice el número de identificadores de Linux, aumente el número de identificadores de recursos como subprocesos de Linux y canales de archivos
    • Optimización del número de identificadores de HDFS: aumente el número de subprocesos abiertos de archivos y aumente el tiempo de espera de la conexión
    • Optimización del guardián del zoológico: optimizar el tiempo de espera de la conexión

Supongo que te gusta

Origin blog.csdn.net/xianyu120/article/details/115213139
Recomendado
Clasificación