HBase projeto estratégia de otimização e RowKey

estratégia de otimização HBase

  • Resolução de efeito hotspot

HBase dados causa de questões quentes:
um grande número de solicitações de leitura e de usuários acesso de gravação aglomerado HBase de um ou alguns RegionServer, resultando em RegionServer aumento da pressão de carga pode causar um declínio no desempenho RegionServer, resultando em casos mais graves, jeito de serviço;

  1. Quando você cria a tabela de pré-partição, em desacordo com a política padrão, criar uma tabela única região, mas, se necessário, criar várias Região como uma tabela para evitar o efeito de pontos quentes
  2. Com base na RowKey pré-partição-pré-partição baseado
  3. 语法:
    3,1 criar 't1', 'f1', SPLITS => [ '10', '20', '30', '40']
    3,2 criar 't1', 'f1', SPLITS_FILE => 'splits.txt'
    splits.txt
    10
    20
    30
    40
    3,3 criar 'T2', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
  4. Resolução de problemas de hotspots requerem atenção para o seguinte fundamentais
    1. Pré-partição
    2. RowKey Set Para resumir duas pessoas tentam resolver as questões quentes.
  • Melhorar a eficiência de recuperação
  1. RowKey então recuperar uma constante de alta eficiência relativamente contínua (sequcia de pesquisa de operações de verificação)
  2. Memstore conjunto tamanho, Bloco de cache tamanho hbase-site.xml fornecida
    hbase.hregion.memstore.flush.size 128M cada memstore atingiu 40% 128M nivelada hbase.regionserver.global.memstore.size 0,4 espaço de pilha
    (JVM espaço ocupado RegionServer )
    1. Deixe os dados, tanto quanto possível colocados na memória, melhorar a eficiência de recuperação
    2. Memstore evitar o bloqueio operação de liberação cliente para nivelado quando o hbase.regionserver.global.memstore.size.lower.limit mundial
      memstore com uma capacidade de 95% não é nivelado
      hfile.block.cache.size 0,4
  3. O índice do bloco de dados no interior hbase, filtro Bloom
  • parâmetros de JVM
  1. processo JVM Java

  2. JVM (espaço de pilha) HBase Cenozóico 1/3 anos 2/3 geração permanente (estática, constante) Survivor Eden (dos) sobrevivente (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-env.sh HBASE_REGIONSERVER_OPTS exportação =”- 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 a fragmentação de memória, memória fragmentação excessiva, vazamentos de memória, FullGC ocorreu STW hbase.hregion.memstore.mslab.enabled verdade se para permitir MSLAB, padrão para true.
    Hbase.hregion.memstore.mslab.chunksize 2M -> 4,5m 6M
    Chunk padrão tamanho de 2MB
  • processo de automação funcional muda para o processamento manual

Temporização de ligação, shell scripts para completar a divisão compacto ferramentas de processamento de HBase Manual

RowKey projeto

princípios de design: original, ordenada, comprimento, de hash

O único princípio

HBase RowKey identifica exclusivamente a linha de dados, temos de assegurar que nenhum duplicado única;

princípio ordenado

RowKey automaticamente classificados em ordem alfabética, por exemplo: barragem Air pode ser concebido直播间ID:timestamp

princípio comprimento

O valor máximo permitido RowKey 64 bytes, é recomendado para conjunto dentro de 16 bytes;

50 bytes * 100 milhões de registos Å 4GB

  • Ele irá resultar em uma perda de recursos de memória
  • O espaço de armazenamento impacto MemStore eficaz

princípio Hash

Dispersando a pluralidade de dados armazenados no armazenamento de HBase RegionServer; hot spots evitar que os dados;

  • consulta região multi, sugestão RowKey contínuas (princípios ordenados)
  • consulta região pequena, de hash de hash -> Encryption, UUID

DigestUtils.md5Hex (RowKey); criptografia
Cadeia RowKey = "yxx_male_151";
. = UUID UUID.randomUUID toString () ()
Cadeia newRowKey = RowKey + "" + uuid.subString () pode tomar várias

Publicado 24 artigos originais · ganhou elogios 1 · vista 497

Acho que você gosta

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