Présentation d’Apache Storm sur Azure HDInsightWhat is Apache Storm on Azure HDInsight?

Apache Storm est un système de calcul distribué, à tolérance de panne et open source.Apache Storm is a distributed, fault-tolerant, open-source computation system. Vous pouvez utiliser Storm pour traiter des flux de données en temps réel avec Apache Hadoop.You can use Storm to process streams of data in real time with Apache Hadoop. Les solutions Storm peuvent également permettre un traitement garanti des données, ainsi que la possibilité de relire les données dont le traitement a échoué une première fois.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

Pourquoi utiliser Apache Storm sur HDInsight ?Why use Apache Storm on HDInsight?

Le logiciel Storm sur HDInsight offre les fonctionnalités suivantes :Storm on HDInsight provides the following features:

  • Contrat de niveau de service à 99 % sur le temps d’activité de Storm : Pour plus d’informations, consultez le document Informations sur le contrat SLA de HDInsight.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Il prend en charge une personnalisation aisée via l’exécution de scripts sur un cluster Storm pendant ou après la création.Supports easy customization by running scripts against a Storm cluster during or after creation. Pour en savoir plus, voir Personnaliser des clusters HDInsight à l’aide d’une d’action de script.For more information, see Customize HDInsight clusters using script action.

  • Créer des solutions dans plusieurs langues : Vous pouvez écrire des composants de Storm dans la langue de votre choix, comme Java, C# et Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Intègre Visual Studio avec HDInsight pour le développement, la gestion et la surveillance des topologies C#.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Pour en savoir plus, voir Développement de topologies C# pour Apache Storm sur HDInsight à l’aide des outils Hadoop pour Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Prise en charge de l’interface Java Trident.Supports the Trident Java interface. Vous pouvez créer des topologies Storm qui prennent en charge « exactement une fois » le traitement des messages, la persistance de magasin de données « transactionnels » et un ensemble d’opérations d’analyses courantes de flux de données.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Mise à l’échelle dynamique : Vous pouvez ajouter ou supprimer les nœuds Worker sans nuire à l’exécution des topologies Storm.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    • Vous devez désactiver puis réactiver les topologies en cours d’exécution afin de tirer parti des nouveaux nœuds ajoutés avec les opérations de mise à l’échelle.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.
  • Créer des pipelines de streaming à l’aide de plusieurs services Azure : Storm sur HDInsight s’intègre avec d’autres services Azure tels que Event Hubs, SQL Database, Stockage Azure et Azure Data Lake Storage.Create streaming pipelines using multiple Azure services: Storm on HDInsight integrates with other Azure services such as Event Hubs, SQL Database, Azure Storage, and Azure Data Lake Storage.

    Pour un exemple de solution s’intégrant avec des services Azure, voir Traiter des événements de Azure Event Hubs avec Apache Storm sur HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Pour obtenir la liste des entreprises qui utilisent Apache Storm pour leurs solutions d’analyse en temps réel, voir Entreprises utilisant Apache Storm.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Pour commencer avec Storm, consultez Créer et surveiller une topologie Apache Storm dans Azure HDInsight.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Fonctionnement d’Apache StormHow does Apache Storm work

Storm exécute des topologies au lieu des travaux Apache Hadoop MapReduce que vous connaissez peut-être.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Les topologies Storm sont constituées de plusieurs composants organisés dans un graphe orienté acyclique (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Flux de données entre les composants dans le graphe.Data flows between the components in the graph. Chaque composant consomme un ou plusieurs flux de données, et peut émettre éventuellement un ou plusieurs flux.Each component consumes one or more data streams, and can optionally emit one or more streams. Le diagramme suivant illustre les flux de données entre les composants dans une topologie de base des statistiques :The following diagram illustrates how data flows between components in a basic word-count topology:

Exemple d’organisation des composants dans une topologie Storm

  • Les composants Spout importent les données dans une topologie.Spout components bring data into a topology. Ils émettent un ou plusieurs flux dans la topologie.They emit one or more streams into the topology.

  • Les composants Bolt utilisent les flux émis à partir des spouts ou des autres bolts.Bolt components consume streams emitted from spouts or other bolts. Les bolts peuvent éventuellement émettre des flux vers la topologie.Bolts might optionally emit streams into the topology. Ils sont également responsables de l’écriture des données dans les services externes ou le stockage, comme HDFS, Kafka ou HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

FiabilitéReliability

Apache Storm garantit que chaque message entrant est toujours entièrement traité, même si l’analyse des données est répartie sur des centaines de nœuds.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Le nœud Nimbus offre une fonctionnalité similaire à Apache Hadoop JobTracker et affecte des tâches à d’autres nœuds d’un cluster via Apache ZooKeeper.The Nimbus node provides functionality similar to the Apache Hadoop JobTracker, and it assigns tasks to other nodes in a cluster through Apache ZooKeeper. Les nœuds Zookeeper permettent de coordonner un cluster et facilitent la communication entre Nimbus et le processus Superviseur sur les nœuds de travail.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Si un nœud de traitement tombe en panne, le nœud Nimbus est informé et affecte la tâche et les données associées à un autre nœud.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

Par défaut, un cluster Apache Storm est configuré pour n’avoir qu’un seul nœud Nimbus.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm sur HDInsight fournit deux nœuds Nimbus.Storm on HDInsight provides two Nimbus nodes. Si le nœud principal tombe en panne, le cluster Storm bascule vers le nœud secondaire tandis que le nœud principal est récupéré.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Le schéma suivant illustre la configuration du flux de tâches pour Storm sur HDInsight :The following diagram illustrates the task flow configuration for Storm on HDInsight:

Schéma de Nimbus, de Zookeeper et de Superviseur

Facilité de créationEase of creation

Vous pouvez créer un nouveau cluster Storm sur HDInsight en quelques minutes.You can create a new Storm cluster on HDInsight in minutes. Pour plus d’informations sur la création d’un cluster Storm, consultez Créer des clusters Apache Hadoop à l’aide du portail Azure.For more information on creating a Storm cluster, see Create Apache Hadoop clusters using the Azure portal.

Simplicité d'utilisationEase of use

  • Connectivité Secure Shell (SSH)  : vous pouvez accéder aux nœuds principaux de votre cluster Storm via Internet, à l’aide de SSH.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. Vous pouvez exécuter des commandes directement sur votre cluster à l’aide de SSH.You can run commands directly on your cluster by using SSH.

    Pour en savoir plus, voir Utilisation de SSH avec Hadoop Linux sur HDInsight depuis Linux, Unix ou OS X.For more information, see Use SSH with HDInsight.

  • Connectivité web : tous les clusters HDInsight fournissent l’interface utilisateur web Ambari.Web connectivity: All HDInsight clusters provide the Ambari web UI. Vous pouvez surveiller, configurer et gérer facilement des services sur votre cluster à l’aide de l’interface utilisateur web Ambari.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Les clusters Storm fournissent également l’interface utilisateur Storm.Storm clusters also provide the Storm UI. Vous pouvez surveiller et gérer des topologies Storm en cours d’exécution à partir de votre navigateur à l’aide de l’interface utilisateur Storm.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Pour en savoir plus, consultez les documents Manage HDInsight using the Apache Ambari Web UI (Gérer HDInsight à l’aide de l’interface utilisateur web Ambari) et Surveillance et gestion à l’aide de l’interface utilisateur 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 et Azure CLI : PowerShell et l’interface CLI classique fournissent des utilitaires de ligne de commande que vous pouvez utiliser avec HDInsight et d’autres services Azure, à partir de votre système client.Azure PowerShell and Azure Classic CLI: PowerShell and classic CLI both provide command-line utilities that you can use from your client system to work with HDInsight and other Azure services.

  • Intégration à Visual Studio : Azure Data Lake Tools pour Visual Studio inclut des modèles de projet pour la création de topologies Storm en C# à l’aide du framework SCP.NET.Visual Studio integration: Azure Data Lake Tools for Visual Studio include project templates for creating C# Storm topologies by using the SCP.NET framework. Data Lake Tools fournit des outils permettant de déployer, de surveiller et de gérer des solutions avec Storm sur HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Pour en savoir plus, voir Développement de topologies C# pour Apache Storm sur HDInsight à l’aide des outils Hadoop pour Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Intégration avec d’autres services AzureIntegration with other Azure services

SupportSupport

Storm sur HDInsight bénéficie d’une assistance professionnelle continue.Storm on HDInsight comes with full enterprise-level continuous support. Storm sur HDInsight possède également un contrat SLA garantissant un taux de disponibilité de 99,9 pour cent.Storm on HDInsight also has an SLA of 99.9 percent. Cela signifie que Microsoft garantit une disponibilité de la connectivité externe du cluster Storm au moins 99,9 pour cent du temps.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Pour plus d’informations, consultez le support Azure.For more information, see Azure support.

Cas d’utilisation d’Apache StormApache Storm use cases

Voici quelques scénarios courants dans lesquels vous pouvez utiliser Storm sur HDInsight :The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet des objets (IoT)Internet of Things (IoT)
  • Détection des fraudesFraud detection
  • Analyse des réseaux sociauxSocial analytics
  • Extraction, transformation et chargement (ETL)Extraction, transformation, and loading (ETL)
  • Analyse du réseauNetwork monitoring
  • RechercheSearch
  • Engagement mobileMobile engagement

Pour plus d‘informations sur les scénarios réels, consultez le document Comment les entreprises utilisent-elles Apache Storm ?.For information about real-world scenarios, see the How companies are using Apache Storm document.

DéveloppementDevelopment

Les développeurs .NET peuvent concevoir et implémenter des topologies en C# à l’aide de Data Lake Tools pour Visual Studio..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Vous pouvez également créer des topologies hybrides qui utilisent des composants Java et C#.You can also create hybrid topologies that use Java and C# components.

Pour plus d‘informations, consultez la rubrique Développer des topologies C# pour Apache Storm sur HDInsight en utilisant Visual Studio.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Vous pouvez également développer des solutions Java à l’aide de l’IDE de votre choix.You can also develop Java solutions by using the IDE of your choice. Pour plus d’informations, voir Développer des topologies Java pour Apache Storm sur HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Python peut également être utilisé pour développer des composants Storm.Python can also be used to develop Storm components. Pour plus d’informations, voir Développer des topologies Apache Storm à l’aide de Python sur HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Modèles de développement courantsCommon development patterns

Traitement de message garantiGuaranteed message processing

Apache Storm peut fournir différents niveaux de traitement de message garanti.Apache Storm can provide different levels of guaranteed message processing. Par exemple, une application Storm de base peut garantir un traitement « Une fois au minimum », tandis que Trident peut garantir un traitement « Exactement une fois ».For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Pour plus d‘informations, consultez la rubrique Garanties sur le traitement des données sur le site apache.org.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Le modèle de lecture d’une entrée tuple, qui émet entre zéro et plusieurs tuples, puis le mécanisme d’accusé de réception de l’entrée tuple appliqué dès la fin de la méthode d’exécution sont courants.The pattern of reading an input tuple, emitting zero or more tuples, and then acknowledging the input tuple immediately at the end of the execute method is common. Storm fournit l’interface IBasicBoltpour automatiser ce modèle.Storm provides the IBasicBolt interface to automate this pattern.

JointuresJoins

La façon dont les flux de données sont joints varie entre les applications.How data streams are joined varies between applications. Vous pouvez, par exemple, joindre chaque tuple provenant de plusieurs flux dans un nouveau flux, ou joindre uniquement des lots de tuples pour une fenêtre spécifique.For example, you can join each tuple from multiple streams into one new stream, or you can join only batches of tuples for a specific window. Dans les deux cas, la jonction peut être effectuée à l’aide de fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. Le regroupement de champs constitue une façon de définir comment les tuples sont acheminés vers les bolts.Field grouping is a way of defining how tuples are routed to bolts.

Dans l’exemple Java suivant, fieldsGrouping est utilisé pour acheminer les tuples qui proviennent des composants « 1 », « 2 » et « 3 » vers le 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"));

LotsBatches

Apache Storm fournit un mécanisme de minutage interne appelé « tuple de graduation ».Apache Storm provides an internal timing mechanism known as a "tick tuple." Vous pouvez définir la fréquence à laquelle un tuple de graduation est émis dans votre topologie.You can set how often a tick tuple is emitted in your topology.

Pour obtenir un exemple d’utilisation d’un tick tuple à partir d’un composant C#, consultez le fichier PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CachesCaches

La mise en cache en mémoire est souvent utilisée pour accélérer le traitement, car elle garde en mémoire les éléments les plus utilisés.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Dans la mesure où une topologie est distribuée entre plusieurs nœuds et plusieurs processus au sein de chaque nœud, vous devez envisager d’utiliser fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Utilisez fieldsGrouping pour garantir que les tuples qui contiennent les champs utilisés pour la recherche dans le cache sont toujours acheminés vers le même processus.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Cette fonctionnalité de groupage permet d’éviter la duplication des entrées de cache à travers les processus.This grouping functionality avoids duplication of cache entries across processes.

Diffuser les N premiersStream "top N"

Lorsque votre topologie dépend du calcul d’une valeur « N premiers », calculez cette valeur en parallèle.When your topology depends on calculating a top N value, calculate the top N value in parallel. Puis, fusionnez le résultat de ces calculs dans une valeur globale.Then merge the output from those calculations into a global value. Cette opération peut être effectuée à l’aide de l’élément fieldsGrouping pour acheminer les données par champ pour un traitement parallèle.This operation can be done by using fieldsGrouping to route by field for parallel processing. Vous pouvez ensuite acheminer les données vers un bolt qui détermine globalement la valeur « N premiers ».Then you can route to a bolt that globally determines the top N value.

Pour obtenir un exemple de calcul pour une valeur « N premiers », voir l’exemple RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

JournalisationLogging

Storm utilise Apache Log4j 2 pour journaliser les informations.Storm uses Apache Log4j 2 to log information. Par défaut, une grande quantité de données est journalisée, et il peut donc être difficile d’effectuer un tri parmi toutes ces informations.By default, a large amount of data is logged, and it can be difficult to sort through the information. Vous pouvez inclure un fichier de configuration de journalisation dans votre topologie Storm pour contrôler le comportement de journalisation.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Pour découvrir un exemple de topologie indiquant comment configurer la journalisation, consultez l’exemple de comptage du nombre de mots basé sur Java pour Storm sur HDInsight.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Étapes suivantesNext steps

En savoir plus sur les solutions d‘analyse en temps réel avec Apache Storm dans HDInsight :Learn more about real-time analytics solutions with Apache Storm on HDInsight: