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.
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
.Altere o valor padrão para 5.000 MB.
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.
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.
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.
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.
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
.
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.