Risoluzione dei problemi di STORM

Questo articolo descrive i problemi principali che possono verificarsi quando si usano i payload di Storm in Apache Ambari unitamente alle risoluzioni.

Procedura per accedere all'interfaccia utente di Storm in un cluster

Problema:

È possibile accedere all'interfaccia utente di Storm dal browser in due modi:

Tramite l'interfaccia utente di Ambari

  1. Passare al dashboard di Ambari
  2. Selezionare Storm dall'elenco dei servizi a sinistra
  3. Selezionare l'opzione Storm UI (Interfaccia utente Storm) dal menu a discesa Collegamenti rapidi

L'interfaccia utente di Storm è accessibile dall'URL:

https://<ClusterDnsName>/stormui

esempio: https://stormcluster.azurehdinsight.net/stormui

Procedura per trasferire le informazioni sui checkpoint spout eventhub da una topologia a un'altra

Problema:

Durante lo sviluppo di topologie che leggono dagli hub eventi usando un jar spout eventhub di Storm HDInsight, è possibile distribuire una topologia con lo stesso nome in un nuovo cluster, mantenendo i dati di checkpoint vincolati a Zookeeper nel vecchio cluster?

Dove vengono archiviati i dati di checkpoint

I dati di checkpoint per gli offset vengono archiviati dallo spout EventHub in due percorsi principali di Zookeeper:

  • I checkpoint dello spout non transazionali vengono archiviati in: /eventhubspout
  • I dati dei checkpoint dello spout transazionali vengono archiviati in: /transactional

Modalità di ripristino

Gli script e le librerie da usare per esportare i dati da Zookeeper e reimportarli con un nuovo nome sono disponibili all'indirizzo: https://github.com/hdinsight/hdinsight-storm-examples/tree/master/tools/zkdatatool-1.0

La cartella lib ha file Jar che contengono l'implementazione per l'operazione di importazione/esportazione. La cartella bash contiene uno script che mostra come esportare i dati dal server Zookeeper in un cluster vecchio e reimportarli nel nuovo cluster del server Zookeeper.

È necessario eseguire lo script stormmeta.sh dai nodi Zookeeper per importare/esportare i dati. È necessario aggiornare lo script per correggere la stringa della versione HDP al suo interno. (HDInsight sta cercando di rendere questi script generici per consentire la loro esecuzione da qualsiasi nodo nel cluster ed evitare che debbano essere modificati dall'utente finale)

Il comando di esportazione scrive i metadati in un percorso HDFS (archivio BLOB o ADSL) nella posizione specificata.

esempi

Esportazione dei metadati dell'offset:
  1. SSH nel cluster Zookeeper del vecchio cluster da cui è necessario esportare l'offset dei checkpoint.
  2. Eseguire il seguente comando (dopo aver aggiornato la stringa della versione HDP) per esportare i dati dell'offset Zookeeper nel percorso HDFS /stormmetadta/zkdata.
   java -cp ./*:/etc/hadoop/conf/*:/usr/hdp/2.5.1.0-56/hadoop/*:/usr/hdp/2.5.1.0-56/hadoop/lib/*:/usr/hdp/2.5.1.0-56/hadoop-hdfs/*:/usr/hdp/2.5.1.0-56/hadoop-hdfs/lib/*:/etc/failover-controller/conf/*:/etc/hadoop/* com.microsoft.storm.zkdatatool.ZkdataImporter export /eventhubspout /stormmetadata/zkdata
Importare i metadati dell'offset
  1. SSH nel cluster Zookeeper del vecchio cluster da cui è necessario esportare l'offset dei checkpoint.
  2. Eseguire il seguente comando (dopo aver aggiornato la stringa della versione HDP) per importare i dati dell'offset Zookeeper dal percorso HDFS /stormmetadata/zkdata nel cluster di destinazione del server Zookeeper).
   java -cp ./*:/etc/hadoop/conf/*:/usr/hdp/2.5.1.0-56/hadoop/*:/usr/hdp/2.5.1.0-56/hadoop/lib/*:/usr/hdp/2.5.1.0-56/hadoop-hdfs/*:/usr/hdp/2.5.1.0-56/hadoop-hdfs/lib/*:/etc/failover-controller/conf/*:/etc/hadoop/* com.microsoft.storm.zkdatatool.ZkdataImporter import /eventhubspout /home/sshadmin/zkdata
Eliminare i metadati dell'offset per permettere alle topologie di avviare l'elaborazione dei dati (dall'inizio o dal timestamp scelto dall'utente)
  1. SSH nel cluster Zookeeper del vecchio cluster da cui è necessario esportare l'offset dei checkpoint.
  2. Eseguire il seguente comando (dopo aver aggiornato la stringa della versione HDP) per eliminare tutti i dati dell'offset Zookeeper per il cluster corrente.
   java -cp ./*:/etc/hadoop/conf/*:/usr/hdp/2.5.1.0-56/hadoop/*:/usr/hdp/2.5.1.0-56/hadoop/lib/*:/usr/hdp/2.5.1.0-56/hadoop-hdfs/*:/usr/hdp/2.5.1.0-56/hadoop-hdfs/lib/*:/etc/failover-controller/conf/*:/etc/hadoop/* com.microsoft.storm.zkdatatool.ZkdataImporter delete /eventhubspout

Individuare i binari Storm in un cluster

Problema:

Conoscere la posizione dei binari per i servizi Storm nel cluster HDInsight

Procedura per la risoluzione:

La posizione dei binari Storm per lo stack HDP corrente è: /usr/hdp/current/storm-client

Questa posizione è la stessa per i nodi head e dei ruoli di lavoro.

È possibile che ci siano più binari specifici della versione HDP in /usr/hdp (esempi: /usr/hdp/2.5.0.1233/storm)

Tuttavia, /usr/hdp/current/storm-client è collegato all'ultima versione eseguita nel cluster.

Altre informazioni:

Connettersi al cluster HDInsight Cluster usando SSH Storm

Procedura per determinare la topologia di distribuzione di un cluster Storm

Problema:

Identificare tutti i componenti installati in HDInsight Storm.

Il cluster Storm comprende 4 categorie di nodi

  1. Gateway
  2. Nodi head
  3. Nodi Zookeeper
  4. Nodi di lavoro

Nodi gateway

È un servizio gateway e proxy inverso che consente il pubblico accesso al servizio di gestione Ambari attivo e gestisce l'elezione di Ambari Leader.

Nodi Zookeeper

HDInsight viene offerto con un quorum Zookeeper di 3 nodi. La dimensione del quorum è fissa e non può essere configurata.

I servizi Storm nel cluster sono configurati per usare automaticamente il quorum ZK.

Nodi head

I nodi head di Storm eseguono i seguenti servizi:

  1. Nimbus
  2. Server Ambari
  3. Server delle metriche Ambari
  4. Agente di raccolta delle metriche Ambari

Nodi di lavoro

I nodi di lavoro di Storm eseguono i seguenti servizi:

  1. Supervisore
  2. JVM di lavoro per l'esecuzione di topologie
  3. Agente Ambari

Procedura per individuare i binari Storm-EventHub-Spout per lo sviluppo

Problema:

Dove trovare altre informazioni sull'uso dei jar spout eventhub di Storm per la topologia in uso.

Articoli MSDN sulle procedure

Topologia basata su Java

https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-storm-develop-java-event-hub-topology

Topologia basata su C# (quando si usa Mono in cluster HDI 3.4+ Linux Storm)

https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-storm-develop-csharp-event-hub-topology

Binari spout EventHub Storm più recenti per cluster HDI3.5+Linux Storm

Rivedere https://github.com/hdinsight/mvn-repo/blob/master/README.md per informazioni su come usare lo spout eventhub Storm più recente che funziona con i cluster HDI3.5+ Linux Storm.

Esempi di codice sorgente:

https://github.com/Azure-Samples/hdinsight-java-storm-eventhub

Individuare i file di configurazione Storm Log4J nei cluster

Problema:

Identificare i file di configurazione Log4J per i servizi Storm.

Nei nodi head:

La configurazione Log4J di Nimbus viene letta da: /usr/hdp//storm/log4j2/cluster.xml

Nodi di lavoro

La configurazione Log4J di Supervisore viene letta da: /usr/hdp//storm/log4j2/cluster.xml

Il file di configurazione Log4J di lavoro viene letto da: /usr/hdp//storm/log4j2/worker.xml

Esempio: /usr/hdp/2.6.0.2-76/storm/log4j2/cluster.xml /usr/hdp/2.6.0.2-76/storm/log4j2/worker.xml