Wat is Apache Storm in Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm is een gedistribueerd, fouttolerant en open-source computingsysteem.Apache Storm is a distributed, fault-tolerant, open-source computation system. U kunt Storm gebruiken om te verwerken gegevensstromen in realtime met Apache Hadoop.You can use Storm to process streams of data in real time with Apache Hadoop. Dankzij de mogelijkheid om gegevens die de eerste keer niet zijn verwerkt, opnieuw te verwerken, bieden Storm-oplossingen u de garantie dat de gegevens worden verwerkt.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

Waarom Apache Storm op HDInsight gebruiken?Why use Apache Storm on HDInsight?

Storm op HDInsight biedt de volgende functies:Storm on HDInsight provides the following features:

  • 99% Service Level Agreement (SLA) op Storm uptime: Zie SLA-informatie voor HDInsight voor meer informatie.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Ondersteunt de mogelijkheid om eenvoudig aanpassingen te implementeren door tijdens of na het maken van een Storm-cluster scripts voor dat cluster uit te voeren.Supports easy customization by running scripts against a Storm cluster during or after creation. Zie HDInsight-clusters aanpassen met scriptacties voor meer informatie.For more information, see Customize HDInsight clusters using script action.

  • Oplossingen maken in meerdere talen: U kunt Storm-onderdelen schrijven in de taal van uw keuze, bijvoorbeeld in Java, C# of Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integreert Visual Studio met HDInsight voor het ontwikkelen, beheren en controleren van C#-topologieën.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Zie C# Storm-topologieën met de hulpprogramma's van HDInsight voor Visual Studio voor meer informatie.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Biedt ondersteuning voor de Trident Java-interface.Supports the Trident Java interface. U kunt Storm-topologieën maken die ondersteuning bieden voor een eenmalige verwerking van berichten, transactionele DataStore-persistentie en een aantal algemene Stream Analytics-bewerkingen.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Dynamische schaalbaarheid: U kunt werkknooppunten toevoegen of verwijderen zonder de actieve Storm-topologieën te beïnvloeden.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    • U moet de lopende topologieën deactiveren en reactiveren om te profiteren van de nieuwe knooppunten die zijn toegevoegd via vergroten/verkleinen.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.
  • Streaming-pijplijnen met meerdere Azure-services maken: Storm op HDInsight kan worden geïntegreerd met andere Azure-services zoals Event Hubs, SQL-Database, Azure Storage en Azure Data Lake-opslag.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.

    Zie voor een Voorbeeldoplossing die kan worden geïntegreerd met Azure-services, verwerken van gebeurtenissen van Event Hubs met Apache Storm op HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Zie deze Engelstalige site voor een lijst met bedrijven die Apache Storm gebruiken voor hun oplossingen voor realtime analyse.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Als u wilt aan de slag met Storm, Zie aan de slag met Apache Storm op HDInsight.To get started using Storm, see Get started with Apache Storm on HDInsight.

Hoe werkt de Apache StormHow does Apache Storm work

Storm voert topologieën uit in plaats van de Apache Hadoop MapReduce taken die u mogelijk kent.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Storm-topologieën bestaan uit meerdere onderdelen die zijn gerangschikt in een Directed Acyclic Graph (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Gegevens stromen tussen de onderdelen in de grafiek.Data flows between the components in the graph. Elk onderdeel verbruikt een of meer gegevensstromen en kan eventueel een of meer stromen genereren.Each component consumes one or more data streams, and can optionally emit one or more streams. Het volgende diagram toont hoe de gegevens stromen tussen de onderdelen van een eenvoudige topologie voor het tellen van woorden:The following diagram illustrates how data flows between components in a basic word-count topology:

Voorbeeld van hoe onderdelen zijn gerangschikt in een Storm-topologie

  • Via Spout-onderdelen worden gegevens overgebracht naar een topologie.Spout components bring data into a topology. Deze onderdelen introduceren een of meer stromen in de topologie.They emit one or more streams into the topology.

  • Bolt-onderdelen verwerken stromen die afkomstig zijn van spouts of andere bolts.Bolt components consume streams emitted from spouts or other bolts. Bolts kunnen eventueel nieuwe stromen in de topologie introduceren.Bolts might optionally emit streams into the topology. Bolts zijn ook verantwoordelijk voor het wegschrijven van gegevens naar externe services of opslag, zoals HDFS, Kafka of HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

BetrouwbaarheidReliability

Apache Storm zorgt ervoor dat elk binnenkomend bericht altijd volledig wordt verwerkt, zelfs wanneer de gegevensanalyse is verspreid over honderden knooppunten.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Het Nimbus-knooppunt biedt een functionaliteit die vergelijkbaar is met de Apache Hadoop JobTracker en wijst taken toe aan andere knooppunten in een 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. Zookeeper-knooppunten geven een cluster coördinatiemogelijkheden en faciliteren de communicatie tussen Nimbus en het Supervisor-proces op de werkknooppunten.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Als een verwerkingsknooppunt wordt uitgeschakeld, wordt het Nimbus-knooppunt hiervan op de hoogte gesteld en worden de taak en de bijbehorende gegevens toegewezen aan een ander knooppunt.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

Apache Storm-clusters worden standaard geconfigureerd met slechts één Nimbus-knooppunt.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm in HDInsight ondersteunt twee Nimbus-knooppunten.Storm on HDInsight provides two Nimbus nodes. Als het primaire knooppunt uitvalt, schakelt het Storm-cluster over naar het secundaire knooppunt en wordt het primaire knooppunt hersteld.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Het volgende diagram illustreert de taakstroomconfiguratie voor Storm op HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Diagram van nimbus, zookeeper en supervisor

Eenvoudig te makenEase of creation

U kunt in enkele minuten een nieuw Storm-cluster op HDInsight maken.You can create a new Storm cluster on HDInsight in minutes. Zie Aan de slag met Storm op HDInsight voor meer informatie over het maken van een Storm-cluster.For more information on creating a Storm cluster, see Get started with Storm on HDInsight.

GebruiksgemakEase of use

  • Secure Shell (SSH)-connectiviteit: U kunt toegang tot de hoofdknooppunten van het Storm-cluster via Internet met behulp van SSH.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. U kunt opdrachten rechtstreeks op het cluster uitvoeren met behulp van SSH.You can run commands directly on your cluster by using SSH.

    Zie SSH gebruiken met HDInsight voor meer informatie.For more information, see Use SSH with HDInsight.

  • Webconnectiviteit: Alle HDInsight-clusters bieden de Ambari-Webgebruikersinterface.Web connectivity: All HDInsight clusters provide the Ambari web UI. Met de Ambare-webgebruikersinterface kunt u eenvoudig services op het cluster controleren, configureren en beheren.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Storm-clusters bieden ook de Storm-gebruikersinterface.Storm clusters also provide the Storm UI. Met behulp van de Storm-gebruikersinterface kunt u actieve Storm-topologieën controleren en beheren vanuit de browser.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Zie voor meer informatie de beheren HDInsight met behulp van de Apache Ambari-Webgebruikersinterface en bewaken en beheren met behulp van de Apache Storm-gebruikersinterface documenten.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 en Azure klassieke CLI: PowerShell en klassieke CLI bevatten allebei opdrachtregelprogramma's die u vanuit het clientsysteem gebruiken kunt om te werken met HDInsight en andere Azure-services.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.

  • Visual Studio-integratie: Azure Data Lake Tools voor Visual Studio bevatten projectsjablonen voor het maken van C# Storm-topologieën met behulp van het SCP.NET-framework.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 biedt ook hulpprogramma's voor het implementeren, bewaken en beheren van oplossingen met Storm op HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Zie C# Storm-topologieën met de hulpprogramma's van HDInsight voor Visual Studio voor meer informatie.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integratie met andere Azure-servicesIntegration with other Azure services

OndersteuningSupport

Storm op HDInsight wordt geleverd met volledige en onafgebroken ondersteuning op ondernemingsniveau.Storm on HDInsight comes with full enterprise-level continuous support. Storm op HDInsight beschikt eveneens over een SLA van 99,9 procent.Storm on HDInsight also has an SLA of 99.9 percent. Dit betekent dat Microsoft garandeert dat een Storm-cluster minimaal 99,9 procent van de tijd externe verbinding heeft.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Zie Ondersteuning van Azure voor meer informatie.For more information, see Azure support.

Use cases van Apache StormApache Storm use cases

Hier volgen enkele veelvoorkomende scenario's waarvoor u Storm in HDInsight zou kunnen gebruiken:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet der dingen (IoT)Internet of Things (IoT)
  • FraudedetectieFraud detection
  • Sociale analysesSocial analytics
  • Extractie, transformatie en laden (ETL)Extraction, transformation, and loading (ETL)
  • NetwerkbewakingNetwork monitoring
  • SearchSearch
  • Mobile EngagementMobile engagement

Zie voor meer informatie over praktijkscenario's de hoe bedrijven gebruikmaken van Apache Storm document.For information about real-world scenarios, see the How companies are using Apache Storm document.

OntwikkelingDevelopment

Met hulp van Data Lake-tools voor Visual Studio kunnen .NET-ontwikkelaars topologieën ontwerpen en implementeren voor Visual Studio..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. U kunt ook hybride topologieën maken die gebruikmaken van Java- en C#-onderdelen.You can also create hybrid topologies that use Java and C# components.

Zie C#-topologieën met Visual Studio ontwikkelen voor Apache Storm op HDInsight voor meer informatie.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

U kunt ook Java-oplossingen ontwikkelen met behulp van de IDE van uw keuze.You can also develop Java solutions by using the IDE of your choice. Zie voor meer informatie, ontwikkelen van Java-topologieën voor Apache Storm op HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Python kan ook worden gebruikt voor het ontwikkelen van Storm-onderdelen.Python can also be used to develop Storm components. Zie voor meer informatie, ontwikkelen Apache Storm-topologieën met behulp van Python op HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Algemene ontwikkelingspatronenCommon development patterns

Gegarandeerde berichtverwerkingGuaranteed message processing

Apache Storm kan verschillende niveaus van gegarandeerde berichtverwerking bieden.Apache Storm can provide different levels of guaranteed message processing. Bijvoorbeeld, een eenvoudige Storm-toepassing op de minst keer worden verwerkt, kan garanderen en Trident kunt garanderen exact één keer worden verwerkt.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Zie Guarantees on data processing (Garanties met betrekking tot de gegevensverwerking) op apache.org voor meer informatie.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Het patroon voor het lezen van een invoer-tuple, verzenden van nul of meer tuples en vervolgens de invoer-tuple onmiddellijk aan het einde van de methode execute daar begrip voor tonen is gebruikelijk.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 biedt de IBasicBolt-interface voor het automatiseren van dit patroon.Storm provides the IBasicBolt interface to automate this pattern.

SamenvoegingenJoins

Hoe gegevensstromen worden gekoppeld, varieert per toepassing.How data streams are joined varies between applications. U kunt bijvoorbeeld elke tuple uit meerdere streams samenvoegen in één nieuwe stream, of u kunt alleen batches tuples voor een specifiek venster samenvoegen.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. In beide gevallen kunt u hiervoor fieldsGrouping gebruiken.Either way, joining can be accomplished by using fieldsGrouping. Veldgroepering is een manier om te definiëren hoe tuples worden gerouteerd naar bolts.Field grouping is a way of defining how tuples are routed to bolts.

In het volgende Java-voorbeeld wordt fieldsGrouping gebruikt om tuples die afkomstig zijn uit de onderdelen 1, 2 en 3, te routeren naar de MyJoiner-bolt: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"));

BatchesBatches

Apache Storm biedt een intern timingmechanisme dat bekend staat als een 'tick tuple'.Apache Storm provides an internal timing mechanism known as a "tick tuple." U kunt instellen hoe vaak in uw topologie een tick tuple wordt verzonden.You can set how often a tick tuple is emitted in your topology.

Zie PartialBoltCount.cs voor een voorbeeld van het gebruik van een tick tuple uit een C#-onderdeel.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CachesCaches

In-memory caching wordt vaak gebruikt als mechanisme om de verwerking te versnellen, omdat de veelgebruikte assets in het geheugen blijven staan.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Omdat een topologie wordt verdeeld over meerdere knooppunten en meerdere processen binnen elk knooppunt, is het goed om het gebruik van fieldsGrouping te overwegen.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Gebruik fieldsGrouping om ervoor te zorgen dat tuples met velden die worden gebruikt voor het opzoeken van de cache, altijd naar hetzelfde proces worden gerouteerd.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Met deze groeperingsfunctionaliteit voorkomt u dubbele cachevermeldingen voor verschillende processen.This grouping functionality avoids duplication of cache entries across processes.

'Top N' van stromenStream "top N"

Wanneer uw topologie afhankelijk is van de berekening van de waarde van een 'top N', moet u die waarde in parallel berekenen.When your topology depends on calculating a top N value, calculate the top N value in parallel. Vervolgens moet u de uitvoer van die berekeningen samenvoegen tot een globale waarde.Then merge the output from those calculations into a global value. Dit kan door met fieldsGrouping op veld te routeren voor parallelle verwerking.This operation can be done by using fieldsGrouping to route by field for parallel processing. Vervolgens kunt u de uitvoer doorsturen naar een bolt die globaal de top N-waarde bepaalt.Then you can route to a bolt that globally determines the top N value.

Zie het RollingTopWords-voorbeeld voor een voorbeeld van een berekening van een top N-waarde.For an example of calculating a top N value, see the RollingTopWords example.

LogboekregistratieLogging

Maakt gebruik van storm Apache Log4j 2 om informatie te registreren.Storm uses Apache Log4j 2 to log information. Standaard wordt een grote hoeveelheid gegevens geregistreerd en kan het lastig zijn om de informatie te doorzoeken.By default, a large amount of data is logged, and it can be difficult to sort through the information. U kunt een configuratiebestand voor logboekregistratie opnemen als onderdeel van uw Storm-topologie om de werking van de logboekregistratie te bepalen.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Zie het voorbeeld van een op Java gebaseerde woordentelling voor Storm op HDInsight, voor een voorbeeldtopologie die aantoont hoe u de logboekregistratie moet configureren.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Volgende stappenNext steps

Meer informatie over realtime analyseoplossingen met Apache Storm op HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: