Wat is Apache Storm in Azure HDInsight?

Apache Storm is een gedistribueerd, fouttolerant en open-source computingsysteem. U kunt Storm gebruiken om gegevensstromen in realtime te verwerken met Apache Hadoop. Storm-oplossingen kunnen ook een gegarandeerde verwerking van gegevens bieden, met de mogelijkheid om gegevens die de eerste keer niet zijn verwerkt, opnieuw af te spelen.

Waarom zou u Apache Storm in HDInsight gebruiken?

Storm op HDInsight biedt de volgende functies:

  • 99% SLA (Service Level Agreement) voor Storm-uptime: Storm in HDInsight wordt geleverd met volledige en onafgebroken ondersteuning. Storm op HDInsight beschikt eveneens over een SLA van 99,9 procent. Dit betekent dat Microsoft garandeert dat een Storm-cluster minimaal 99,9 procent van de tijd externe verbinding heeft. Zie Ondersteuning van Azure voor meer informatie. Zie ook het document met SLA-informatie voor HDInsight.

  • 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. Zie HDInsight-clusters aanpassen met scriptacties voor meer informatie.

  • Oplossingen maken in meerdere talen: u kunt Storm-onderdelen schrijven in de taal van uw keuze, bijvoorbeeld in Java, C# of Python.

    • Integreert Visual Studio met HDInsight voor het ontwikkelen, beheren en controleren van C#-topologieën. Zie C# Storm-topologieën met de hulpprogramma's van HDInsight voor Visual Studio voor meer informatie.

    • Biedt ondersteuning voor de 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.

  • Dynamische schaalbaarheid: u kunt werkknooppunten toevoegen of verwijderen zonder de actieve Storm-topologieën te beïnvloeden. Deactiveer en reactiveer de lopende topologieën om te profiteren van de nieuwe knooppunten die zijn toegevoegd via vergroten/verkleinen.

  • Streaming-pijplijn maken met meerdere Azure-Services: Storm in HDInsight kan worden geïntegreerd met andere Azure-Services. Denk bijvoorbeeld aan Event Hubs, SQL Database, Azure Storage en Azure Data Lake Storage. Zie voor een voorbeeldoplossing die kan worden geïntegreerd met Azure-services Gebeurtenissen verwerken van Event Hubs met Apache Storm in HDInsight.

Zie deze Engelstalige site voor een lijst met bedrijven die Apache Storm gebruiken voor hun oplossingen voor realtime analyse.

Raadpleeg om aan de slag te gaan met Storm Apache Storm-topologie maken/bewaken in Azure HDInsight.

Hoe werkt Apache Storm?

Storm voert topologieën uit in plaats van de Apache Hadoop MapReduce-taken die u mogelijk kent. Storm-topologieën bestaan uit meerdere onderdelen die zijn gerangschikt in een Directed Acyclic Graph (DAG). Gegevens stromen tussen de onderdelen in de grafiek. Elk onderdeel verbruikt een of meer gegevensstromen en kan eventueel een of meer stromen genereren. Het volgende diagram toont hoe de gegevens stromen tussen de onderdelen van een eenvoudige topologie voor het tellen van woorden:

Voorbeeld van hoe onderdelen zijn gerangschikt in een Storm-topologie

  • Via Spout-onderdelen worden gegevens overgebracht naar een topologie. Deze onderdelen introduceren een of meer stromen in de topologie.

  • Bolt-onderdelen verwerken stromen die afkomstig zijn van spouts of andere bolts. Bolts kunnen eventueel nieuwe stromen in de topologie introduceren. Bolts zijn ook verantwoordelijk voor het wegschrijven van gegevens naar externe services of opslag, zoals HDFS, Kafka of HBase.

Betrouwbaarheid

Apache Storm zorgt ervoor dat elk binnenkomend bericht altijd volledig wordt verwerkt, zelfs wanneer de gegevensanalyse is verspreid over honderden knooppunten.

Het Nimbus-knooppunt biedt vergelijkbare functionaliteit als de Apache Hadoop JobTracker. Nimbus wijst taken toe aan andere knooppunten in een cluster via Apache ZooKeeper. Zookeeper-knooppunten geven een cluster coördinatiemogelijkheden en faciliteren de communicatie tussen Nimbus en het Supervisor-proces op de werkknooppunten. 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.

Apache Storm-clusters worden standaard geconfigureerd met slechts één Nimbus-knooppunt. Storm in HDInsight ondersteunt twee Nimbus-knooppunten. Als het primaire knooppunt uitvalt, schakelt het Storm-cluster over naar het secundaire knooppunt en wordt het primaire knooppunt hersteld. Het volgende diagram illustreert de taakstroomconfiguratie voor Storm op HDInsight:

Diagram van nimbus, zookeeper en supervisor

Gebruiksgemak

Gebruik Beschrijving
SSH-connectiviteit (Secure Shell) U hebt via internet toegang tot de hoofdknooppunten van het Storm-cluster met behulp van SSH. U kunt opdrachten rechtstreeks op het cluster uitvoeren met behulp van SSH. Zie SSH gebruiken met HDInsight voor meer informatie.
Webconnectiviteit Alle HDInsight-clusters bieden de Ambari-webgebruikersinterface. Met de Ambare-webgebruikersinterface kunt u eenvoudig services op het cluster controleren, configureren en beheren. Storm-clusters bieden ook de Storm-gebruikersinterface. Met behulp van de Storm-gebruikersinterface kunt u actieve Storm-topologieën controleren en beheren vanuit de browser. Zie de documenten HDInsight beheren met behulp van de Apache Ambari-webgebruikersinterface en Controleren en beheren met behulp van de Apache Storm-gebruikersinterface voor meer informatie.
Azure PowerShell en Azure CLI PowerShell en Azure CLI bevatten allebei opdrachtregelprogramma's die u vanuit het clientsysteem kunt gebruiken om te werken met HDInsight en andere Azure-services.
Integratie met Visual Studio Azure Data Lake-tools voor Visual Studio bevatten projectsjablonen voor het maken van C# Storm-topologieën met behulp van het SCP.NET-framework. Data Lake Tools biedt ook hulpprogramma's voor het implementeren, bewaken en beheren van oplossingen met Storm op HDInsight. Zie C# Storm-topologieën met de hulpprogramma's van HDInsight voor Visual Studio voor meer informatie.

Integratie met andere Azure-services

Use cases van Apache Storm

Hier volgen enkele veelvoorkomende scenario's waarvoor u Storm in HDInsight zou kunnen gebruiken:

  • Internet der dingen (IoT)
  • Fraudedetectie
  • Sociale analyses
  • Extractie, transformatie en laden (ETL)
  • Netwerkbewaking
  • Search
  • Mobile Engagement

Lees het document Hoe bedrijven Apache Storm gebruiken voor informatie over praktijkscenario's.

Ontwikkeling

Met hulp van Data Lake-tools voor Visual Studio kunnen .NET-ontwikkelaars topologieën ontwerpen en implementeren voor Visual Studio. U kunt ook hybride topologieën maken die gebruikmaken van Java- en C#-onderdelen. Zie C#-topologieën met Visual Studio ontwikkelen voor Apache Storm op HDInsight voor meer informatie.

U kunt ook Java-oplossingen ontwikkelen met behulp van de IDE van uw keuze. Zie Java-topologieën ontwikkelen voor Apache Storm in HDInsight voor meer informatie.

Python kan ook worden gebruikt voor het ontwikkelen van Storm-onderdelen. Zie Storm-topologieën ontwikkelen met Python voor Apache Storm in HDInsight voor meer informatie.

Algemene ontwikkelingspatronen

Gegarandeerde berichtverwerking

Apache Storm kan verschillende niveaus van gegarandeerde berichtverwerking bieden. Een eenvoudige Storm-toepassing biedt u bijvoorbeeld de garantie dat de gegevens minimaal één keer worden verwerkt. Trident kan u de garantie bieden dat gegevens exact één keer worden verwerkt. Zie Guarantees on data processing (Garanties met betrekking tot de gegevensverwerking) op apache.org.

IBasicBolt

Het patroon voor het lezen van een invoer-tuple, het verzenden van nul of meer tuples om de invoer-tuple vervolgens onmiddellijk aan het einde van de uitvoeringsmethode te bevestigen, is een veelgebruikte methode. Storm biedt de IBasicBolt-interface voor het automatiseren van dit patroon.

Samenvoegingen

Hoe gegevensstromen worden gekoppeld, varieert per toepassing. U kunt bijvoorbeeld elke tuple uit meerdere streams samenvoegen in één nieuwe stream, of u kunt alleen batches tuples voor een specifiek venster samenvoegen. In beide gevallen kunt u hiervoor fieldsGrouping gebruiken. Veldgroepering is een manier om te definiëren hoe tuples worden gerouteerd naar 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:

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

Batches

Apache Storm biedt een intern timingmechanisme dat bekend staat als een 'tick tuple'. U kunt instellen hoe vaak in uw topologie een tick tuple wordt verzonden.

Zie PartialBoltCount.cs voor een voorbeeld van het gebruik van een tick tuple uit een C#-onderdeel.

Caches

In-memory caching wordt vaak gebruikt als mechanisme om de verwerking te versnellen, omdat de veelgebruikte assets in het geheugen blijven staan. Omdat een topologie wordt verdeeld over meerdere knooppunten en meerdere processen binnen elk knooppunt, is het goed om het gebruik van fieldsGrouping te overwegen. 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. Met deze groeperingsfunctionaliteit voorkomt u dubbele cachevermeldingen voor verschillende processen.

'Top N' van stromen

Wanneer uw topologie afhankelijk is van de berekening van de waarde van een 'top N', moet u die waarde in parallel berekenen. Vervolgens moet u de uitvoer van die berekeningen samenvoegen tot een globale waarde. Dit kan door met fieldsGrouping op veld te routeren voor parallelle verwerking. Vervolgens kunt u de uitvoer doorsturen naar een bolt die globaal de top N-waarde bepaalt.

Zie het RollingTopWords-voorbeeld voor een voorbeeld van een berekening van een top N-waarde.

Logboekregistratie

Storm gebruikt Apache Log4j 2 om informatie in een logboek te registreren. Standaard wordt een grote hoeveelheid gegevens geregistreerd en kan het lastig zijn om de informatie te doorzoeken. U kunt een configuratiebestand voor logboekregistratie opnemen als onderdeel van uw Storm-topologie om de werking van de logboekregistratie te bepalen.

Zie het voorbeeld van een op Java gebaseerde woordentelling voor Storm op HDInsight, voor een voorbeeldtopologie die aantoont hoe u de logboekregistratie moet configureren.

Volgende stappen

Meer informatie over realtime analyseoplossingen met Apache Storm in HDInsight: