Vad är Apache Storm på Azure HDInsight?What is Apache Storm on Azure HDInsight?

Apache Storm är ett distribuerat, feltolerant beräkningssystem med öppen källkod.Apache Storm is a distributed, fault-tolerant, open-source computation system. Du kan använda Storm för att bearbeta data strömmar i real tid med Apache Hadoop.You can use Storm to process streams of data in real time with Apache Hadoop. Storm-lösningar kan även ge garanterad bearbetning av data med möjlighet att på nytt spela upp data som inte bearbetades första gången.Storm solutions can also provide guaranteed processing of data, with the ability to replay data that was not successfully processed the first time.

Varför ska jag använda Apache Storm på HDInsight?Why use Apache Storm on HDInsight?

Storm på HDInsight har följande funktioner:Storm on HDInsight provides the following features:

  • 99% serviceavtal (SLA) för Storm drift tid: Mer information finns i dokumentet SLA-information för HDInsight.99% Service Level Agreement (SLA) on Storm uptime: For more information, see the SLA information for HDInsight document.

  • Stöder enkel anpassning genom skriptkörning mot ett Storm-kluster när det skapas eller i efterhand.Supports easy customization by running scripts against a Storm cluster during or after creation. Mer information finns i Customize HDInsight clusters using script action (Anpassa HDInsight-kluster med skriptåtgärder).For more information, see Customize HDInsight clusters using script action.

  • Skapa lösningar på flera språk: Du kan skriva Storm-komponenter på valfritt språk, till exempel Java, C# och Python.Create solutions in multiple languages: You can write Storm components in the language of your choice, such as Java, C#, and Python.

    • Integrerar Visual Studio med HDInsight för utveckling, hantering och övervakning av C#-topologier.Integrates Visual Studio with HDInsight for the development, management, and monitoring of C# topologies. Mer information finns i Develop C# Storm topologies with the HDInsight Tools for Visual Studio (Utveckla Storm-topologier i C# med HDInsight Tools för Visual Studio).For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

    • Stöder Java-gränssnittet Trident.Supports the Trident Java interface. Du kan skapa Storm-topologier som stöder engångsbearbetning av meddelanden, transaktionell datalagringsbeständighet och en uppsättning vanliga Stream Analytics-åtgärder.You can create Storm topologies that support exactly once processing of messages, transactional datastore persistence, and a set of common stream analytics operations.

  • Dynamisk skalning: Du kan lägga till eller ta bort arbetsnoder utan att påverka Storm-topologier som körs.Dynamic scaling: You can add or remove worker nodes with no impact to running Storm topologies.

    • Du måste inaktivera och återaktivera topologier som körs för att kunna utnyttja de nya noderna som läggs till genom skalningsåtgärder.You must deactivate and reactivate running topologies to take advantage of new nodes added through scaling operations.
  • Skapa direkt uppspelnings pipeliner med flera Azure-tjänster: Storm på HDInsight integreras med andra Azure-tjänster som Event Hubs, SQL Database, Azure Storage och 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.

    En exempel lösning som kan integreras med Azure-tjänster finns i process händelser från Event Hubs med Apache storm på HDInsight.For an example solution that integrates with Azure services, see Process events from Event Hubs with Apache Storm on HDInsight.

En lista över företag som använder Apache Storm för sina lösningar för analys i realtid finns i Företag som använder Apache Storm.For a list of companies that are using Apache Storm for their real-time analytics solutions, see Companies using Apache Storm.

Information om hur du kommer igång med storm finns i skapa och övervaka en Apache Storm topologi i Azure HDInsight.To get started using Storm, see Create and monitor an Apache Storm topology in Azure HDInsight.

Hur fungerar Apache StormHow does Apache Storm work

Storm kör topologier i stället för de Apache Hadoop MapReduce -jobb som du kanske känner till.Storm runs topologies instead of the Apache Hadoop MapReduce jobs that you might be familiar with. Storm-topologier består av flera komponenter som är ordnade i en riktad acyklisk graf (DAG).Storm topologies are composed of multiple components that are arranged in a directed acyclic graph (DAG). Data flödar mellan komponenter i diagrammet.Data flows between the components in the graph. Varje komponent använder en eller flera dataströmmar och kan du generera en eller flera strömmar.Each component consumes one or more data streams, and can optionally emit one or more streams. Följande diagram illustrerar hur data flödar mellan komponenterna i en grundläggande ordräkningstopologi:The following diagram illustrates how data flows between components in a basic word-count topology:

Exempel på hur komponenter är ordnade i en Storm-topologi

  • Kanalkomponenter överför data till en topologi.Spout components bring data into a topology. De sänder en eller flera strömmar till topologin.They emit one or more streams into the topology.

  • Bultkomponenter förbrukar strömmar som sänts ut från kanaler eller andra bultar.Bolt components consume streams emitted from spouts or other bolts. Bultar kan eventuellt sända strömmar till topologin.Bolts might optionally emit streams into the topology. Bultar ansvarar för att skriva data till extern lagring, till exempel HDFS, Kafka eller HBase.Bolts are also responsible for writing data to external services or storage, such as HDFS, Kafka, or HBase.

TillförlitlighetReliability

Apache Storm ser till att varje inkommande meddelande alltid bearbetas helt, även om dataanalysen är utspridd över hundratals noder.Apache Storm guarantees that each incoming message is always fully processed, even when the data analysis is spread over hundreds of nodes.

Nimbus-noden innehåller funktioner som liknar Apache Hadoop JobTracker och tilldelar uppgifter till andra noder i ett kluster 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-noder samordnar kluster och underlättar kommunikationen mellan Nimbus och övervakarprocessen på arbetsnoderna.Zookeeper nodes provide coordination for a cluster and facilitate communication between Nimbus and the Supervisor process on the worker nodes. Om en nod för bearbetning kraschar informeras Nimbus-noden och uppgiften och tillhörande data tilldelas till en annan nod.If one processing node goes down, the Nimbus node is informed, and it assigns the task and associated data to another node.

Standardkonfigurationen för Apache Storm är att bara ha en Nimbus-nod.The default configuration for Apache Storm clusters is to have only one Nimbus node. Storm på HDInsight kör två Nimbus-noder.Storm on HDInsight provides two Nimbus nodes. Om den primära noden kraschar växlar Storm-klustret till den sekundära noden medan den primära noden återställs.If the primary node fails, the Storm cluster switches to the secondary node while the primary node is recovered. Följande diagram illustrerar konfigurationen av uppgiftsflödet för Storm i HDInsight:The following diagram illustrates the task flow configuration for Storm on HDInsight:

Diagram över nimbus och zookeeper och övervakaren

Enkelt att skapaEase of creation

Du kan skapa ett nytt Storm-kluster i HDInsight på några minuter.You can create a new Storm cluster on HDInsight in minutes. Mer information om hur du skapar ett Storm-kluster finns i skapa Apache Hadoop kluster med hjälp av Azure Portal.For more information on creating a Storm cluster, see Create Apache Hadoop clusters using the Azure portal.

AnvändbarhetEase of use

  • Secure Shell-anslutningar (SSH) : Du kan komma åt huvudnoderna i ditt Storm-kluster via Internet med hjälp av SSH.Secure Shell (SSH) connectivity: You can access the head nodes of your Storm cluster over the Internet by using SSH. Du kan köra kommandon direkt i klustret med hjälp av SSH.You can run commands directly on your cluster by using SSH.

    Mer information finns i Use SSH with HDInsight (Använda SSH med HDInsight).For more information, see Use SSH with HDInsight.

  • Webb anslutning: Alla HDInsight-kluster tillhandahåller Ambari-webbgränssnittet.Web connectivity: All HDInsight clusters provide the Ambari web UI. Du kan enkelt övervaka, konfigurera och hantera tjänster i klustret med hjälp av Ambari-webbanvändargränssnittet.You can easily monitor, configure, and manage services on your cluster by using the Ambari web UI. Storm-kluster ger också Storm-användargränssnitt.Storm clusters also provide the Storm UI. Du kan övervaka och hantera Storm-topologier som körs från din webbläsare med hjälp av Storm-användargränssnittet.You can monitor and manage running Storm topologies from your browser by using the Storm UI.

    Mer information finns i Hantera HDInsight med hjälp av Apache Ambari-WEBBgränssnittet och övervaka och hantera med hjälp av Apache Storm UI -dokument.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 och klassisk Azure CLI: PowerShell och klassisk CLI tillhandahåller båda kommando rads verktyg som du kan använda från ditt klient system för att arbeta med HDInsight och andra Azure-tjänster.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-integrering: Azure Data Lake Tools för Visual Studio innehåller projektmallar för att skapa C# Storm-topologier med SCP.net-ramverket.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 innehåller också verktyg för att distribuera, övervaka och hantera lösningar med Storm i HDInsight.Data Lake Tools also provide tools to deploy, monitor, and manage solutions with Storm on HDInsight.

    Mer information finns i Develop C# Storm topologies with the HDInsight Tools for Visual Studio (Utveckla Storm-topologier i C# med HDInsight Tools för Visual Studio).For more information, see Develop C# Storm topologies with the HDInsight Tools for Visual Studio.

Integration med andra Azure-tjänsterIntegration with other Azure services

SupportSupport

Storm i HDInsight levereras med fullständig, fortlöpande support på företagsnivå.Storm on HDInsight comes with full enterprise-level continuous support. Storm i HDInsight har även ett SLA med 99,9 % drifttid.Storm on HDInsight also has an SLA of 99.9 percent. Det innebär att Microsoft garanterar att ett Storm-kluster har en extern anslutning minst 99,9 procent av tiden.That means Microsoft guarantees that a Storm cluster has external connectivity at least 99.9 percent of the time.

Mer information finns på Azure-supporten.For more information, see Azure support.

Apache Storm användningsområdenApache Storm use cases

Nedan följer några vanliga scenarier där du kan använda Storm i HDInsight:The following are some common scenarios for which you might use Storm on HDInsight:

  • Sakernas Internet (IoT)Internet of Things (IoT)
  • Upptäckt av bedrägerierFraud detection
  • Sociala analyserSocial analytics
  • Extrahering, transformering och inläsning (ETL)Extraction, transformation, and loading (ETL)
  • NätverksövervakningNetwork monitoring
  • SearchSearch
  • Mobile engagementMobile engagement

Information om verkliga scenarier finns i hur företag använder Apache Storm -dokument.For information about real-world scenarios, see the How companies are using Apache Storm document.

UtvecklingDevelopment

.NET-utvecklare kan utforma och implementera topologier i C# med hjälp av Data Lake Tools för Visual Studio..NET developers can design and implement topologies in C# by using Data Lake Tools for Visual Studio. Du kan också skapa hybridtopologier som använder Java- och C#-komponenter.You can also create hybrid topologies that use Java and C# components.

Mer information finns i Utveckla C#-topologier för Apache Storm på HDInsight med Visual Studio.For more information, see Develop C# topologies for Apache Storm on HDInsight using Visual Studio.

Du kan också skapa Java-lösningar med hjälp av valfri IDE.You can also develop Java solutions by using the IDE of your choice. Mer information finns i utveckla Java-topologier för Apache storm i HDInsight.For more information, see Develop Java topologies for Apache Storm on HDInsight.

Du kan också utveckla Storm-komponenter med Python.Python can also be used to develop Storm components. Mer information finns i utveckla Apache Storm topologier med python i HDInsight.For more information, see Develop Apache Storm topologies using Python on HDInsight.

Vanliga utvecklingsmönsterCommon development patterns

Garanterad meddelandebehandlingGuaranteed message processing

Apache Storm kan ge olika nivåer av garanterad meddelandebehandling.Apache Storm can provide different levels of guaranteed message processing. Ett Basic Storm-program kan till exempel garantera minst en gång och Trident kan garantera exakt en gång.For example, a basic Storm application can guarantee at-least-once processing, and Trident can guarantee exactly once processing.

Mer information finns i Garantier om databearbetning på apache.org.For more information, see Guarantees on data processing at apache.org.

IBasicBoltIBasicBolt

Ett mönster för att läsa en tupel, som avger noll eller flera tupler, och sedan bekräfta att indataströmmen omedelbart i slutet av Execute-metoden är vanlig.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 innehåller ett IBasicBolt-gränssnitt för att automatisera detta mönster.Storm provides the IBasicBolt interface to automate this pattern.

KopplingarJoins

Hur dataströmmar kopplas varierar mellan olika program.How data streams are joined varies between applications. Du kan till exempel koppla samman varje tuppel från flera strömmar till en ny ström eller så kan du koppla bara batchar av tupplar för ett specifikt fönster.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. Oavsett vilket kan du ansluta med hjälp av fieldsGrouping.Either way, joining can be accomplished by using fieldsGrouping. Fältetgruppering är ett sätt att definiera hur tupplar skickas till bultar.Field grouping is a way of defining how tuples are routed to bolts.

I Java-exemplet nedan används fieldsGrouping för att dirigera tupplar som kommer från komponenterna ”1”, ”2” och ”3” till bulten 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"));

BatcharBatches

Apache Storm tillhandahåller en intern tidsmekanism som kallas ”tidstuppel”.Apache Storm provides an internal timing mechanism known as a "tick tuple." Du kan ange hur ofta en tidstuppel har genererats i topologin.You can set how often a tick tuple is emitted in your topology.

Ett exempel på hur du använder en tidstuppel från en C#-komponent finns i PartialBoltCount.cs.For an example of using a tick tuple from a C# component, see PartialBoltCount.cs.

CachesCaches

Minnesintern cachelagring används ofta som en mekanism för snabbare bearbetning eftersom den bevarar ofta använda tillgångar i minnet.In-memory caching is often used as a mechanism for speeding up processing because it keeps frequently used assets in memory. Eftersom en topologi distribueras över flera noder, och har flera processer i varje nod, bör du överväga att använda fieldsGrouping.Because a topology is distributed across multiple nodes, and multiple processes within each node, you should consider using fieldsGrouping. Använd fieldsGrouping för att se till att tupplar som innehåller fälten som används för cachesökning alltid dirigeras till samma process.Use fieldsGrouping to ensure that tuples containing the fields that are used for cache lookup are always routed to the same process. Denna grupperingsfunktion förhindrar duplicering av cacheposter mellan processer.This grouping functionality avoids duplication of cache entries across processes.

Dataström för ”högsta N”Stream "top N"

Om topologin är beroende av att ett värde för ”högsta N” beräknas, bör du beräkna värdet för högsta N parallellt.When your topology depends on calculating a top N value, calculate the top N value in parallel. Koppla sedan utdata från dessa beräkningar till ett globalt värde.Then merge the output from those calculations into a global value. Den här åtgärden kan utföras med hjälp av fieldsGrouping för att ställa in fältruttning för parallell bearbetning.This operation can be done by using fieldsGrouping to route by field for parallel processing. Du kan sedan vidarebefordra till en bult som globalt avgör det högsta N-värdet.Then you can route to a bolt that globally determines the top N value.

Ett exempel på en beräkning av ett ”högsta N”-värde finns i RollingTopWords.For an example of calculating a top N value, see the RollingTopWords example.

LoggningLogging

Storm använder Apache log4j 2 för att logga information.Storm uses Apache Log4j 2 to log information. Stora mängder data loggas som standard och det kan vara svårt att gå igenom informationen.By default, a large amount of data is logged, and it can be difficult to sort through the information. Du kan ta med en konfigurationsfil för loggning som en del av Storm-topologin för att styra loggningsbeteendet.You can include a logging configuration file as part of your Storm topology to control logging behavior.

En exempeltopologi som visar hur du konfigurerar loggning finns i ett exempel på Java-baserad WordCount för Storm på HDInsight.For an example topology that demonstrates how to configure logging, see Java-based WordCount example for Storm on HDInsight.

Nästa stegNext steps

Lär dig mer om analys lösningar i real tid med Apache Storm på HDInsight:Learn more about real-time analytics solutions with Apache Storm on HDInsight: