Was ist Apache Storm in Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm ist ein verteiltes, fehlertolerantes Open Source-Berechnungssystem.Apache Storm is a distributed, fault-tolerant, open-source computation system. Mithilfe von Storm können Sie Datenströme in Echtzeit mit Apache Hadoop verarbeiten.You can use Storm to process streams of data in real time with Apache Hadoop. Storm-Lösungen sind außerdem in der Lage, die Verarbeitung von Daten zu garantieren und Daten erneut abzuspielen, die beim ersten Versuch nicht erfolgreich verarbeitet wurden.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

Vorteile von Apache Storm in HDInsightWhy use Apache Storm on HDInsight?

Storm in HDInsight umfasst die folgenden Features:Storm on HDInsight provides the following features:

  • Vereinbarung zum Servicelevel (SLA) mit 99% Verfügbarkeit von Storm: Weitere Informationen finden Sie im Dokument SLA für HDInsight.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Einfache Anpassung durch Ausführung von Skripts für einen Storm-Cluster während oder nach der Erstellung.Supports easy customization by running scripts against a Storm cluster during or after creation. Weitere Informationen finden Sie unter Anpassen von HDInsight-Clustern mithilfe von Skriptaktionen.For more information, see Customize HDInsight clusters using script action.

  • Erstellen von Lösungen in mehreren Sprachen: Sie können die Storm-Komponenten in der Sprache Ihrer Wahl schreiben (etwa in Java, C# oder Python).Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Zusammenarbeit von Visual Studio und HDInsight für die Entwicklung, Verwaltung und Überwachung von C#-Topologien.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Weitere Informationen finden Sie unter Entwickeln von C#-Storm-Topologien mit HDInsight-Tools für Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Unterstützung der Java-Schnittstelle „Trident“.Supports the Trident Java interface. Sie können Storm-Topologien erstellen, die eine exakt einmalige Verarbeitung von Nachrichten, transaktionale Datenspeicherpersistenz sowie eine Reihe allgemeiner Stream Analytics-Vorgänge unterstützen.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Dynamische Skalierung: Sie können Workerknoten ohne Auswirkungen auf aktive Storm-Topologien hinzufügen oder entfernen.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    Hinweis

    Sie müssen ausgeführte Topologien deaktivieren und neu aktivieren, um neue, durch Skalierungsvorgänge hinzugefügte Knoten nutzen zu können.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.

  • Erstellen von Streamingpipelines mithilfe verschiedener Azure-Dienste: Storm in HDInsight kann in andere Azure-Dienste (etwa Event Hubs, SQL-Datenbank, Azure Storage und Azure Data Lake Storage) integriert werden.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.

    Eine Beispiellösung, die in Azure-Dienste integriert wird, finden Sie unter Verarbeiten von Ereignissen aus Event Hubs mit Apache Storm in HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

Eine Liste der Unternehmen, die Apache Storm für ihre Echtzeitanalyselösungen verwenden, finden Sie unter Unternehmen, die Apache Storm verwenden.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Eine Einführung in Storm finden Sie unter Erste Schritte mit Apache Storm in HDInsight.To get started using Storm, see Get started with Apache Storm on HDInsight.

Funktionsweise von Apache StormHow does Apache Storm work

Anstelle der Apache Hadoop MapReduce-Aufträge, die Sie möglicherweise kennen, führt Storm Topologien aus.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Storm-Topologien setzen sich aus mehreren Komponenten zusammen, die in einem gerichteten azyklischen Graph (DAG) angeordnet sind.Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Daten werden zwischen den Komponenten im Diagramm übertragen.Data flows between the components in the graph. Jede Komponente nutzt einen oder mehrere Datenströme und kann optional einen oder mehrere Datenströme ausgeben kann.Each component consumes one or more data streams, and can optionally emit one or more streams. Das folgende Diagramm veranschaulicht den Datenfluss zwischen Komponenten in einer einfachen Wortzählungstopologie:The following diagram illustrates how data flows between components in a basic word-count topology:

Beispielanordnung von Komponenten in einer Storm-Topologie

  • Spout-Komponenten bringen Daten in eine Topologie ein.Spout components bring data into a topology. Sie geben mindestens einen Datenstrom in die Topologie aus.They emit one or more streams into the topology.

  • Bolt-Komponenten nutzen Datenströme, die von Spouts oder von anderen Bolts ausgegeben werden.Bolt components consume streams emitted from spouts or other bolts. Bolts können optional auch Datenströme in die Topologie ausgeben.Bolts might optionally emit streams into the topology. Außerdem sind Bolts für das Schreiben von Daten in externe Dienste oder externen Speicher (wie etwa HDFS, Kafka oder HBase) zuständig.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

ZuverlässigkeitReliability

Mit Apache Storm ist garantiert, dass jede eingehende Nachricht auch dann vollständig verarbeitet wird, wenn die Datenanalyse über Hunderte von Knoten verteilt ist.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Der Nimbus-Knoten bietet ähnliche Funktionen wie Apache Hadoop JobTracker und weist anderen Knoten im Cluster über Apache ZooKeeper Aufgaben zu.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-Knoten kümmern sich um die Koordination eines Clusters und erleichtern die Kommunikation zwischen Nimbus und dem Supervisor-Prozess auf den Workerknoten.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Wenn ein Verarbeitungsknoten ausfällt, wird der Nimbus-Knoten darüber informiert, und die Aufgabe sowie zugehörige Daten werden einem anderen Knoten zugewiesen.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

In der Standardkonfiguration verfügen Apache Storm-Cluster über einen einzelnen Nimbus-Knoten.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm in HDInsight bietet zwei Nimbus-Knoten.Storm on HDInsight provides two Nimbus nodes. Wenn der primäre Knoten ausfällt, wechselt der Storm-Cluster auf den sekundären Knoten, während der primäre Knoten wiederhergestellt wird.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Das folgende Diagramm veranschaulicht die Konfiguration des Aufgabenablaufs für Storm in HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Diagramm mit Nimbus, Zookeeper und Supervisor

Einfache ErstellungEase of creation

Ein neuer Storm-Cluster in HDInsight kann innerhalb weniger Minuten erstellt werden.You can create a new Storm cluster on HDInsight in minutes. Weitere Informationen zum Erstellen eines Storm-Clusters finden Sie unter Erste Schritte mit Storm-Starter-Beispielen für die Big Data-Analyse in Linux-basiertem HDInsight.For more information on creating a Storm cluster, see Get started with Storm on HDInsight.

Einfache BedienungEase of use

  • SSH-Konnektivität (Secure Shell): Sie können per SSH über das Internet auf die Hauptknoten Ihres Storm-Clusters zugreifen.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. Mit SSH können Sie Befehle direkt in Ihrem Cluster ausführen.You can run commands directly on your cluster by using SSH.

    Weitere Informationen finden Sie unter Verwenden von SSH mit Linux-basiertem Hadoop in HDInsight unter Linux, Unix oder OS X.For more information, see Use SSH with HDInsight.

  • Webkonnektivität: Für alle HDInsight-Cluster wird die Ambari-Webbenutzeroberfläche bereitgestellt.Web connectivity: All HDInsight clusters provide the Ambari web UI. Über die Ambari-Webbenutzeroberfläche können Sie Dienste in Ihrem Cluster komfortabel überwachen, konfigurieren und verwalten.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Storm-Cluster bieten auch die Storm-Benutzeroberfläche.Storm clusters also provide the Storm UI. Mit der Storm-Benutzeroberfläche können Sie die Ausführung von Storm-Topologien über Ihren Browser überwachen und verwalten.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Weitere Informationen finden Sie in den Dokumenten Verwalten von HDInsight mithilfe der Apache Ambari-Webbenutzeroberfläche und Überwachen und Verwalten mit der Apache Storm-Benutzeroberfläche.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 und die klassische Azure-Befehlszeilenschnittstelle: PowerShell und die klassische Befehlszeilenschnittstelle bieten Befehlszeilen-Hilfsprogramme, die Sie auf Ihrem Clientsystem für die Arbeit mit HDInsight und anderen Azure-Diensten verwenden können.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-Integration: Azure Data Lake Tools für Visual Studio enthält Projektvorlagen für die Erstellung von C#-Storm-Topologien unter Verwendung des SCP.NET-Frameworks.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 bietet zudem Tools zum Bereitstellen, Überwachen und Verwalten von Lösungen mit Storm in HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Weitere Informationen finden Sie unter Entwickeln von C#-Storm-Topologien mit HDInsight-Tools für Visual Studio.For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integration in andere Azure-DiensteIntegration with other Azure services

SupportSupport

Storm in HDInsight bietet durchgehend umfassenden professionellen Support.Storm on HDInsight comes with full enterprise-level continuous support. Außerdem gilt für Storm in HDInsight eine SLA von 99,9 Prozent.Storm on HDInsight also has an SLA of 99.9 percent. Für einen Storm-Cluster wird von Microsoft also eine externe Konnektivität für mindestens 99,9 Prozent der Zeit garantiert.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Weitere Informationen finden Sie unter Azure-Support.For more information, see Azure support.

Anwendungsfälle für Apache StormApache Storm use cases

Im Folgenden finden Sie eine Liste mit typischen Verwendungsszenarien für Storm in HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Internet der Dinge (IoT, Internet of Things)Internet of Things (IoT)
  • BetrugserkennungFraud detection
  • Soziale AnalysenSocial analytics
  • Extrahieren, Transformieren und Laden (ETL)Extraction, transformation, and loading (ETL)
  • NetzwerküberwachungNetwork monitoring
  • Suchen,Search
  • Mobile EngagementMobile engagement

Weitere Informationen zu Szenarien in der Praxis finden Sie im Dokument über die Nutzung von Apache Storm durch Unternehmen.For information about real-world scenarios, see the How companies are using Apache Storm document.

EntwicklungDevelopment

Mit Data Lake Tools für Visual Studio können .NET-Entwickler Topologien in C# entwerfen und implementieren..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Sie können auch Hybridtopologien erstellen, die Java- und C#-Komponenten verwenden.You can also create hybrid topologies that use Java and C# components.

Weitere Informationen finden Sie unter Entwickeln von C#-Topologien für Apache Storm in HDInsight mithilfe von Visual Studio.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Sie können auch Java-Lösungen entwickeln und dabei Ihre bevorzugte IDE verwenden.You can also develop Java solutions by using the IDE of your choice. Weitere Informationen finden Sie unter Entwickeln von Java-basierten Topologien für Apache Storm in HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Storm-Komponenten können auch unter Verwendung von Python entwickelt werden.Python can also be used to develop Storm components. Weitere Informationen finden Sie unter Entwickeln von Apache Storm-Topologien mit Python in HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Gängige EntwicklungsmusterCommon development patterns

Garantierte NachrichtenverarbeitungGuaranteed message processing

Mit Apache Storm lassen sich verschiedene Stufen der garantierten Nachrichtenverarbeitung implementieren.Apache Storm can provide different levels of guaranteed message processing. Eine einfache Storm-Anwendung kann beispielsweise die Verarbeitung nach dem „At-Least-Once“-Prinzip garantieren, während Trident Nachrichten nach dem „Exactly-Once“-Prinzip garantiert.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Weitere Informationen finden Sie unter Guarantees on Data Processing (in englischer Sprache) auf apache.org.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Eine übliche Methode besteht darin, ein Eingangstupel zu lesen, mindestens ein Tupel auszugeben und das Eingangstupel am Ende der execute-Methode dann sofort zu bestätigen.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 stellt die IBasicBolt-Schnittstelle für die Automatisierung dieses Musters bereit.Storm provides the IBasicBolt interface to automate this pattern.

JoinsJoins

Die Vorgehensweise beim Verknüpfen von Datenströmen variiert zwischen Anwendungen.How data streams are joined varies between applications. So können Sie beispielsweise alle Tupel aus mehreren Datenströmen in einem neuen Datenstrom zusammenführen oder nur Tupel-Batches für ein bestimmtes Intervall zusammenführen.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 allen Fällen kann das Zusammenführen mithilfe von fieldsGrouping erreicht werden.Either way, joining can be accomplished by using fieldsGrouping. Die Feldgruppierung ist eine Möglichkeit, um zu definieren, wie Tupel an Bolts weitergeleitet werden.Field grouping is a way of defining how tuples are routed to bolts.

Das folgende Java-Beispiel verwendet „fieldsGrouping“, um Tupel aus den Komponenten „1“, „2“ und „3“ an den MyJoiner-Bolt weiterzuleiten: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 bietet einen internen Timermechanismus, der als „Tick-Tupel“ bezeichnet wird.Apache Storm provides an internal timing mechanism known as a "tick tuple." Sie können festlegen, wie oft ein Tick-Tupel in der Topologie ausgegeben wird.You can set how often a tick tuple is emitted in your topology.

Ein Beispiel für die Verwendung eines Tick-Tupels für eine C#-Komponente finden Sie unter PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CachesCaches

Speicherinterne Zwischenspeicherung wird oft verwendet, um die Verarbeitung zu beschleunigen, da häufig verwendete Elemente im Speicher erhalten bleiben.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Da eine Topologie auf mehrere Knoten und mehrere Prozesse auf jedem Knoten verteilt ist, sollten Sie erwägen, fieldsGrouping zu verwenden.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Verwenden Sie fieldsGrouping, um sicherzustellen, dass Tupel mit den Feldern, die für die Cachesuche verwendet werden, immer an den gleichen Prozess weitergeleitet werden.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Mit dieser Gruppierungsfunktion wird die prozessübergreifende Duplizierung von Cacheeinträgen verhindert.This grouping functionality avoids duplication of cache entries across processes.

Datenstrom „Top N“Stream "top N"

Wenn Ihre Topologie auf die Berechnung eines Top N-Werts angewiesen ist, berechnen Sie diesen Wert parallel.When your topology depends on calculating a top N value, calculate the top N value in parallel. Führen Sie anschließend die Ausgabe der entsprechenden Berechnungen zu einem globalen Wert zusammen.Then merge the output from those calculations into a global value. Hierzu können Sie fieldsGrouping verwenden, um Daten für die parallele Verarbeitung nach Feldern weiterzuleiten.This operation can be done by using fieldsGrouping to route by field for parallel processing. Anschließend können Sie Daten an einen Bolt weiterleiten, der global den Top N-Wert bestimmt.Then you can route to a bolt that globally determines the top N value.

Ein Beispiel für die Berechnung eines Top N-Werts finden Sie im Beispiel RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

ProtokollierungLogging

Storm verwendet Apache Log4j 2 zum Protokollieren von Informationen.Storm uses Apache Log4j 2 to log information. Standardmäßig wird eine große Datenmenge protokolliert, was die Durchsicht der Informationen erschweren kann.By default, a large amount of data is logged, and it can be difficult to sort through the information. Sie können eine Protokollierungskonfigurationsdatei als Teil Ihrer Storm-Topologie hinzufügen, um das Protokollierungsverhalten zu steuern.You can include a logging configuration file as part of your Storm topology to control logging behavior.

Eine Beispieltopologie, die das Konfigurieren der Protokollierung veranschaulicht, finden Sie im Java-basierten WordCount -Beispiel für Storm in HDInsight.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Nächste SchritteNext steps

Weitere Informationen zu Lösungen für Echtzeitanalysen mit Apache Storm in HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: