Condividi tramite


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

  1. Creare questa directory fittizia usando il comando sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. 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

  1. 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>'
    
  2. Eliminare la voce hbase: namespace. Questa voce potrebbe corrispondere all'errore segnalato durante l'analisi della tabella hbase: namespace.

  3. Riavviare Active HMaster dall'interfaccia utente di Ambari per ripristinare lo stato di esecuzione di HBase.

  4. 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

  1. 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  
    
  2. 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.

  1. Accedere all'interfaccia utente di Ambari, passare a HBase -> Configs -> Settings, nella sezione Timeouts modificare il valore del timeout della sessione di ZooKeeper.

  2. 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 HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. 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.