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;
- 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
- Com base na RowKey pré-partição-pré-partição baseado
- 语法:
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'}- Resolução de problemas de hotspots requerem atenção para o seguinte fundamentais
- Pré-partição
- RowKey Set Para resumir duas pessoas tentam resolver as questões quentes.
- Melhorar a eficiência de recuperação
- RowKey então recuperar uma constante de alta eficiência relativamente contínua (sequcia de pesquisa de operações de verificação)
- 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 )
- Deixe os dados, tanto quanto possível colocados na memória, melhorar a eficiência de recuperação
- 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- O índice do bloco de dados no interior hbase, filtro Bloom
- parâmetros de JVM
processo JVM Java
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
- 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