Non è possibile avviare Apache HBase Master (HMaster) in Azure HDInsight
Questo articolo descrive le procedure di risoluzione dei problemi e le possibili soluzioni per i problemi che si verificano quando si interagisce con i cluster Azure HDInsight.
Scenario: Master startup cannot progress, in holding-pattern until region comes online
Problema
HMaster non viene avviato a causa dell'avviso seguente:
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.
Ad esempio, i valori dei parametri possono variare nel messaggio effettivo:
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
HMaster controlla la directory WAL nei server di area prima di riportare online le aree OPEN. In questo caso, se la directory non era presente, l'avvio non riesce
Risoluzione
Creare questa directory fittizia usando il comando
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
Riavviare il servizio HMaster dall'interfaccia utente di Ambari.
Se si usa hbase-2.x, vedere altre informazioni in Come usare hbck2 per assegnare spazi dei nomi e la tabella meta
Scenario: Errore di ridenominazione atomica
Problema
File imprevisti identificati durante il processo di avvio.
Causa
Durante il processo di avvio, HMaster esegue molti passaggi di inizializzazione, tra cui lo spostamento dei dati dalla cartella dei file temporanei (TMP) alla cartella dei dati. HMaster verifica anche nella cartella dei log write-ahead se sono presenti server di area che non rispondono.
HMaster esegue un comando di elenco di base nelle cartelle WAL. Se in qualunque momento rileva un file imprevisto in una delle cartelle, HMaster genera un'eccezione e non viene avviato.
Risoluzione
Controllare lo stack di chiamate e provare a determinare quale cartella potrebbe causare il problema, ad esempio la cartella dei log write-ahead o quella dei file temporanei. In Azure Storage Explorer o con comandi HDFS provare quindi a individuare il file problematico, In genere, questo file viene chiamato *-renamePending.json
. *-renamePending.json
è un file journal usato per implementare l'operazione di ridenominazione atomica nel driver WASB. A causa di alcuni bug in questa implementazione, questi file possono essere ancora presenti in seguito ad arresti anomali dei processi e così via. Forzare l'eliminazione del file in Cloud Explorer o con comandi HDFS.
In questo percorso potrebbe essere talvolta presente anche un file con un nome simile a $$$.$$$
. Per visualizzare questo file è necessario usare il comando HDFS ls
. Non viene visualizzato in Azure Storage Explorer. Per eliminare il file, usare il comando HDFS hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$
.
Dopo l'esecuzione di questi comandi, HMaster dovrebbe essere avviato immediatamente.
Scenario: nessun indirizzo del server elencato
Problema
Potrebbe essere visualizzato un messaggio che indica che la tabella hbase: meta
non è online. L'esecuzione di hbck
potrebbe segnalare che hbase: meta table replicaId 0 is not found on any region.
. Nei log HMaster potrebbe essere visualizzato il messaggio: No server address listed in hbase: meta for region hbase: backup <region name>
.
Causa
L'inizializzazione di HMaster non è riuscita dopo il riavvio di HBase.
Risoluzione
Nella shell di HBase digitare i comandi seguenti, modificando i valori effettivi a seconda dei casi:
scan 'hbase:meta' delete 'hbase:meta','hbase:backup <region name>','<column name>'
Eliminare la voce
hbase: namespace
. Questa voce potrebbe corrispondere all'errore segnalato durante l'analisi della tabellahbase: namespace
.Riavviare Active HMaster dall'interfaccia utente di Ambari per ripristinare lo stato di esecuzione di HBase.
Nella shell di HBase eseguire questo comando per rendere disponibili tutte le tabelle offline:
hbase hbck -ignorePreCheckPermission -fixAssignments
Scenario: java.io.IOException: Timedout
Problema
Timeout HMaster con eccezione irreversibile simile a: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned
.
Causa
Questo problema potrebbe verificarsi se al riavvio dei servizi HMaster sono presenti diverse tabelle e aree che non sono state scaricate. Il timeout è un difetto noto di HMaster. Le attività di avvio generali del cluster possono richiedere molto tempo. HMaster si arresta perché la tabella namespace non è ancora stata assegnata. Le attività di avvio prolungate si verificano nelle situazioni in cui esiste una grande quantità di dati non scaricati e un timeout di cinque minuti non è sufficiente.
Risoluzione
Nell'interfaccia utente di Apache Ambari passare a HBase>Configs. Nel file
hbase-site.xml
personalizzato aggiungere l'impostazione seguente:Key: hbase.master.namespace.init.timeout Value: 2400000
Riavviare i servizi necessari (HMaster e possibilmente altri servizi HBase).
Scenario: riavvii frequenti del server di area
Problema
I nodi vengono riavviati periodicamente. Dai log del server di area potrebbero essere visualizzate voci simili 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: timeout della sessione di ZooKeeper
Pausa prolungata di regionserver
per GC JVM. La pausa fa sì che regionserver
non risponda e non sia in grado di inviare l'heartbeat a HMaster entro il timeout di 40 s della sessione di ZooKeeper. HMaster ritiene che regionserver
sia inattivo, interrompe regionserver
ed esegue il riavvio.
Per attenuare il problema, modificare il timeout della sessione di ZooKeeper. È necessario modificare non solo l'impostazione hbase-site
zookeeper.session.timeout
, ma anche l'impostazione zoo.cfg
maxSessionTimeout
di Zookeeper.
Accedere all'interfaccia utente di Ambari, passare a HBase -> Configs -> Settings, nella sezione Timeouts modificare il valore del timeout della sessione di ZooKeeper.
Accedere all'interfaccia utente di Ambari, passare a Zookeeper -> Configs -> Custom
zoo.cfg
, aggiungere/modificare l'impostazione seguente. Assicurarsi che il valore sia uguale a HBasezookeeper.session.timeout
.Key: maxSessionTimeout Value: 120000
Riavviare i servizi richiesti.
Causa: overload di RegionServer
Vedere Number of regions per RS - upper bound per calcolare il limite superiore.
Ad esempio: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50
Per attenuare il problema, aumentare le prestazioni del cluster HBase.
Scenario: errore di divisione del log
Problema
L'avvio di HMasters non è riuscito in un cluster HBase.
Causa
Impostazioni HDFS e HBase configurate in modo errato per un account di archiviazione secondario.
Risoluzione
set hbase.rootdir: wasb://@.blob.core.windows.net/hbase
e riavviare i servizi in Ambari.
Passaggi successivi
Se il problema riscontrato non è presente in questo elenco o se non si riesce a risolverlo, visitare uno dei canali seguenti per ottenere ulteriore assistenza:
Ricevere risposte dagli esperti di Azure tramite la pagina Supporto della community per Azure.
Connettersi con @AzureSupport, l'account ufficiale Microsoft Azure per migliorare l'esperienza del cliente. Mette in contatto la community di Azure con le risorse giuste: risposte, supporto ed esperti.
Se serve ulteriore assistenza, è possibile inviare una richiesta di supporto dal portale di Azure. Selezionare Supporto nella barra dei menu o aprire l'hub Guida e supporto. Per informazioni più dettagliate, vedere Come creare una richiesta di supporto in Azure. L'accesso al supporto per la gestione delle sottoscrizioni e la fatturazione è incluso nella sottoscrizione di Microsoft Azure e il supporto tecnico viene fornito tramite uno dei piani di supporto di Azure.