HBase diseño de la estrategia de optimización y rowKey

estrategia de optimización HBase

  • Solución de efecto de punto caliente

HBase causa de datos de temas de actualidad:
un gran número de solicitudes de lectura y escritura de usuario el acceso a grupo de HBase de uno o unos pocos RegionServer, lo que resulta en RegionServer aumento de la presión de carga puede causar una disminución en el rendimiento RegionServer, lo que resulta en los casos más graves, Servicio de ala;

  1. Cuando se crea la tabla pre-partición, no de acuerdo con la política por defecto, crear una tabla única región, pero si es necesario, crear múltiples Región como una tabla para evitar el efecto de los puntos calientes
  2. Basado en la rowKey pre-partición pre-basados ​​partición
  3. 语法:
    3.1 Crear 't1', 'f1', SPLITS => [ '10', '20', '30', '40']
    3.2 Crear 't1', 'f1', SPLITS_FILE => 'splits.txt'
    splits.txt
    10
    20
    30
    40
    3.3 crear 'T2', 'F1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
  4. Solución de problemas candentes requiere atención a lo siguiente fundamental
    1. Pre-partición
    2. rowKey Conjunto En resumen dos personas tratan de resolver los temas de actualidad.
  • Mejorar la eficiencia de recuperación
  1. rowKey a continuación, recuperar una constante alta eficiencia relativamente continua (secuencia de consulta de las operaciones de exploración)
  2. MEMSTORE conjunto tamaño, Block Cache tamaño hbase-site.xml proporcionado
    hbase.hregion.memstore.flush.size 128M cada MEMSTORE alcanzó el 40% 128M ras hbase.regionserver.global.memstore.size 0,4 espacio de montón
    (espacio ocupado JVM RegionServer )
    1. Dejar que los datos tanto como sea posible colocar en la memoria, mejorar la eficiencia de recuperación
    2. MEMSTORE evitar el bloqueo de operación de vaciado cliente a ras cuando el hbase.regionserver.global.memstore.size.lower.limit mundial
      MEMSTORE con una capacidad de 95% no está a ras
      hfile.block.cache.size 0,4
  3. El índice de los datos dentro de hbase bloque, el filtro de Bloom
  • parámetros de JVM
  1. proceso de JVM de Java

  2. JVM (espacio de montón) HBase Cenozoico 1/3 años 2/3 generación permanente (estática, constante) Eden superviviente (de) superviviente (a)
    8 1 1 ParNewGC ConcMarkSweepGC "-Xmx8g -Xms8G -Xmn128m -XX: UseParNewGC
    -XX : UseConcMarkSweepGC - XX: CMSInitiatingOccupancyFraction = 70 -verbose: gc -XX: + PrintGCDetails -XX: + PrintGCTimeStamps -Xloggc: $ HBASE_HOME / logs / GC - {hostname} $ -hbase.log "

    HBASE_REGIONSERVER_OPTS exportación hbase-env.sh =”- Xmx8g -Xms8G
    -Xmn128m -XX: UseParNewGC -XX: UseConcMarkSweepGC -XX: CMSInitiatingOccupancyFraction = 70 -verbose: gc -XX: + PrintGCDetails -XX: + PrintGCTimeStamps -Xloggc: $ HBASE_HOME / logs /gc-${hostname}-hbase.log”

  • mslab
  1. Evitar la fragmentación de memoria, la fragmentación excesiva de memoria, pérdidas de memoria, FullGC ocurrió STW hbase.hregion.memstore.mslab.enabled cierto si se debe habilitar MSLAB, por defecto a true.
    Hbase.hregion.memstore.mslab.chunksize 2M -> 4,5M 6M
    Chunk tamaño predeterminado de 2 MB
  • automatización de procesos de funcionamiento cambia al procesamiento manual

Timing de unión, secuencias de comandos shell para completar la división compacto herramientas de procesamiento de HBase manual de

rowKey Diseño

Principios de diseño único, ordenada, la longitud, el hash

El único principio

HBase rowKey identifica de forma exclusiva la línea de datos, hay que asegurarse de que ningún duplicado única;

principio ordenado

RowKey clasifican automáticamente en orden alfabético, por ejemplo: aluvión de aire puede ser diseñado直播间ID:timestamp

principio de libre

El máximo permitido rowKey 64 bytes, se recomienda establecer un radio de 16 bytes;

50 bytes * 100 millones de discos ≈ 4 GB

  • Que se traducirá en una pérdida de recursos de memoria
  • El espacio de almacenamiento de impacto MEMSTORE efectiva

principio de hash

La dispersión de la pluralidad de datos almacenados en el almacenamiento de HBase RegionServer; puntos calientes impiden datos;

  • consulta multi región, sugerencia rowKey continuas (principios ordenados)
  • Pequeño consulta región, picadillo de hash -> Cifrado, UUID

DigestUtils.md5Hex (rowKey); cifrado
de cadena rowKey = "yxx_male_151";
. = UUID UUID.randomUUID () toString ()
Cadena newRowKey = rowKey + "" + uuid.subString () puede tomar varias

Publicado 24 artículos originales · ganado elogios 1 · visitas 497

Supongo que te gusta

Origin blog.csdn.net/Mr_YXX/article/details/105025205
Recomendado
Clasificación