Risolvere i problemi di Storm usando Azure HDInsight

Informazioni sui problemi principali che possono verificarsi quando si usano i payload di Apache Storm in Apache Ambari unitamente alle risoluzioni.

Come accedere all'interfaccia utente di Storm in un cluster

Per accedere all'interfaccia utente di Storm da un browser, è possibile procedere in due modi:

Tramite l'interfaccia utente di Ambari

  1. Andare al dashboard di Ambari.
  2. Nell'elenco dei servizi selezionare Storm.
  3. Scegliere Storm UI (Interfaccia utente di Storm) dal menu Quick Links (Collegamenti rapidi).

È possibile accedere all'interfaccia utente di Storm all'URL seguente:

https://<nome DNS del cluster>/stormui

Esempio:

https://stormcluster.azurehdinsight.net/stormui

Come trasferire informazioni di checkpoint dello spout dell'hub eventi di Storm da una topologia all'altra

Quando si sviluppano topologie che leggono da Hub eventi di Azure usando il file JAR dello spout dell'hub eventi di HDInsight Storm, è necessario distribuire una topologia con lo stesso nome in un nuovo cluster. È tuttavia necessario conservare i dati dei checkpoint di cui è stato eseguito il commit ad Apache ZooKeeper sul vecchio cluster.

Dove vengono archiviati i dati dei checkpoint

I dati dei checkpoint per gli offset vengono archiviati dallo spout dell'hub eventi in due percorsi radice di ZooKeeper:

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

Come eseguire il ripristino

Per ottenere gli script e le librerie usati per esportare i dati da ZooKeeper e quindi importarli nuovamente in ZooKeeper con un nuovo nome, vedere gli esempi di HDInsight Storm.

La cartella lib ha file JAR che contengono l'implementazione per l'operazione di esportazione/importazione. La cartella bash contiene uno script di esempio che mostra come esportare i dati dal server ZooKeeper sul vecchio cluster e quindi reimportarli nel nuovo cluster del server ZooKeeper.

Eseguire lo script stormmeta.sh dai nodi ZooKeeper per esportare e quindi importare i dati. Aggiornare lo script alla versione corretta di Hortonworks Data Platform (HDP). A breve questi script saranno generici in HDInsight. Gli script generici possono essere eseguiti da qualsiasi nodo del cluster senza modifiche da parte dell'utente.

Il comando di esportazione scrive i metadati in un percorso Apache Hadoop Distributed File System (HDFS) (in un archivio BLOB di Azure o in un archivio di Azure Data Lake Store) nella posizione impostata.

esempi

Esportare i metadati dell'offset

  1. Usare SSH per andare al cluster ZooKeeper del vecchio cluster da cui è necessario esportare l'offset dei checkpoint.
  2. Usare il comando seguente (dopo avere 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. Usare SSH per andare al cluster ZooKeeper del vecchio cluster da cui è necessario esportare l'offset dei checkpoint.
  2. Usare il comando seguente (dopo avere aggiornato la stringa della versione HDP) per importare i dati dell'offset ZooKeeper dal percorso HDFS /stormmetadta/zkdata al 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 da un timestamp scelto dall'utente

  1. Usare SSH per andare al cluster ZooKeeper del vecchio cluster da cui è necessario esportare l'offset dei checkpoint.
  2. Usare il comando seguente (dopo avere aggiornato la stringa della versione HDP) per eliminare tutti i dati dell'offset ZooKeeper nel 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

La posizione dei file binari Storm per lo stack HDP corrente è /usr/hdp/current/storm-client. Il percorso è lo stesso sia per i nodi head che per i nodi di lavoro.

Potrebbero essere presenti più file binari per versioni HDP specifiche in /usr/hdp (ad esempio, /usr/hdp/2.5.0.1233/storm). La cartella /usr/hdp/current/storm-client è collegata alla versione più recente in esecuzione nel cluster.

Per altre informazioni, vedere Connettersi a un cluster HDInsight con SSH e Storm.

Procedura per determinare la topologia di distribuzione di un cluster Storm

Identificare prima tutti i componenti installati in HDInsight Storm. Un cluster Storm è costituito da quattro categorie di nodi:

  • Nodi gateway
  • Nodi head
  • Nodi ZooKeeper
  • Nodi di lavoro

Nodi gateway

Un nodo del gateway è un servizio gateway e proxy inverso che consente il pubblico accesso a un servizio di gestione Ambari attivo. Gestisce anche l'algoritmo di elezione di Ambari.

Nodi head

I nodi head di Storm eseguono i seguenti servizi:

  • Nimbus
  • Server Ambari
  • Server delle metriche Ambari
  • Agente di raccolta delle metriche Ambari

Nodi ZooKeeper

HDInsight viene offerto con un quorum ZooKeeper di tre nodi. La dimensione del quorum è fissa e non può essere riconfigurata.

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

Nodi di lavoro

I nodi di lavoro di Storm eseguono i seguenti servizi:

  • Supervisore
  • Java Virtual Machine (JVM) di lavoro, per le topologie in esecuzione
  • Agente Ambari

Come individuare i file binari dello spout dell'hub eventi di Storm per lo sviluppo

Per altre informazioni sull'uso dei file JAR dello spout dell'hub eventi di Storm con la topologia, vedere le risorse seguenti.

Topologia basata su Java

Elaborare eventi dell'hub eventi di Azure con Storm in HDInsight (Java)

Topologia basata su C# (Mono in cluster HDInsight 3.4+ Linux Storm)

Elaborare eventi dell'hub eventi di Azure con Storm in HDInsight (C#)

File binari dello spout dell'hub eventi di Storm più recenti per cluster HDInsight 3.5+ Linux Storm

Per informazioni su come usare lo spout dell'hub eventi di Storm più recente che utilizza i cluster HDInsight 3.5+ Linux Storm, vedere il mvn-repo.

Esempi di codice sorgente

Vedere gli esempi su come leggere e scrivere da Hub eventi di Azure usando una topologia di Apache Storm (scritta in Java) in un cluster Azure HDInsight.

Individuare i file di configurazione Storm Log4J nei cluster

Per identificare i file di configurazione di Apache Log4J per i servizi Storm.

Nei nodi head

La configurazione Log4J di Nimbus viene letta da /usr/hdp/<versione HDP>/storm/log4j2/cluster.xml.

Nei nodi di lavoro

La configurazione Log4J del supervisore viene letta da /usr/hdp/<versione HDP>/storm/log4j2/cluster.xml.

Il file di configurazione Log4J di lavoro viene letto da /usr/hdp/<versione HDP>/storm/log4j2/worker.xml.

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