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.
Para modificar, navegue até o painel Advanced HBase-env na guia HBase Configs e localize a
HBASE_HEAPSIZE
configuração.Altere o valor padrão para 5.000 MB.
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.
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.
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.
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.
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
.
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.