Gebeurtenissen verwerken vanuit Azure Event Hubs met Apache Storm op HDInsight (C#)Process events from Azure Event Hubs with Apache Storm on HDInsight (C#)

Meer informatie over het werken met Azure Event Hubs van Apache Storm op HDInsight.Learn how to work with Azure Event Hubs from Apache Storm on HDInsight. In dit document wordt C# een storm-topologie gebruikt voor het lezen en schrijven van gegevens van Event hubsThis document uses a C# Storm topology to read and write data from Event Hubs

SCP.NETSCP.NET

De stappen in dit document gebruiken SCP.NET, een NuGet-pakket waarmee u eenvoudig topologieën C# en onderdelen kunt maken voor gebruik met Storm op HDInsight.The steps in this document use SCP.NET, a NuGet package that makes it easy to create C# topologies and components for use with Storm on HDInsight.

Belangrijk

Hoewel de stappen in dit document afhankelijk zijn van een Windows-ontwikkel omgeving met Visual Studio, kan het gecompileerde project worden verzonden naar een storm op HDInsight-cluster dat gebruikmaakt van Linux.While the steps in this document rely on a Windows development environment with Visual Studio, the compiled project can be submitted to a Storm on HDInsight cluster that uses Linux. Alleen op Linux gebaseerde clusters die zijn gemaakt na 28 oktober 2016, ondersteunen SCP.NET-topologieën.Only Linux-based clusters created after October 28, 2016, support SCP.NET topologies.

HDInsight 3,4 en hoger gebruiken mono om topologieën uit te voeren C# .HDInsight 3.4 and greater use Mono to run C# topologies. Het voor beeld dat in dit document wordt gebruikt, werkt met HDInsight 3,6.The example used in this document works with HDInsight 3.6. Als u van plan bent uw eigen .NET-oplossingen voor HDInsight te maken, controleert u het document met zwartwit compatibiliteit voor mogelijke incompatibiliteit.If you plan on creating your own .NET solutions for HDInsight, check the Mono compatibility document for potential incompatibilities.

Cluster versie beheerCluster versioning

Het micro soft. SCP. net. SDK NuGet-pakket dat u voor uw project gebruikt, moet overeenkomen met de primaire versie van Storm geïnstalleerd op HDInsight.The Microsoft.SCP.Net.SDK NuGet package you use for your project must match the major version of Storm installed on HDInsight. HDInsight-versies 3,5 en 3,6 gebruiken Storm 1. x, dus u moet SCP.NET versie 1.0. x. x met deze clusters gebruiken.HDInsight versions 3.5 and 3.6 use Storm 1.x, so you must use SCP.NET version 1.0.x.x with these clusters.

Belangrijk

In het voor beeld in dit document wordt een HDInsight 3,5-of 3,6-cluster verwacht.The example in this document expects an HDInsight 3.5 or 3.6 cluster.

Linux is het enige besturingssysteem dat wordt gebruikt in HDInsight-versie 3.4 of hoger.Linux is the only operating system used on HDInsight version 3.4 or greater.

C#topologieën moeten ook .NET 4,5-doel hebben.C# topologies must also target .NET 4.5.

Werken met Event HubsHow to work with Event Hubs

Micro soft biedt een set Java-onderdelen die kunnen worden gebruikt om te communiceren met Event Hubs vanuit een storm-topologie.Microsoft provides a set of Java components that can be used to communicate with Event Hubs from a Storm topology. U vindt het bestand met het Java-archief (JAR) dat een met HDInsight 3,6 compatibele versie van deze https://github.com/hdinsight/mvn-repo/raw/master/org/apache/storm/storm-eventhubs/1.1.0.1/storm-eventhubs-1.1.0.1.jaronderdelen bevat op.You can find the Java archive (JAR) file that contains an HDInsight 3.6 compatible version of these components at https://github.com/hdinsight/mvn-repo/raw/master/org/apache/storm/storm-eventhubs/1.1.0.1/storm-eventhubs-1.1.0.1.jar.

Belangrijk

Hoewel de onderdelen in Java zijn geschreven, kunt u ze eenvoudig vanuit een C# topologie gebruiken.While the components are written in Java, you can easily use them from a C# topology.

De volgende onderdelen worden gebruikt in dit voor beeld:The following components are used in this example:

  • EventHubSpout: Hiermee worden gegevens uit Event Hubs gelezen.EventHubSpout: Reads data from Event Hubs.
  • EventHubBolt: Schrijft gegevens naar Event Hubs.EventHubBolt: Writes data to Event Hubs.
  • EventHubSpoutConfig: Wordt gebruikt om EventHubSpout te configureren.EventHubSpoutConfig: Used to configure EventHubSpout.
  • EventHubBoltConfig: Wordt gebruikt om EventHubBolt te configureren.EventHubBoltConfig: Used to configure EventHubBolt.

Voor beeld van Spout-gebruikExample spout usage

SCP.NET biedt methoden voor het toevoegen van een EventHubSpout aan uw topologie.SCP.NET provides methods for adding an EventHubSpout to your topology. Deze methoden maken het gemakkelijker om een Spout toe te voegen dan het gebruik van de algemene methoden voor het toevoegen van een Java-onderdeel.These methods make it easier to add a spout than using the generic methods for adding a Java component. In het volgende voor beeld ziet u hoe u een Spout maakt met behulp van de SetEventHubSpout -en EventHubSpoutConfig -methoden van SCP.net:The following example demonstrates how to create a spout by using the SetEventHubSpout and EventHubSpoutConfig methods provided by SCP.NET:

 topologyBuilder.SetEventHubSpout(
    "EventHubSpout",
    new EventHubSpoutConfig(
        ConfigurationManager.AppSettings["EventHubSharedAccessKeyName"],
        ConfigurationManager.AppSettings["EventHubSharedAccessKey"],
        ConfigurationManager.AppSettings["EventHubNamespace"],
        ConfigurationManager.AppSettings["EventHubEntityPath"],
        eventHubPartitions),
    eventHubPartitions);

In het vorige voor beeld wordt een nieuw Spout-onderdeel met de naam __EventHubSpout__gemaakt en geconfigureerd om te communiceren met een event hub.The previous example creates a new spout component named EventHubSpout, and configures it to communicate with an event hub. De parallellisme Hint voor het onderdeel wordt ingesteld op het aantal partities in de Event Hub.The parallelism hint for the component is set to the number of partitions in the event hub. Met deze instelling kan Storm een exemplaar van het onderdeel maken voor elke partitie.This setting allows Storm to create an instance of the component for each partition.

Voor beeld van bout gebruikExample bolt usage

Gebruik de methode JavaComponmentConstructor om een exemplaar van de schicht te maken.Use the JavaComponmentConstructor method to create an instance of the bolt. In het volgende voor beeld ziet u hoe u een nieuw exemplaar van de EventHubBoltmaakt en configureert:The following example demonstrates how to create and configure a new instance of the EventHubBolt:

// Java construcvtor for the Event Hub Bolt
JavaComponentConstructor constructor = JavaComponentConstructor.CreateFromClojureExpr(
    String.Format(@"(org.apache.storm.eventhubs.bolt.EventHubBolt. (org.apache.storm.eventhubs.bolt.EventHubBoltConfig. " +
        @"""{0}"" ""{1}"" ""{2}"" ""{3}"" ""{4}"" {5}))",
        ConfigurationManager.AppSettings["EventHubPolicyName"],
        ConfigurationManager.AppSettings["EventHubPolicyKey"],
        ConfigurationManager.AppSettings["EventHubNamespace"],
        "servicebus.windows.net",
        ConfigurationManager.AppSettings["EventHubName"],
        "true"));

// Set the bolt to subscribe to data from the spout
topologyBuilder.SetJavaBolt(
    "eventhubbolt",
    constructor,
    partitionCount)
        .shuffleGrouping("Spout");

Notitie

In dit voor beeld wordt een clojure-expressie gebruikt die als teken reeks is door gegeven, in plaats van JavaComponentConstructor te gebruiken om een EventHubBoltConfigte maken, omdat het Spout-voor beeld.This example uses a Clojure expression passed as a string, instead of using JavaComponentConstructor to create an EventHubBoltConfig, as the spout example did. Beide methoden werken.Either method works. Gebruik de methode die het beste bij u past.Use the method that feels best to you.

Het voltooide project downloadenDownload the completed project

U kunt een volledige versie downloaden van het project dat in dit artikel is gemaakt op basis van github.You can download a complete version of the project created in this article from GitHub. U moet echter nog steeds configuratie-instellingen opgeven door de stappen in dit artikel te volgen.However, you still need to provide configuration settings by following the steps in this article.

VereistenPrerequisites

  • Een Apache Storm cluster in HDInsight.An Apache Storm cluster on HDInsight. Zie Apache Hadoop clusters maken met behulp van de Azure Portal en selecteer Storm voor het cluster type.See Create Apache Hadoop clusters using the Azure portal and select Storm for Cluster type.

    Waarschuwing

    In het voor beeld dat in dit document wordt gebruikt, is Storm vereist voor HDInsight-versie 3,5 of 3,6.The example used in this document requires Storm on HDInsight version 3.5 or 3.6. Dit werkt niet met oudere versies van HDInsight, omdat wijzigingen in de naam van de klasse worden verbroken.This does not work with older versions of HDInsight, due to breaking class name changes. Voor een versie van dit voor beeld die werkt met oudere clusters, Zie github.For a version of this example that works with older clusters, see GitHub.

  • Een Azure-Event hub.An Azure event hub.

  • De Azure .NET SDK.The Azure .NET SDK.

  • De HDInsight-hulpprogram ma's voor Visual Studio.The HDInsight tools for Visual Studio.

  • Java JDK 1,8 of hoger in uw ontwikkel omgeving.Java JDK 1.8 or later on your development environment. JDK-down loads zijn beschikbaar via Oracle.JDK downloads are available from Oracle.

    • De omgevings variabele JAVA_HOME moet verwijzen naar de map die Java bevat.The JAVA_HOME environment variable must point to the directory that contains Java.
    • De map % JAVA_HOME%/bin moet zich in het pad bevinden.The %JAVA_HOME%/bin directory must be in the path.

De Event Hubs-onderdelen downloadenDownload the Event Hubs components

Down load het Event Hubs Spout-en- https://github.com/hdinsight/mvn-repo/raw/master/org/apache/storm/storm-eventhubs/1.1.0.1/storm-eventhubs-1.1.0.1.jarbout-onderdeel van.Download the Event Hubs spout and bolt component from https://github.com/hdinsight/mvn-repo/raw/master/org/apache/storm/storm-eventhubs/1.1.0.1/storm-eventhubs-1.1.0.1.jar.

Maak een map met eventhubspoutde naam en sla het bestand op in de map.Create a directory named eventhubspout, and save the file into the directory.

Event Hubs configurerenConfigure Event Hubs

Event Hubs is de gegevens bron voor dit voor beeld.Event Hubs is the data source for this example. Gebruik de informatie in de sectie ' een Event Hub maken ' van aan de slag met Event hubs.Use the information in the "Create an event hub" section of Get started with Event Hubs.

  1. Nadat de Event Hub is gemaakt, bekijkt u de instellingen voor EventHub in de Azure Portal en selecteert u beleid voor gedeelde toegang.After the event hub has been created, view the EventHub settings in the Azure portal, and select Shared access policies. Selecteer + toevoegen om het volgende beleid toe te voegen:Select + Add to add the following policies:

    NameName MachtigingenPermissions
    schrijverwriter VerzendenSend
    lezerreader LuisterenListen

    Scherm afbeelding van het venster toegangs beleid delen

  2. Selecteer het beleid voor lezer en Writer .Select the reader and writer policies. Kopieer de primaire-sleutel waarde voor beide beleids regels en sla deze op. deze waarden worden later gebruikt.Copy and save the primary key value for both policies, as these values are used later.

De EventHubWriter configurerenConfigure the EventHubWriter

  1. Als u de nieuwste versie van de HDInsight-hulpprogram ma's voor Visual Studio nog niet hebt geïnstalleerd, raadpleegt u aan de slag met HDInsight-hulpprogram ma's voor Visual Studio.If you have not already installed the latest version of the HDInsight tools for Visual Studio, see Get started using HDInsight tools for Visual Studio.

  2. Down load de oplossing van eventhub-Storm-hybride.Download the solution from eventhub-storm-hybrid.

  3. Open het bestand app. config in het project EventHubWriter .In the EventHubWriter project, open the App.config file. Gebruik de informatie uit de Event Hub die u eerder hebt geconfigureerd om de waarde voor de volgende sleutels in te vullen:Use the information from the event hub that you configured earlier to fill in the value for the following keys:

    SleutelKey ValueValue
    EventHubPolicyNameEventHubPolicyName Writer (als u een andere naam voor het beleid met de machtiging verzenden hebt gebruikt, gebruikt u dit in plaats daarvan.)writer (If you used a different name for the policy with Send permission, use it instead.)
    EventHubPolicyKeyEventHubPolicyKey De sleutel voor het Writer-beleid.The key for the writer policy.
    EventHubNamespaceEventHubNamespace De naam ruimte die uw Event Hub bevat.The namespace that contains your event hub.
    EventHubNameEventHubName De naam van uw Event Hub.Your event hub name.
    EventHubPartitionCountEventHubPartitionCount Het aantal partities in uw Event Hub.The number of partitions in your event hub.
  4. Sla het bestand app. config op en sluit het.Save and close the App.config file.

De EventHubReader configurerenConfigure the EventHubReader

  1. Open het EventHubReader -project.Open the EventHubReader project.

  2. Open het bestand app. config voor de EventHubReader.Open the App.config file for the EventHubReader. Gebruik de informatie uit de Event Hub die u eerder hebt geconfigureerd om de waarde voor de volgende sleutels in te vullen:Use the information from the event hub that you configured earlier to fill in the value for the following keys:

    SleutelKey ValueValue
    EventHubPolicyNameEventHubPolicyName lezer (als u een andere naam voor het beleid hebt gebruikt met de machtiging Luis teren , moet u deze gebruiken.)reader (If you used a different name for the policy with listen permission, use it instead.)
    EventHubPolicyKeyEventHubPolicyKey De sleutel voor het Lees beleid.The key for the reader policy.
    EventHubNamespaceEventHubNamespace De naam ruimte die uw Event Hub bevat.The namespace that contains your event hub.
    EventHubNameEventHubName De naam van uw Event Hub.Your event hub name.
    EventHubPartitionCountEventHubPartitionCount Het aantal partities in uw Event Hub.The number of partitions in your event hub.
  3. Sla het bestand app. config op en sluit het.Save and close the App.config file.

De topologieën implementerenDeploy the topologies

  1. Klik vanuit Solution Explorermet de rechter muisknop op het project EventHubReader en selecteer verzenden naar Storm op HDInsight.From Solution Explorer, right-click the EventHubReader project, and select Submit to Storm on HDInsight.

    Scherm opname van Solution Explorer, met verzenden naar Storm op HDInsight gemarkeerd

  2. Selecteer in het dialoog venster indienings topologie het Storm-cluster.On the Submit Topology dialog box, select your Storm Cluster. Vouw extra configuratiesuit, selecteer Java-bestands paden, selecteer ... en selecteer de map met het jar-bestand dat u eerder hebt gedownload.Expand Additional Configurations, select Java File Paths, select ..., and select the directory that contains the JAR file that you downloaded earlier. Klik ten slotte op verzenden.Finally, click Submit.

    Scherm afbeelding van het dialoog venster verzend topologie

  3. Wanneer de topologie is verzonden, wordt de Storm-topologie weergave weer gegeven.When the topology has been submitted, the Storm Topologies Viewer appears. Als u informatie over de topologie wilt weer geven, selecteert u de EventHubReader -topologie in het linkerdeel venster.To view information about the topology, select the EventHubReader topology in the left pane.

    Scherm afbeelding van de viewer voor Storm-topologieën

  4. Klik vanuit Solution Explorermet de rechter muisknop op het project EventHubWriter en selecteer verzenden naar Storm op HDInsight.From Solution Explorer, right-click the EventHubWriter project, and select Submit to Storm on HDInsight.

  5. Selecteer in het dialoog venster indienings topologie het Storm-cluster.On the Submit Topology dialog box, select your Storm Cluster. Vouw extra configuratiesuit, selecteer Java-bestands paden, selecteer ... en selecteer de directory met het jar-bestand dat u eerder hebt gedownload.Expand Additional Configurations, select Java File Paths, select ..., and select the directory that contains the JAR file you downloaded earlier. Klik ten slotte op verzenden.Finally, click Submit.

  6. Wanneer de topologie is verzonden, vernieuwt u de topologie lijst in de Viewer voor Storm-topologieën om te controleren of beide topologieën op het cluster worden uitgevoerd.When the topology has been submitted, refresh the topology list in the Storm Topologies Viewer to verify that both topologies are running on the cluster.

  7. Selecteer in de weer gave Storm-topologieënde EventHubReader -topologie.In Storm Topologies Viewer, select the EventHubReader topology.

  8. Als u het onderdeel overzicht voor de schicht wilt openen, dubbelklikt u op het onderdeel LogBolt in het diagram.To open the component summary for the bolt, double-click the LogBolt component in the diagram.

  9. Selecteer in de sectie uitvoerendeers een van de koppelingen in de kolom poort .In the Executors section, select one of the links in the Port column. Hiermee wordt informatie weer gegeven die door het onderdeel is geregistreerd.This displays information logged by the component. De geregistreerde gegevens zijn vergelijkbaar met de volgende tekst:The logged information is similar to the following text:

     2017-03-02 14:51:29.255 m.s.p.TaskHost [INFO] Received C# STDOUT: 2017-03-02 14:51:29,255 [1] INFO  EventHubReader_LogBolt [(null)] - Received data: {"deviceValue":1830978598,"deviceId":"8566ccbc-034d-45db-883d-d8a31f34068e"}
     2017-03-02 14:51:29.283 m.s.p.TaskHost [INFO] Received C# STDOUT: 2017-03-02 14:51:29,283 [1] INFO  EventHubReader_LogBolt [(null)] - Received data: {"deviceValue":1756413275,"deviceId":"647a5eff-823d-482f-a8b4-b95b35ae570b"}
     2017-03-02 14:51:29.313 m.s.p.TaskHost [INFO] Received C# STDOUT: 2017-03-02 14:51:29,312 [1] INFO  EventHubReader_LogBolt [(null)] - Received data: {"deviceValue":1108478910,"deviceId":"206a68fa-8264-4d61-9100-bfdb68ee8f0a"}
    

De topologieën stoppenStop the topologies

Als u de topologieën wilt stoppen, selecteert u elke topologie in de Storm-topologie Vieweren klikt u vervolgens op Kill.To stop the topologies, select each topology in the Storm Topology Viewer, then click Kill.

Scherm afbeelding van Storm-topologie viewer met de knop voor het afsluiten van de weer gave

Uw cluster verwijderenDelete your cluster

Waarschuwing

Voor HDInsight-clusters worden pro rata per minuut, of u ze of niet gebruiken.Billing for HDInsight clusters is prorated per minute, whether you use them or not. Zorg ervoor dat uw cluster verwijderen nadat u klaar bent met het gebruik ervan.Be sure to delete your cluster after you finish using it. Zie verwijderen van een HDInsight-cluster.See how to delete an HDInsight cluster.

Volgende stappenNext steps

In dit document hebt u geleerd hoe u de Java Event Hubs Spout en-bout kunt gebruiken vanuit C# een topologie om te werken met gegevens in azure Event hubs.In this document, you have learned how to use the Java Event Hubs spout and bolt from a C# topology to work with data in Azure Event Hubs. Zie het volgende voor meer C# informatie over het maken van topologieën:To learn more about creating C# topologies, see the following: