Tutorial: Verarbeiten von Apache Kafka für Event Hubs-Ereignisse mithilfe von Stream Analytics

Dieser Artikel zeigt, wie Daten an Event Hubs gestreamt und mit Azure Stream Analytics verarbeitet werden können. Die folgenden Schritte werden behandelt:

  1. Erstellen eines Event Hubs-Namespace
  2. Erstellen eines Kafka-Clients, der Nachrichten an den Event Hub sendet
  3. Erstellen eines Stream Analytics-Auftrags, der Daten aus dem Event Hub in Azure Blob Storage kopiert

Sie müssen Ihre Protokollclients nicht ändern oder eigene Cluster betreiben, wenn Sie den Kafka-Endpunkt verwenden, der von einem Event Hub verfügbar gemacht wird. Azure Event Hubs unterstützt Version 1.0 von Apache Kafka und höher.

Voraussetzungen

Für diese Schnellstartanleitung benötigen Sie Folgendes:

Erstellen eines Event Hubs-Namespace

Wenn Sie einen Event Hubs-Namespace erstellen, wird der Kafka-Endpunkt für den Namespace automatisch aktiviert. Sie können Ereignisse von Ihren Anwendungen streamen, die das Kafka-Protokoll in Event Hubs verwenden. Befolgen Sie die Schritt-für-Schritt-Anleitung unter Erstellen eines Event Hubs mithilfe des Azure-Portals, um einen Event Hubs-Namespace zu erstellen. Wenn Sie einen dedizierten Cluster verwenden, finden Sie weitere Informationen unter Erstellen eines Namespace und eines Event Hubs in einem dedizierten Cluster.

Hinweis

Event Hubs für Kafka wird im Basic-Tarif nicht unterstützt.

Senden von Nachrichten mit Kafka in Event Hubs

  1. Klonen Sie das Azure Event Hubs für Kafka-Repository auf Ihrem Computer.

  2. Navigieren Sie zum Ordner azure-event-hubs-for-kafka/quickstart/java/producer.

  3. Aktualisieren Sie die Konfigurationsdetails für die Producer in src/main/resources/producer.config. Geben Sie den Namen und die Verbindungszeichenfolge des Event Hub-Namespace an.

    bootstrap.servers={EVENT HUB NAMESPACE}.servicebus.windows.net:9093
    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{CONNECTION STRING for EVENT HUB NAMESPACE}";
    
  4. Navigieren Sie zu azure-event-hubs-for-kafka/quickstart/java/producer/src/main/java/, und öffnen Sie die Datei TestDataReporter.java in einem Editor Ihrer Wahl.

  5. Kommentieren Sie die folgenden Codezeilen aus:

                //final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "Test Data " + i);
    
  6. Fügen Sie anstelle des auskommentierten Codes die folgende Codezeile hinzu:

                final ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, time, "{ \"eventData\": \"Test Data " + i + "\" }");            
    

    Dieser Code sendet die Ereignisdaten im JSON-Format. Wenn Sie die Eingabe für einen Stream Analytics-Auftrag konfigurieren, geben Sie JSON als Format für die Eingabedaten an.

  7. Führen Sie den Producer aus, und streamen Sie Daten an Event Hubs. Wechseln Sie auf einem Windows-Computer bei Verwendung einer Node.js-Eingabeaufforderung zum Ordner azure-event-hubs-for-kafka/quickstart/java/producer, bevor Sie diese Befehle ausführen.

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    

Sicherstellen, dass der Event Hub die Daten empfängt

  1. Wählen Sie unter ENTITÄTEN die Option Event Hubs aus. Bestätigen Sie, dass ein Event Hub mit dem Namen test angezeigt wird.

    Event Hub „test“

  2. Bestätigen Sie, dass im Event Hub Nachrichten eingehen.

    Event Hub-Nachrichten

Verarbeiten von Ereignisdaten mithilfe eines Stream Analytics-Auftrags

In diesem Abschnitt erstellen Sie einen Azure Stream Analytics-Auftrag. Der Kafka-Client sendet Ereignisse an den Event Hub. Sie erstellen einen Stream Analytics-Auftrag, der Ereignisdaten als Eingabe verwendet und diese in Azure Blob Storage ausgibt. Wenn Sie über kein Azure Storage-Konto verfügen, müssen Sie eines erstellen.

Die Abfrage im Stream Analytics-Auftrag durchläuft die Daten, ohne eine Analyse vorzunehmen. Sie können eine Abfrage erstellen, die die Eingabedaten transformiert, um Ausgabedaten in einem anderen Format oder mit gewonnenen Erkenntnissen zu erzeugen.

Erstellen eines Stream Analytics-Auftrags

  1. Klicken Sie im Azure-Portal auf + Ressource erstellen.
  2. Wählen Sie Analytics im Menü Azure Marketplace und dann Stream Analytics-Auftrag aus.
  3. Gehen Sie auf der Seite Neuer Stream Analytics-Auftrag wie folgt vor:
    1. Geben Sie einen Namen für den Auftrag ein.

    2. Wählen Sie Ihr Abonnementaus.

    3. Klicken Sie für die Ressourcengruppe auf Neu erstellen, und geben Sie den Namen ein. Sie können auch eine vorhandene Ressourcengruppe verwenden.

    4. Wählen Sie einen Speicherort für den Auftrag aus.

    5. Klicken Sie auf Erstellen, um den Auftrag zu erstellen.

      Neuer Stream Analytics-Auftrag

Konfigurieren einer Auftragseingabe

  1. Wählen Sie in der Benachrichtigungsmeldung Zur Ressource wechseln aus, um die Seite Stream Analytics-Auftrag einzublenden.

  2. Wählen Sie im Abschnitt AUFTRAGSTOPOLOGIE im linken Menü Eingaben aus.

  3. Klicken Sie auf Datenstromeingabe hinzufügen, und wählen Sie Event Hub aus.

    Hinzufügen eines Event Hubs als Eingabe

  4. Führen Sie auf der Konfigurationsseite Event Hub-Eingabe die folgenden Schritte aus:

    1. Geben Sie einen Alias für die Eingabe an.

    2. Wählen Sie Ihr Azure-Abonnement aus.

    3. Wählen Sie den Event Hub-Namespace aus, den Sie zuvor erstellt haben.

    4. Wählen Sie test als Event Hub aus.

    5. Wählen Sie Speichern aus.

      Event Hub-Eingabekonfiguration

Konfigurieren der Auftragsausgabe

  1. Wählen Sie im Abschnitt AUFTRAGSTOPOLOGIE im linken Menü Ausgaben aus.
  2. Klicken Sie auf der Symbolleiste auf + Hinzufügen, und wählen Sie Blob Storage aus.
  3. Gehen Sie auf der Seite mit den Blob Storage-Ausgabeeinstellungen folgendermaßen vor:
    1. Geben Sie einen Alias für die Ausgabe an.

    2. Wählen Sie Ihr Azure- Abonnementaus.

    3. Wählen Sie Ihr Azure Storage-Konto aus.

    4. Geben Sie einen Namen für den Container ein, in dem die Ausgabedaten der Stream Analytics-Abfrage gespeichert werden.

    5. Wählen Sie Speichern aus.

      Blob Storage-Ausgabekonfiguration

Definieren einer Abfrage

Nachdem Sie einen Stream Analytics-Auftrag eingerichtet haben, um einen eingehenden Datenstrom zu lesen, ist der nächste Schritt die Erstellung einer Transformation, bei der Daten in Echtzeit analysiert werden. Sie definieren die Transformationsabfrage mit der Stream Analytics-Abfragesprache. In dieser exemplarischen Vorgehensweise definieren Sie eine Abfrage, die die Daten ohne jegliche Transformation durchläuft.

  1. Wählen Sie Abfrage.

  2. Ersetzen Sie im Abfragefenster [YourOutputAlias] durch den Ausgabealias, den Sie zuvor erstellt haben.

  3. Ersetzen Sie [YourInputAlias] durch den Eingabealias, den Sie zuvor erstellt haben.

  4. Wählen Sie auf der Symbolleiste Speichern aus.

    Screenshot: Abfragefenster mit Werten für Eingabe- und Ausgabevariablen

Ausführen des Stream Analytics-Auftrags

  1. Klicken Sie im linken Menü auf Übersicht.

  2. Wählen Sie Starten aus.

    Startmenü

  3. Klicken Sie auf der Seite Auftrag starten auf Jetzt.

    Seite „Auftrag starten“

  4. Warten Sie, bis sich der Status des Auftrags von Wird gestartet in Wird ausgeführt ändert.

    Auftragsstatus: Wird ausgeführt

Prüfen des Szenarios

  1. Führen Sie die Kafka Producer erneut aus, um Ereignisse an den Event Hub zu senden.

    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    
  2. Überprüfen Sie, ob Ausgabedaten in Azure Blob Storage generiert werden. Sie sehen im Container eine JSON-Datei mit 100 Zeilen, die wie die folgenden Beispielzeilen aussehen:

    {"eventData":"Test Data 0","EventProcessedUtcTime":"2018-08-30T03:27:23.1592910Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    {"eventData":"Test Data 1","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    {"eventData":"Test Data 2","EventProcessedUtcTime":"2018-08-30T03:27:23.3936511Z","PartitionId":0,"EventEnqueuedUtcTime":"2018-08-30T03:27:22.9220000Z"}
    

    Der Azure Stream Analytics-Auftrag hat in diesem Szenario Eingabedaten vom Event Hub empfangen und diese in Azure Blob Storage gespeichert.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Daten an Event Hubs gestreamt werden, ohne dass Sie Protokollclients ändern oder eigene Cluster ausführen müssen. Weitere Informationen zu Event Hubs für Apache Kafka finden Sie unter Apache Kafka-Entwicklerleitfaden für Azure Event Hubs.