Partilhar via


Apache HBase Master (HMaster) falha ao iniciar no Azure HDInsight

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

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

Problema

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 dos parâmetros 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.

Motivo

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

Resolução

  1. Crie este 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 a partir da interface do usuário do Ambari.

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

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

Problema

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

Motivo

Durante o processo de inicialização, o HMaster executa muitas etapas de inicialização, incluindo mover dados da pasta zero (.tmp) para a pasta de dados. O HMaster também examina a pasta write-ahead logs (WAL) para ver se há servidores de região que não respondem.

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

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 HDFS, tente localizar o arquivo de problema. Normalmente, esse arquivo é chamado *-renamePending.jsonde . (O *-renamePending.json arquivo é um arquivo de diário usado para implementar a operação de renomeação atômica no driver WASB. Devido a bugs nesta implementação, esses arquivos podem ser deixados após falhas de processo, e assim por diante.) Force-delete este arquivo no Cloud Explorer ou usando comandos HDFS.

Às vezes, também pode haver um arquivo temporário chamado algo como $$$.$$$ neste local. Você precisa usar o comando HDFS ls para ver esse arquivo, não é possível ver o arquivo no Gerenciador de Armazenamento do Azure. Para eliminar este ficheiro, utilize o comando hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$HDFS .

Depois de executar esses comandos, o HMaster deve ser iniciado imediatamente.


Cenário: Nenhum endereço de servidor listado

Problema

Poderá ver uma mensagem a indicar que a hbase: meta tabela não está online. A execução 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>.

Motivo

O HMaster não pôde ser inicializado após reiniciar o HBase.

Resolução

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

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

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

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

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Cenário: java.io.IOException: Timedout

Problema

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

Motivo

Você pode enfrentar esse problema se você tiver muitas tabelas e regiões que não foram liberadas quando você reiniciar os serviços HMaster. O tempo limite é um defeito conhecido com o HMaster. As tarefas gerais de inicialização do cluster podem levar muito tempo. O HMaster será desligado se a tabela de namespace ainda não estiver atribuída. As longas tarefas de inicialização acontecem quando existe uma grande quantidade de dados não liberados e um tempo limite de cinco minutos não é suficiente.

Resolução

  1. Na interface do usuário do Apache Ambari, vá para HBase>Configs. No arquivo personalizado hbase-site.xml , 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

Longa regionserver pausa na JVM GC. A pausa faz com que regionserver não responda e não seja capaz de enviar batimentos cardíacos para o HMaster dentro do tempo limite da sessão do zookeeper 40s. HMaster acredita que regionserver está morto, aborta o regionserver e reinicia.

Para atenuar, altere o tempo limite da sessão do Zookeeper, não apenas hbase-site a configuraçãozookeeper.session.timeout, mas também a configuração maxSessionTimeout do Zookeeper zoo.cfg precisam ser alteradas.

  1. Acesse a interface do usuário do Ambari, vá para HBase -> Configs -> Settings, na seção Timeouts, altere o valor de Zookeeper Session Timeout.

  2. Acesse Ambari UI, vá para Zookeeper -> Configs -> Custom zoo.cfg, adicione/altere a seguinte configuração. Certifique-se de que o valor é o mesmo que HBase zookeeper.session.timeout.

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

Causa: RegionServer sobrecarregado

Siga 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 atenuar, aumente a escala do cluster HBase.


Cenário: Falha de divisão de log

Problema

HMasters não conseguiu aparecer em um cluster HBase.

Motivo

Configurações incorretas de HDFS e HBase para uma conta de armazenamento secundária.

Resolução

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


Próximos passos

Se não viu o problema ou não conseguiu resolvê-lo, visite um dos seguintes canais para obter mais suporte:

  • Obtenha respostas de especialistas do Azure através do Suporte da Comunidade do Azure.

  • Conecte-se com o @AzureSupport - a conta oficial do Microsoft Azure para melhorar a experiência do cliente. Ligar a comunidade do Azure aos recursos certos: respostas, suporte e especialistas.

  • Se precisar de mais ajuda, você pode 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 suporte para Gestão de Subscrições e faturação está incluído na sua subscrição do Microsoft Azure e o Suporte Técnico é disponibilizado através de um dos Planos de Suporte do Azure.