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
Crie este 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 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.json
de . (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
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>'
Exclua a
hbase: namespace
entrada. Essa entrada pode ser o mesmo erro que está sendo relatado quando ahbase: namespace
tabela é verificada.Reinicie o HMaster ativo da interface do usuário do Ambari para exibir o HBase no estado de execução.
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
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
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.
Acesse a interface do usuário do Ambari, vá para HBase -> Configs -> Settings, na seção Timeouts, altere o valor de Zookeeper Session Timeout.
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 HBasezookeeper.session.timeout
.Key: maxSessionTimeout Value: 120000
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.