O Apache HBase Master (HMaster) não é iniciado no Azure HDInsight

Este artigo descreve as etapas de solução de problemas e possíveis soluções para problemas durante a interação com clusters do Azure HDInsight.

Cenário: Master startup cannot progress, in holding-pattern until region comes online

Problema

O HMaster falha ao iniciar devido ao seguinte aviso:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Por exemplo, os valores de parâmetro podem variar na mensagem real:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Causa

O HMaster verifica o diretório WAL nos servidores de região antes de colocar novamente as regiões online OPEN. Nesse caso, se esse diretório não estava presente, ele não estava sendo iniciado

Resolução

  1. Crie esse diretório fictício usando o comando: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Reinicie o serviço HMaster da interface do usuário do Ambari.

Se você estiver usando hbase-2.x, confira mais informações sobre como usar hbck2 para atribuir namespace e tabela meta

Cenário: Falha de renomeação atômica

Problema

Arquivos inesperados identificados durante o processo de inicialização.

Causa

Durante o processo de inicialização, o HMaster executa muitas etapas de inicialização, incluindo a movimentação de dados da pasta Scratch (.tmp) para a pasta de dados. O HMaster também procura na pasta de logs write-ahead (WALs) para ver se há quaisquer servidores de região sem resposta.

HMaster faz um comando de lista básica nas pastas WAL. Se, a qualquer momento, o HMaster detectar um arquivo inesperado em qualquer uma dessas pastas, ele lançará uma exceção e não iniciará.

Resolução

Verifique a pilha de chamadas e tente determinar qual pasta pode estar causando o problema (por exemplo, pode ser a pasta WAL ou a pasta .tmp). Em seguida, no Gerenciador de Armazenamento do Azure ou usando comandos do HDFS, tente localizar o arquivo problemático. Normalmente, esse arquivo é chamado de *-renamePending.json. (O arquivo *-renamePending.json é um arquivo de diário usado para implementar a operação de renomeação atômica no driver WASB. Devido a bugs nessa implementação, esses arquivos podem ser deixados após a falha do processo etc.) Force a exclusão desse arquivo no Gerenciador de Nuvem ou usando comandos do HDFS.

Às vezes, pode haver um arquivo temporário com um nome parecido com $$$.$$$ nesse local. Você deve usar o comando ls de HDFS para ver esse arquivo; não é possível ver o arquivo no Gerenciador de Armazenamento do Azure. Para excluir este arquivo, use o comando hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$ de HDFS.

Após a execução desses comandos, o HMaster deve iniciar imediatamente.


Cenário: nenhum endereço de servidor listado

Problema

Você pode ver uma mensagem que indica que a tabela hbase: meta não está online. Executar hbck pode informar que hbase: meta table replicaId 0 is not found on any region. nos logs do HMaster, você pode ver a mensagem: No server address listed in hbase: meta for region hbase: backup <region name>.

Causa

O HMaster não pôde inicializar após a reinicialização do HBase.

Resolução

  1. No shell do HBase, insira os comandos a seguir (altere os valores reais conforme aplicável):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Exclua a entrada hbase: namespace. Essa entrada pode ser o mesmo erro que está sendo relatado quando a tabela hbase: namespace é verificada.

  3. Reinicie o HMaster ativo da interface do usuário do Ambari para exibir o HBase em estado de execução.

  4. No shell do HBase, execute o seguinte comando para mostrar todas as tabelas offline:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Cenário: java.io.IOException: Timedout

Problema

O HMaster atinge o tempo limite com uma exceção fatal semelhante a java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Causa

Você pode enfrentar esse problema se tiver muitas tabelas e regiões que não foram liberadas ao reiniciar os serviços do HMaster. O tempo limite é um problema conhecido do HMaster. Tarefas de inicialização de cluster geral podem levar muito tempo. O HMaster desliga s a tabela namespace ainda não tiver sido atribuída. As tarefas de inicialização demoradas ocorrem quando há uma grande quantidade de dados não liberado e um tempo máximo de cinco minutos não é suficiente.

Resolução

  1. Na interface do usuário do Apache Ambari, acesse HBase>Configurações. No arquivo hbase-site.xml personalizado, adicione a seguinte configuração:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Reinicie os serviços necessários (HMaster e possivelmente outros serviços do HBase).


Cenário: reinicializações frequentes do servidor de região

Problema

Os nós são reinicializados periodicamente. Nos logs do servidor de região, você pode ver entradas semelhantes a:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Causa: tempo limite da sessão do zookeeper

Pausa longa do GC da JVM do regionserver. A pausa faz com que regionserver não seja responsivo e não consiga enviar sinais para o HMaster dentro do tempo limite do zookeeper de 40 segundos. HMaster acredita que regionserver está morto, anula regionserver e reinicia.

Para resolver isso, altere o tempo limite da sessão do Zookeeper, não apenas alterando a configuração hbase-site de zookeeper.session.timeout, mas também a configuração do Zookeeper zoo.cfg de maxSessionTimeout.

  1. Acesse a interface do usuário do Ambari, acesse HBase -> Configs -> Configurações e, na seção Tempos limite, altere o valor de tempo limite de sessão do Zookeeper.

  2. Acesse a interface do usuário do Ambari, acesse Zookeeper -> Configs -> Personalizadozoo.cfg, adicione/altere a configuração a seguir. Certifique-se de que o valor seja o mesmo no HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. Reinicie os serviços necessários.

Causa: RegionServer sobrecarregado

Siga o Número de regiões por RS – limite superior para calcular o limite superior. Por exemplo: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Para resolver isso, escale verticalmente o cluster do HBase.


Cenário: falha na divisão de log

Problema

O HMaster não apareceu no cluster do HBase.

Causa

HDFS e HBase desconfiguradas para uma conta de armazenamento secundária.

Resolução

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase e reinicie os serviços no Ambari.


Próximas etapas

Se você não encontrou seu problema ou não conseguiu resolver seu problema, visite um dos seguintes canais para obter mais suporte:

  • Obtenha respostas de especialistas do Azure por meio do Suporte da Comunidade do Azure.

  • Conecte-se com @AzureSupport – a conta oficial do Microsoft Azure para aprimorar a experiência do cliente. Como se conectar à comunidade do Azure para os recursos certos: respostas, suporte e especialistas.

  • Se precisar de mais ajuda, poderá enviar uma solicitação de suporte do portal do Azure. Selecione Suporte na barra de menus ou abra o hub Ajuda + suporte. Para obter informações mais detalhadas, consulte Como criar uma solicitação de Suporte do Azure. O acesso ao Gerenciamento de assinaturas e ao suporte de cobrança está incluído na sua assinatura do Microsoft Azure, e o suporte técnico é fornecido por meio de um dos Planos de suporte do Azure.