Che cos'è Apache Storm in Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm è un sistema di calcolo distribuito, a tolleranza di errore e open source.Apache Storm is a distributed, fault-tolerant, open-source computation system. È possibile usare Storm per elaborare i flussi di dati in tempo reale con Apache Hadoop.You can use Storm to process streams of data in real time with Apache Hadoop. Le soluzioni Storm possono fornire anche l'elaborazione garantita dei dati, che consente di ripetere l'operazione per i dati non elaborati correttamente la prima volta.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that wasn't successfully processed the first time.

Perché usare Apache Storm in HDInsight?Why use Apache Storm on HDInsight?

Storm in HDInsight offre le funzionalità seguenti:Storm on HDInsight provides the following features:

  • Contratto di servizio (SLA) per il 99% del tempo di attività di Storm: Storm in HDInsight viene fornito con supporto completo continuo.99% Service Level Agreement (SLA) on Storm uptime: Storm on HDInsight comes with full continuous support. Storm in HDInsight offre anche un contratto di servizio con disponibilità del 99,9%.Storm on HDInsight also has an SLA of 99.9 percent. Questo significa che Microsoft garantisce che un cluster Storm avrà connettività esterna per almeno il 99,9% del tempo.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time. Per altre informazioni, vedere il supporto di Azure.For more information, see Azure support. Vedere anche il documento Contratto di servizio per HDInsight.See also, SLA information for HDInsight document.

  • Può essere personalizzato facilmente eseguendo script nel cluster Storm durante o dopo la creazione.Supports easy customization by running scripts against a Storm cluster during or after creation. Per altre informazioni, vedere Personalizzare cluster HDInsight mediante l'azione script.For more information, see Customize HDInsight clusters using script action.

  • Creare soluzioni in più lingue: È possibile scrivere i componenti Storm nel linguaggio preferito, ad esempio Java, C# e Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integra Visual Studio con HDInsight per lo sviluppo, la gestione e il monitoraggio di topologie C#.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Per altre informazioni, vedere Sviluppare topologie C# per Storm con gli strumenti di HDInsight per Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Supporta l'interfaccia Java Trident.Supports the Trident Java interface. È possibile creare topologie Storm che supportano l'elaborazione di tipo exactly-once dei messaggi, la persistenza transazionale del datastore e un insieme di operazioni di analisi di flusso di uso comune.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Scalabilità dinamica: È possibile aggiungere o rimuovere i nodi di lavoro senza impatto sull'esecuzione delle topologie Storm.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies. Disattivare e riattivare le topologie in esecuzione per sfruttare i vantaggi di nuovi nodi aggiunti tramite le operazioni di scalabilità.Deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.

  • Creare pipeline di flusso con più servizi di Azure: Storm in HDInsight si integra con altri servizi di Azure,Create streaming pipelines using multiple Azure services: Storm on HDInsight integrates with other Azure services. ad esempio Hub eventi, database SQL, Archiviazione di Azure e Azure Data Lake Storage.Such as Event Hubs, SQL Database, Azure Storage, and Azure Data Lake Storage. Per una soluzione di esempio che si integra con i servizi di Azure, vedere Elaborare eventi di Hub eventi con Apache Storm in HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Per un elenco delle società che usano Apache Storm per le loro soluzioni di analisi in tempo reale, vedere l'articolo relativo alle società che usano Apache Storm.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Per iniziare a usare Storm, vedere Creare e monitorare una topologia Apache Storm in Azure HDInsight.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Funzionamento di Apache StormHow does Apache Storm work

Storm esegue topologie al posto dei processi Apache Hadoop MapReduce con cui l'utente ha familiarità.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Le topologie Storm sono costituite da più componenti disposti in un grafo aciclico diretto (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). I componenti del grafo scambiano flussi di dati.Data flows between the components in the graph. Ogni componente utilizza uno o più flussi di dati e, facoltativamente, trasmette uno o più flussi.Each component consumes one or more data streams, and can optionally emit one or more streams. Il diagramma seguente illustra il flusso dei dati tra i componenti in una topologia di conteggio parole di base:The following diagram illustrates how data flows between components in a basic word-count topology:

Esempio di disposizione dei componenti in una topologia Storm

  • I componenti spout inseriscono i dati in una topologiaSpout components bring data into a topology. trasmettendo uno o più flussi nella topologia stessa.They emit one or more streams into the topology.

  • I componenti bolt usano i flussi trasmessi dagli spout o da altri bolt.Bolt components consume streams emitted from spouts or other bolts. Facoltativamente, i bolt possono trasmettere flussi nella topologia.Bolts might optionally emit streams into the topology. I bolt sono anche responsabili della scrittura dei dati in un archivio o servizio esterno, ad esempio HDFS, Kafka o HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

AffidabilitàReliability

Apache Storm garantisce l'elaborazione completa di ogni messaggio in arrivo, anche se l'analisi dei dati è distribuita tra centinaia di nodi.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Il nodo Nimbus offre funzionalità analoghe a quelle di Apache Hadoop JobTracker.The Nimbus node provides functionality similar to the Apache Hadoop JobTracker. Nimbus assegna attività ad altri nodi di un cluster tramite Apache ZooKeeper.Nimbus assigns tasks to other nodes in a cluster through Apache ZooKeeper. I nodi Zookeeper assicurano il coordinamento del cluster e agevolano la comunicazione tra Nimbus e il processo Supervisor nei nodi di lavoro.Zookeeper nodes provide coordination for a cluster and assist communication between Nimbus and the Supervisor process on the worker nodes. Se un nodo di elaborazione si arresta, il nodo Nimbus riceve una notifica e provvede ad assegnare l'attività e i dati associati a un altro nodo.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

La configurazione predefinita per i cluster Apache Storm prevede un solo nodo Nimbus.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm in HDInsight prevede invece due nodi Nimbus.Storm on HDInsight provides two Nimbus nodes. In caso di errore del nodo primario, il cluster Storm passa a quello secondario mentre il nodo primario viene ripristinato.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Il diagramma seguente illustra la configurazione del flusso di attività per Storm in HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Diagramma di Nimbus, Zookeeper e Supervisor

Semplicità d'usoEase of use

UsoUse DescrizioneDescription
Connettività Secure Shell (SSH)Secure Shell (SSH) connectivity è possibile accedere ai nodi head del cluster Storm tramite Internet usando SSH.You can access the head nodes of your Storm cluster over the Internet by using SSH. È possibile eseguire comandi direttamente nel cluster tramite SSH.You can run commands directly on your cluster by using SSH. Per altre informazioni, vedere Usare SSH con HDInsight.For more information, see Use SSH with HDInsight.
Connettività WebWeb connectivity tutti i cluster HDInsight offrono l'interfaccia utente Web Ambari,All HDInsight clusters provide the Ambari web UI. che consente di monitorare, configurare e gestire facilmente i servizi nel cluster tramite l'interfaccia utente Web Ambari.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. I cluster Storm offrono anche l'interfaccia utente di Storm.Storm clusters also provide the Storm UI. che consente di monitorare e gestire le topologie Storm in esecuzione dal browser.You can monitor and manage running Storm topologies from your browser by using the Storm UI. Per altre informazioni, vedere Gestire HDInsight usando l'interfaccia utente Web Apache Ambari e Monitorare e gestire usando l'interfaccia utente di Apache Storm.For more information, see the Manage HDInsight using the Apache Ambari Web UI and Monitor and manage using the Apache Storm UI documents.
Azure PowerShell e interfaccia della riga di comando di AzureAzure PowerShell and Azure CLI Sia Azure PowerShell che l'interfaccia della riga di comando di Azure includono utilità della riga di comando che è possibile usare dal sistema client per operazioni con HDInsight e altri servizi di Azure.PowerShell and Azure CLI both provide command-line utilities that you can use from your client system to work with HDInsight and other Azure services.
Integrazione di Visual StudioVisual Studio integration Strumenti Azure Data Lake per Visual Studio include modelli di progetto per la creazione di topologie Storm C# con il framework SCP.NET.Azure Data Lake Tools for Visual Studio include project templates for creating C# Storm topologies by using the SCP.NET framework. Strumenti Data Lake include anche strumenti per distribuire, monitorare e gestire soluzioni con Storm in HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight. Per altre informazioni, vedere Sviluppare topologie C# per Storm con gli strumenti di HDInsight per Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integrazione con altri servizi di AzureIntegration with other Azure services

Casi d'uso di Apache StormApache Storm use cases

Di seguito sono descritti alcuni scenari comuni in cui è possibile usare Storm in HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet delle coseInternet of Things (IoT)
  • Rilevamento delle frodiFraud detection
  • Analisi di social mediaSocial analytics
  • Estrazione, trasformazione e caricamento (ETL)Extraction, transformation, and loading (ETL)
  • Monitoraggio della reteNetwork monitoring
  • RicercaSearch
  • Mobile EngagementMobile engagement

Per informazioni sugli scenari reali, vedere il documento How companies are using Apache Storm (Uso di Apache Storm nelle aziende).For information about real-world scenarios, see the How companies are using Apache Storm document.

SviluppoDevelopment

Gli sviluppatori .NET possono progettare e implementare topologie in C# usando Strumenti Azure Data Lake per Visual Studio..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. È inoltre possibile creare topologie ibride che usano componenti Java e C#.You can also create hybrid topologies that use Java and C# components. Per altre informazioni, vedere Sviluppare topologie C# per Apache Storm in HDInsight tramite Visual Studio.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

È anche possibile sviluppare soluzioni Java usando l'IDE preferito.You can also develop Java solutions by using the IDE of your choice. Per altre informazioni, vedere Sviluppare topologie Java per Apache Storm in HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Per sviluppare componenti Storm, è possibile usare anche Python.Python can also be used to develop Storm components. Per altre informazioni, vedere Sviluppare topologie Apache Storm usando Python in HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Modelli di sviluppo comuniCommon development patterns

Elaborazione garantita dei messaggiGuaranteed message processing

Apache Storm può offrire diversi livelli di elaborazione garantita dei messaggi.Apache Storm can provide different levels of guaranteed message processing. Un'applicazione Storm di base garantisce, ad esempio, un'elaborazione at-least-once, mentre Trident può garantire un'elaborazione exactly-once.For example, a basic Storm application guarantees at-least-once processing, and Trident can guarantee exactly once processing. Vedere la sezione sulle garanzie relative all'elaborazione dati nel sito Web apache.org.See Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Un modello comune prevede la lettura di una tupla di input, la generazione di zero o più tuple e la conferma della tupla di input subito dopo la fine del metodo di esecuzione.The pattern of reading an input tuple, emitting zero or more tuples, and then confirming the input tuple immediately at the end of the execute method is common. Storm mette a disposizione l'interfaccia IBasicBolt per automatizzarlo.Storm provides the IBasicBolt interface to automate this pattern.

JoinJoins

La modalità di unione dei flussi di dati varia a seconda delle applicazioni.How data streams are joined varies between applications. È possibile, ad esempio, creare un join di ogni tupla da più flussi in un unico nuovo flusso oppure creare un solo join di più batch di tuple per una specifica finestra.For example, you can join each tuple from multiple streams into one new stream, or join only batches of tuples for a specific window. In entrambi i casi è possibile creare un join tramite fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. Il raggruppamento dei campi permette di definire il modo in cui le tuple vengono indirizzate ai bolt.Field grouping is a way of defining how tuples are routed to bolts.

Nell'esempio Java seguente, fieldsGrouping viene usato per indirizzare le tuple originate dai componenti "1", "2" e "3" al bolt MyJoiner:In the following Java example, fieldsGrouping is used to route tuples that originate from components "1", "2", and "3" to the MyJoiner bolt:

builder.setBolt("join", new MyJoiner(), parallelism) .fieldsGrouping("1", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("2", new Fields("joinfield1", "joinfield2")) .fieldsGrouping("3", new Fields("joinfield1", "joinfield2"));

BatchBatches

Apache Storm include un meccanismo a tempo interno noto come "tupla tick".Apache Storm provides an internal timing mechanism known as a "tick tuple." È possibile impostare la frequenza con cui viene trasmessa una tupla tick nella topologia.You can set how often a tick tuple is emitted in your topology.

Per un esempio dell'uso di una tupla tick da un componente C#, vedere PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CacheCaches

La memorizzazione nella cache viene spesso usata come meccanismo per velocizzare l'elaborazione perché conserva in memoria le risorse usate di frequente.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Poiché una topologia viene distribuita in più nodi e in più processi all'interno di ogni nodo, è consigliabile usare fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Usare fieldsGrouping per garantire che le tuple contenenti i campi usati per la ricerca nella cache vengano sempre indirizzate allo stesso processo.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Questa funzionalità di raggruppamento evita la duplicazione delle voci della cache nei processi.This grouping functionality avoids duplication of cache entries across processes.

Flusso di "primi N"Stream "top N"

Quando la topologia dipende dal calcolo di un valore "primi N", calcolare tale valore in parallelo.When your topology depends on calculating a top N value, calculate the top N value in parallel. Unire quindi l'output di tali calcoli in un valore globale.Then merge the output from those calculations into a global value. A tale scopo, è possibile usare fieldsGrouping per l'indirizzamento per campo per l'elaborazione parallela.This operation can be done by using fieldsGrouping to route by field for parallel processing. Quindi eseguire l'indirizzamento a un bolt che determina globalmente il valore "primi N".Then you can route to a bolt that globally determines the top N value.

Per un esempio di calcolo di un valore "primi N", vedere RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

RegistrazioneLogging

Storm usa Apache Log4j 2 per registrare le informazioni.Storm uses Apache Log4j 2 to log information. Per impostazione predefinita viene registrata una grande quantità di dati e può essere difficile esaminare le informazioni.By default, a large amount of data is logged, and it can be difficult to sort through the information. È possibile includere un file di configurazione della registrazione nella topologia di Storm per definire il comportamento di registrazione.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Per un esempio di topologia che illustra come configurare la registrazione, vedere Sviluppare topologie basate su Java per un'applicazione di base per il conteggio di parole con Apache Storm e Maven in HDInsight .For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Passaggi successiviNext steps

Per altre informazioni sulle soluzioni di analisi in tempo reale con Apache Storm in HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: