Falha ao iniciar o Apache HBase Master (HMaster) no Azure HDInsight
Este artigo descreve os passos de resolução de problemas e possíveis resoluções de problemas ao interagir com clusters do Azure HDInsight.
Cenário: Master startup cannot progress, in holding-pattern until region comes online
Problema
O HMaster não inicia 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.
Causa
O HMaster verifica o diretório WAL nos servidores de região antes de colocar as regiões OPEN online. Neste caso, se o diretório não estava presente, não estava a começar
Resolução
Crie este diretório fictício com o comando :
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
Reinicie o serviço HMaster a partir da IU do Ambari.
Se estiver a utilizar hbase-2.x, veja mais informações sobre como utilizar hbck2 para atribuir espaço de nomes e meta tabela
Cenário: Falha ao mudar o nome atómico
Problema
Ficheiros inesperados identificados durante o processo de arranque.
Causa
Durante o processo de arranque, o HMaster executa muitos passos de inicialização, incluindo mover dados do zero (.tmp) para a pasta de dados. O HMaster também analisa a pasta de registos de escrita antecipada (WAL) para ver se existem servidores de região sem resposta.
O HMaster faz um comando de lista básico nas pastas WAL. Se, a qualquer momento, o HMaster vir um ficheiro inesperado em qualquer uma destas pastas, gera uma exceção e não inicia.
Resolução
Verifique a pilha de chamadas e tente determinar qual a pasta que pode estar a causar o problema (por exemplo, pode ser a pasta WAL ou a pasta .tmp). Em seguida, no Explorador de Armazenamento do Azure ou com comandos HDFS, tente localizar o ficheiro de problema. Normalmente, este ficheiro é denominado *-renamePending.json
. (O *-renamePending.json
ficheiro é um ficheiro de diário que é utilizado para implementar a operação de mudança de nome atómica no controlador WASB. Devido a erros nesta implementação, estes ficheiros podem ser deixados de lado após a falha do processo, etc.) Force a eliminação deste ficheiro no Cloud Explorer ou através de comandos HDFS.
Por vezes, também pode haver um ficheiro temporário com o nome algo como $$$.$$$
nesta localização. Tem de utilizar o comando HDFS ls
para ver este ficheiro; não pode ver o ficheiro no Explorador de Armazenamento do Azure. Para eliminar este ficheiro, utilize o comando hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$
HDFS .
Depois de executar estes comandos, o HMaster deve ser iniciado imediatamente.
Cenário: Nenhum endereço de servidor listado
Problema
Poderá ver uma mensagem que indica que a hbase: meta
tabela não está online. A execução hbck
poderá indicar que hbase: meta table replicaId 0 is not found on any region.
Nos registos do HMaster, poderá ver a mensagem: No server address listed in hbase: meta for region hbase: backup <region name>
.
Causa
O HMaster não conseguiu inicializar depois de reiniciar o HBase.
Resolução
Na shell do HBase, introduza os seguintes comandos (altere os valores reais conforme aplicável):
scan 'hbase:meta' delete 'hbase:meta','hbase:backup <region name>','<column name>'
Elimine a
hbase: namespace
entrada. Esta entrada pode ser o mesmo erro que está a ser comunicado quando ahbase: namespace
tabela é analisada.Reinicie o HMaster ativo a partir da IU do Ambari para apresentar o HBase no estado de execução.
Na shell do HBase, para apresentar todas as tabelas offline, execute o seguinte comando:
hbase hbck -ignorePreCheckPermission -fixAssignments
Cenário: java.io.IOException: Timedout
Problema
O HMaster excede o limite de tempo com uma exceção fatal semelhante a: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned
.
Causa
Poderá deparar-se com este problema se tiver muitas tabelas e regiões que não foram removidas da cache quando reiniciar os seus serviços HMaster. O tempo limite é um defeito conhecido com o HMaster. As tarefas gerais de arranque do cluster podem demorar muito tempo. O HMaster será encerrado se a tabela de espaço de nomes ainda não estiver atribuída. As longas tarefas de arranque ocorrem quando existe uma grande quantidade de dados não imputados e um tempo limite de cinco minutos não é suficiente.
Resolução
Na IU do Apache Ambari, aceda aConfigurações do HBase>. No ficheiro personalizado
hbase-site.xml
, adicione a seguinte definição:Key: hbase.master.namespace.init.timeout Value: 2400000
Reinicie os serviços necessários (HMaster e, possivelmente, outros serviços HBase).
Cenário: Reinícios frequentes do servidor de região
Problema
Os nós são reiniciados periodicamente. Nos registos do servidor de região, poderá 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 regionserver
do JVM GC. A pausa faz com que regionserver
não responda e não consiga enviar batimentos cardíacos para o HMaster dentro do tempo limite da sessão do zookeeper 40s. O HMaster acredita regionserver
que está morto, aborta o regionserver
e reinicia.
Para mitigar, altere o tempo limite da sessão do Zookeeper, não só hbase-site
a definiçãozookeeper.session.timeout
, mas também a definição maxSessionTimeout
zookeeperzoo.cfg
.
Aceda à IU do Ambari, aceda a HBase –> Configurações –> Definições, na secção Tempos limite, altere o valor de Tempo Limite da Sessão do Zookeeper.
Aceda à IU do Ambari, aceda a Zookeeper –> Configurações –> Personalizada
zoo.cfg
, adicione/altere a seguinte definiçã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 mitigar, aumente verticalmente o cluster do HBase.
Cenário: Falha na divisão de registos
Problema
O HMasters não conseguiu aparecer num cluster do HBase.
Causa
Definições de HDFS e HBase configuradas incorretamente 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.
Passos seguintes
Se não vir o problema ou não conseguir resolver o problema, visite um dos seguintes canais para obter mais suporte:
Obtenha respostas de especialistas do Azure através do Suporte da Comunidade do Azure.
Ligue-se ao @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, pode submeter um pedido de suporte do portal do Azure. Selecione Suporte na barra de menus ou abra o hub Ajuda + suporte . Para obter informações mais detalhadas, veja Como criar um pedido de suporte do Azure. O acesso à Gestão de Subscrições e ao suporte de faturação está incluído na sua subscrição do Microsoft Azure e o Suporte Técnico é fornecido através de um dos Planos de Suporte do Azure.