Cookie Consent by FreePrivacyPolicy.com rheindata GmbH | Echtzeitdatenverarbeitung und Analyse mit Microsoft Azure Echtzeitdatenverarbeitung und Analyse mit Microsoft Azure

Echtzeitdatenverarbeitung und Analyse mit Microsoft Azure


Stephan W.Big Data wird häufig anhand der 3V charakterisiert: Volume (Menge), Variety (Vielfalt) und Velocity (Geschwindigkeit). Velocity bezieht sich dabei auf die erhöhte Geschwindigkeit, mit der Daten produziert und verarbeitet werden. Die Verarbeitung von Daten in Echtzeit kann dabei gegenüber der klassischen Batch-Verarbeitung entscheidende Vorteile bieten, da eine schnellere Reaktion auf Ereignisse ermöglicht wird. Microsoft Azure bietet verschiedene Cloud-Dienste, welche die Datenverarbeitung und -analyse in Echtzeit ermöglichen und sich einfach mit anderen Azure-Diensten integrieren lassen. In unserem Beitrag stellen wir Ihnen zwei dieser Dienste genauer vor und demonstrieren anhand eines Beispiels, wie Sie diese zur Echtzeitdatenverarbeitung einsetzen können.



Azure Event Hubs

Bei Azure Event Hubs handelt es sich um einen Dienst zur Echtzeitdatenerfassung, mit dem große Mengen von Daten in kürzester Zeit empfangen und verarbeitet werden können. Als Ereigniserfassungsdienst steht Event Hubs zwischen Producern, welche die Ereignisse erzeugen und an den Event Hub senden, und Consumern, welche die Ereignisse im Anschluss verarbeiten. Event Hubs stellt Bibliotheken für verschiedene Programmiersprachen, wie .NET, Java, Python oder JavaScript, bereit, welche das Senden oder Empfangen von Ereignissen an und von Event Hubs ermöglichen. Sollten bereits Apache Kafka-Anwendungen vorhanden sein, können Sie diese Anwendungen auch mit Azure Event Hubs nutzen. Ein weiterer Vorteil von Event Hubs ist die Skalierbarkeit. Egal ob Ihre Datenströme nur wenige Megabytes oder mehrere Gigabytes groß sind: sobald sich das Volumen der übertragenen Daten erhöht und bestimmte Schwellenwerte überschreitet, erfolgt eine automatische Hochskalierung durch Erhöhung der Anzahl der Durchsatzeinheiten. So passt sich Event Hubs dynamisch an Ihre Anforderungen an und stellt sicher, dass Sie immer über die notwendigen Ressourcen verfügen.


Azure Stream Analytics

Mit Stream Analytics bietet Azure einen Dienst zur Echtzeitanalyse von Daten, welcher sich unter anderem durch die große Benutzerfreundlichkeit auszeichnet. Stream Analytics verarbeitet Datenströme wie sie z.B. von Azure Event Hubs oder Azure IoT Hub ausgegeben werden. Dabei ist es möglich Daten aus mehreren Eingabequellen gleichzeitig zu analysieren und mit Referenzdaten aus Azure Blob Storage oder Azure SQL Database zu verknüpfen. Die Transformation der Daten erfolgt in Azure Stream Analytics mit einer auf SQL basierenden Abfragesprache, welche zusätzlich einige nützliche Funktionen zur Analyse von Daten in temporalen Fenstern bereitstellt. Zur Visualisierung Ihrer Datenströme in Echtzeit bietet sich die Integration von Stream Analytics mit Microsoft Power BI an.


Konfiguration von Azure Event Hubs

Zur Einrichtung eines Azure Event Hubs wir zunächst ein Azure Event Hubs Namespace benötigt, welcher als Container zur Verwaltung von mehreren Event Hubs fungiert. Dieser kann über das Azure-Portal angelegt werden. Die für den Namespace vorgenommenen Konfigurationen betreffen alle dadurch verwalteten Event Hubs. Beim Erstellen eines Event Hubs Namespace ist zu beachten, dass je nach gewähltem Tarif einige Funktionen nicht oder nur eingeschränkt verfügbar sind. So kann beispielsweise im Basis-Tarif die Capture-Funktion nicht genutzt werden oder der Aufbewahrungszeitraum von Nachrichten nicht erhöht werden. Da ein nachträglicher Tarifwechsel nicht möglich ist, sollte man sich bereits im Voraus darüber im Klaren sein, welche Funktionen benötigt werden. Im Standard- und Premium-Tarif kann zusätzlich die Auto-Inflate Funktion aktiviert werden, was die automatische Skalierung der Anzahl der Durchsatzeinheiten ermöglicht.

Azure Event Hub Namespace


Sobald ein Event Hubs Namespace vorhanden ist, können innerhalb dieses Namespaces die Event Hub Instanzen erstellt werden. Hierbei kann unter anderem die Anzahl der Partitionen festgelegt werden, welche im Nachgang nicht mehr verändert werden kann. Die von Event-Producern an den Event Hub gesendeten Nachrichten werden auf die Partitionen verteilt und sind innerhalb einer Partition nach Ankunftszeit geordnet. In den Tarifen Standard und Premium kann außerdem der Aufbewahrungszeitraum von Nachrichten definiert werden, welcher zwischen 1 und 7 Tagen liegen kann. Ältere Nachrichten werden aus dem Event Hub entfernt. Sollen die Ereignisse archiviert oder aus anderen Gründen längerfristig gespeichert werden, kann stattdessen die Capture-Funktion aktiviert werden. Mit diesem Feature werden die ankommende Echtzeit-Daten automatisch in einem Azure Blob Storage oder einem Azure Data Lake Storage gesichert. Diese Funktion kann auch für bereits bestehende Event Hubs aktiviert werden.‎

Create Azure Event Hub


Über den Event Hubs Namespace kann anschließend auf alle verwalteten Event Hubs Instanzen zugegriffen werden.

Sample Namespace


Um einen Event Hub mit Ereignissen zu versorgen, ist ein Producer erforderlich. Die folgende Abbildung zeigt ein beispielhaftes Python-Skript, welches Daten an den soeben erstellten Event Hub sendet. Dazu wird lediglich ein Connection String und der Name des Event Hubs benötigt.

Connection String


Den Connection String findet man, wie in der nächsten Abbildung erkennbar ist, unter „Shared access policies“ im jeweiligen Event Hub. Hier kann entweder eine vorhandene Policy verwendet oder auch eine neue erstellt werden. Alternativ kann auch der Connection String des Event Hubs Namespaces verwendet werden, was der Anwendung den Zugriff auf alle Event Hubs im Namespace ermöglicht.

Sample Hub


Sobald der Producer Ereignisse an den Event Hub sendet, kann überprüft werden, ob diese auch dort ankommen. Hierzu eignet sich die in der folgenden Abbildung gezeigte Übersichtsseite des Event Hubs, auf der sowohl ein- als auch ausgehende Datenströme visualisiert werden.

Sample Hub Ereignisse


Um die vom Event Hub empfangenen Ereignisse zu verarbeiten, wird im nächsten Schritt ein Consumer eingerichtet. Ein Consumer kann wie schon der Producer ein Programm in einer von vielen Programmiersprachen sein, für die Microsoft Azure die notwendigen Bibliotheken anbietet. Wenn Sie eine unkomplizierte Möglichkeit suchen Ihre Datenströme in Echtzeit zu analysieren, bietet sich Azure Stream Analytics als Consumer an, welches in diesem Eintrag ebenfalls betrachtet wird. Sollen die Datenströme in mehrere Anwendungen einfließen, kann das realisiert werden, indem verschiedene Consumergruppen erstellt werden. Die Consumergruppen stellen separate Ansichten des Ereignisstroms dar und können den Datenstrom unabhängig voneinander lesen. Die maximale Anzahl der Consumergruppen pro Event Hub richtet sich nach dem gewähltem Tarif, wobei Nutzer des Basis-Tarifes auf eine Standard-Consumergruppe beschränkt sind.


Konfiguration von Azure Stream Analytics

Um Datenströme aus Azure Event Hub mit Azure Stream Analytics zu verarbeiten, muss zuerst ein neuer Stream Analytics Job erstellt werden.

Azure Stream Analytics New Job


Bevor der neu erstellte Job gestartet werden kann, müssen im nächsten Schritt die Eingabequelle(n) und die Ausgabe(n) angelegt werden. Außerdem muss die SQL-Abfrage definiert werden, mit der die Daten von der Eingabe in die Ausgabe bewegt und transformiert werden.

Azure Stream Analytics Transformation


In unserem Beispiel wird der zuvor erstellte Azure Event Hub als Eingabe für den Stream Analytics Job verwendet. Weitere Eingabequellen, die unterstützt werden, sind Azure IoT Hub, Azure Blob Storage und Azure Data Lake Storage Gen2. Wie schon bei der Einrichtung des Producers, bietet sich auch hier die Verwendung eines Connection Strings zur Verbindung mit dem Event Hub an. Stream Analytics unterstützt eine große Anzahl von Ausgabetypen. In diesem Beispiel sollen die Daten in eine existierende SQL-Datenbank geschrieben werden. Dazu muss der Ausgabetyp SQL-Database gewählt und die Ziel-Tabelle definiert werden.

Azure Stream Analytics Input Output


Wenn die Ein- und Ausgaben angelegt sind, kann die SQL-Abfrage erstellt werden, welche das Herzstück eines Stream Analytics Jobs darstellt. Hier werden die Daten aus der zuvor definierten Eingabequelle selektiert und in die gewünschte Ausgabe bewegt. Dabei ist es wichtig darauf zu achten, dass das Ausgabeschema der Select-Abfrage mit dem Schema der Ziel-Tabelle übereinstimmt. Unter dem Reiter „Input preview“ wird eine Vorschau des aus der Eingabequelle kommenden Datenstroms angezeigt. Nach einen Klick auf „Test query“ kann das Ergebnis der Abfrage begutachtet werden, so wie es anschließend in die Ausgabe geschrieben wird. Die nächste Abbildung zeigt als Beispiel eine simple Abfrage, welche die Daten unverändert von der Eingabe in die Ausgabe schreibt.

Azure Stream Analytics Sample Job


Neben den standardmäßig in SQL enthaltenen Filtermöglichkeiten und Aggregationen bietet Stream Analytics zusätzlich einige Funktionen, welche bei der Analyse von temporalen Fenstern in Datenströmen von Nutzen sind. Nachdem die Abfrage gespeichert wurde, kann der Stream Analytics Job über die Übersichtsseite gestartet werden. Um Änderungen an der Abfrage vorzunehmen, muss der Job erst wieder gestoppt werden.

Azure Stream Analytics Sample Streaming Job


Wenn Sie Unterstützung zum Azure Event Hub oder zu Azure Stream Analytics und der optimalen Verwendung suchen, sprechen Sie uns gerne an!