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
Crie esse diretório fictício usando o comando:
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
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
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>'
Exclua a entrada
hbase: namespace
. Essa entrada pode ser o mesmo erro que está sendo relatado quando a tabelahbase: namespace
é verificada.Reinicie o HMaster ativo da interface do usuário do Ambari para exibir o HBase em estado de execução.
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
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
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
.
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.
Acesse a UI do Ambari, vá para Zookeeper -> Configs -> Custom
zoo.cfg
, adicione/altere a seguinte configuração. Certifique-se de que o valor seja o mesmo no HBasezookeeper.session.timeout
.Key: maxSessionTimeout Value: 120000
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.