Otimizar o Apache HBase com o Apache Ambari no Azure HDInsight

O Apache Ambari é uma interface web para gerenciar e monitorar clusters HDInsight. Para obter uma introdução à interface do usuário da Web do Ambari, consulte Gerenciar clusters HDInsight usando a interface do usuário da Web do Apache Ambari.

A configuração do Apache HBase é modificada na guia Configurações do HBase. As seções a seguir descrevem algumas das definições de configuração importantes que afetam o desempenho do HBase.

Definir HBASE_HEAPSIZE

Nota

Este artigo contém referências ao termo mestre, um termo que a Microsoft não usa mais. Quando o termo for removido do software, iremos removê-lo deste artigo.

O tamanho da pilha do HBase especifica a quantidade máxima de heap a ser usada em megabytes por região e servidores mestres . O valor padrão é 1.000 MB. Esse valor deve ser ajustado para a carga de trabalho do cluster.

  1. Para modificar, navegue até o painel Advanced HBase-env na guia HBase Configs e localize a HBASE_HEAPSIZE configuração.

  2. Altere o valor padrão para 5.000 MB.

    `Apache Ambari HBase memory heapsize`.

Otimize cargas de trabalho de leitura pesada

As configurações a seguir são importantes para melhorar o desempenho de cargas de trabalho de leitura pesada.

Tamanho do cache de bloco

O cache de bloco é o cache de leitura. O hfile.block.cache.size parâmetro controla o tamanho do cache de bloco. O valor padrão é 0,4, que é 40% da memória total do servidor da região. Quanto maior o tamanho do cache de bloco, mais rápidas serão as leituras aleatórias.

  1. Para modificar esse parâmetro, navegue até a guia Configurações na guia Configurações do HBase e localize % de RegionServer Alocado para Buffers de Leitura.

    Apache HBase memory block cache size.

  2. Para alterar o valor, selecione o ícone Editar .

Tamanho da memstore

Todas as edições são armazenadas no buffer de memória, chamado de Memstore. Esse buffer aumenta a quantidade total de dados que podem ser gravados no disco em uma única operação. Também acelera o acesso às edições recentes. O tamanho do Memstore define os dois parâmetros a seguir:

  • hbase.regionserver.global.memstore.UpperLimit: Define a porcentagem máxima do servidor de região que o Memstore combinado pode usar.

  • hbase.regionserver.global.memstore.LowerLimit: Define a porcentagem mínima do servidor de região que o Memstore combinado pode usar.

Para otimizar para leituras aleatórias, você pode reduzir os limites superior e inferior do Memstore.

Número de linhas obtidas durante a verificação a partir do disco

A hbase.client.scanner.caching configuração define o número de linhas lidas do disco quando o next método é chamado em um scanner. O valor predefinido é 100. Quanto maior o número, menos chamadas remotas feitas do cliente para o servidor da região, resultando em verificações mais rápidas. No entanto, essa configuração aumenta a pressão de memória no cliente.

Apache HBase number of rows fetched.

Importante

Não defina o valor de forma que o tempo entre a invocação do próximo método em um scanner seja maior do que o tempo limite do scanner. A duração do tempo limite do hbase.regionserver.lease.period scanner é definida pela propriedade.

Otimize cargas de trabalho pesadas de gravação

As configurações a seguir são importantes para melhorar o desempenho de cargas de trabalho com muita gravação.

Tamanho máximo do arquivo de região

O HBase armazena dados em um formato de arquivo interno, chamado HFile. A propriedade hbase.hregion.max.filesize define o tamanho de um único HFile para uma região. Uma região é dividida em duas regiões se a soma de todas HFiles em uma região for maior do que essa configuração.

`Apache HBase HRegion max filesize`.

Quanto maior o tamanho do arquivo de região, menor o número de divisões. Você pode aumentar o tamanho do arquivo para determinar um valor que resulte no desempenho máximo de gravação.

Evite o bloqueio de atualizações

  • A propriedade hbase.hregion.memstore.flush.size define o tamanho no qual Memstore é liberado para o disco. O tamanho padrão é 128 MB.

  • O hbase.hregion.memstore.block.multiplier define o multiplicador de bloco de região do HBase. O valor predefinido é 4. O máximo permitido é 8.

  • O HBase bloqueia atualizações se o Memstore for (hbase.hregion.memstore.flush.size * hbase.hregion.memstore.block.multiplier) bytes.

    Com os valores padrão de tamanho de liberação e multiplicador de bloco, as atualizações são bloqueadas quando o Memstore tem 128 * 4 = 512 MB de tamanho. Para reduzir a contagem de bloqueios de atualização, aumente o valor de hbase.hregion.memstore.block.multiplier.

Apache HBase Region Block Multiplier.

Definir Memstore size

Os parâmetros e hbase.regionserver.global.memstore.lowerLimit definem o hbase.regionserver.global.memstore.upperLimit tamanho do Memstore. Definir esses valores iguais entre si reduz as pausas durante as gravações (também causando descargas mais frequentes) e resulta em maior desempenho de gravação.

Definir buffer de alocação local do Memstore

A propriedade hbase.hregion.memstore.mslab.enabled define o uso do buffer de alocação local do Memstore. Quando ativada (true), essa configuração evita a fragmentação da pilha durante a operação de gravação pesada. O valor predefinido é true.

hbase.hregion.memstore.mslab.enabled.

Próximos passos