Compartilhar via


Otimizar o Apache HBase com o Apache Ambari no Azure HDInsight

O Apache Ambari é uma interface da Web para gerenciar e monitorar clusters do HDInsight. Para obter uma introdução à IU da Web do Ambari, consulte Gerenciar clusters do HDInsight com a IU 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

Observação

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, também o removeremos deste artigo.

O tamanho do heap do HBase especifica a quantidade máxima do heap a ser usada, em megabytes, por região e por servidores mestre. 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 HBase-env Avançado na guia Configurações do HBase e, em seguida, localize a configuração HBASE_HEAPSIZE.

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

    `Apache Ambari HBase memory heapsize`.

Otimizar cargas de trabalho com uso intenso de leitura

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

Tamanho do cache do bloco

O cache do bloco é o cache de leitura. O parâmetro hfile.block.cache.size controla o tamanho do cache de blocos. O valor padrão é 0.4, que é 40 por cento da memória total do servidor da região. Quanto maior for o tamanho do cache de blocos, 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, em seguida, localize % do RegionServer Alocada para Buffers de Leitura.

    Apache HBase memory block cache size.

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

Tamanho do 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. Ele 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 o percentual máximo do servidor de região que o Memstore combinado pode usar.

  • hbase.regionserver.global.memstore.LowerLimit: define o percentual mínimo do servidor de região que o Memstore combinado pode usar.

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

Número de linhas buscadas ao fazer a varredura do disco

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

Apache HBase number of rows fetched.

Importante

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

Otimizar cargas de trabalho com uso intenso de gravação

As configurações a seguir são importantes para melhorar o desempenho de cargas de trabalho com uso intenso de 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 será dividida em duas regiões se a soma de todos os HFiles em uma região for maior 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. É possível aumentar o tamanho do arquivo para determinar um valor que resulta no desempenho máximo de gravação.

Evitar o bloqueio de atualização

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

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

  • O HBase bloqueará atualizações se o Memstore tiver (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 serão bloqueadas quando o Memstore tiver 128 * 4 = 512 MB. Para reduzir o número de blocos de atualização, aumente o valor de hbase.hregion.memstore.block.multiplier.

Apache HBase Region Block Multiplier.

Definir tamanho do Memstore

Os parâmetros hbase.regionserver.global.memstore.upperLimit e hbase.regionserver.global.memstore.lowerLimit definem o tamanho do Memstore. Definir esses valores como iguais uns aos outros reduz pausas durante as gravações (também causando liberações mais frequentes) e resulta em um melhor desempenho de gravação.

Definir o 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 habilitada (true), essa configuração impede a fragmentação de heap durante uma operação pesada de gravação. O valor padrão é true.

hbase.hregion.memstore.mslab.enabled.

Próximas etapas