0
18. Oktober 2016

Big Data: Near Real-Time Analytics mit Azure

In Besprechungen, die sich mit der mittel bis kurzfristigen strategischen (Neu-)Ausrichtung der analytischen Bereiche eines Unternehmens beschäftigen, ist der Begriff „Big Data“ ein zentraler Bestandteil. Eine Hemmschwelle für die Einführung von Big Data-Lösungen, ist oft der bevorstehende Aufwand. Microsoft Azure hilft dabei, diese Hemmschwelle zu überwinden.


Dieser Beitrag wird den „Buzz Words“ um Big Data keine Relevanz geben. Auch nicht mit dem häufig (unkorrekter Weise) propagierten „Tot des DWH“ durch Big Data. Vielmehr erfahren Sie, wie einfach die Einrichtung eines Near-Real-Time Datenstroms zu einem Dashboard mit Microsoft Azure funktionieren kann. Dazu werden ein Event Hub, ein Datenstrom (Stream) in Azure erstellt und ein Real-Time-Dashboard Power BI für Near-Real-Time Analytics gezeigt. Dieses Einrichten kann wesentlich kosteneffizienter sein, als eine vollständige Eigenentwicklung und führt schnell zu sichtbaren Ergebnissen. Ein Nutzen von Big Data für das Unternehmen ist somit effizient herausstellbar und das mit geringem Arbeitsaufwand.

Azure Account einrichten

Als erstes wird ein Azure-Account benötigt, den man unter folgendem Link einrichten kann. Aktuell kann man sich bei der Registrierung ein 170€ Guthaben von Microsoft sichern. Nach der Registrierung kann die Anmeldung über das Azureportal erfolgen. Nach dem Login an dem Portal, erscheint das Dashboard. Auf dem Dashboard können unterschiedliche Ressourcen angepinnt werden, die zuvor eingestellt wurden. Im linken rot markierten Bereich auf dem folgenden Bild, kann zu einzelnen Services navigiert oder neue angelegt werden.

azure-dashboard

Die Event Hub Ressource

Als ersten Bestandteil der Lösung aus Diensten/Ressourcen benötigt man einen Event Hub auf Azure. Ein Event Hub wird auf Azure unter einer Event Hubs Ressource angelegt. Den Event Hub kann man sich als den Dienst vorstellen, der einmal als Endpoint beliebige Daten aufnimmt und andererseits als Quelle fungiert, um diese Daten weiterzureichen. Mit Beliebig ist gemeint, dass unterschiedliche Quellen (Apps, Devices, Logs, …), gleichzeitig Millionen von Datensätze an ihn senden können. Wichtig ist es sich zu merken: Event Hubs sichern die Daten nicht dauerhaft persistent. Um eine Event Hub Ressource einzurichten wählt man auf dem Dashboard „New/ Inernet of Things/ Event Hubs“. Die Event Hubs Ressource kann wiederum unterschiedliche Event Hubs beinhalten. Der Einzelne Event Hub kann separat angesprochen werden

azure_eventhub_1
Event Hub anlegen Schritt 1

Im Anschluss werden die Informationen zur Event Hubs Ressource wie Name, Subscription über die abgerechnet wird und die Ressourcengruppe eingegeben. Die Ressourcengruppe dient dazu, unterschiedliche Ressourcen zusammenzufassen. Hier wurde eine Big Data Ressourcengruppe angelegt um alle Big Data Ressourcen darunter zusammenzufassen. Weiter unten kann man sich noch dazu entscheiden den Service an das Dashboard zu pinnen oder nicht. Außerdem kann noch die geographische Lage des Services in der Azure-Cloud ausgewählt werden. Man sollte beachten: Liegen Services an unterschiedlichen Geolokationen, können Mehrkosten für das Verschieben von Daten entstehen.

Event Hub Schritt 2
Event Hub anlegen Schritt 2

Wenn man auf Create klickt erscheint auf dem Dashboard das folgende Bild (sollte die Option Pin to Dashboard ausgewählt sein).  Die Grafik zeigt an, wann die Ressource fertig gestellt ist. In unserem Fall hat das Bereitstellen 34 Sekunden gedauert.

Event Hub anlegen Schritt 3

Event Hub

Als nächstes wird ein Event Hub benötigt. Dieser wird über den Pfad „<<Event Hubs Dashboardicon>>“ oder auf der linken Bildschirmseite des Portals: „Ressourcegroups/<<myressourcegroup>>/<<fooeventhub>>“ angelegt. Im nächsten Schritt wählt man „Event Hubs/Add Event Hub“. Hier wird ein Name vergeben, die anderen Informationen werden an dieser Stelle ausgelassen. Nur so viel dazu: der Partition Count erlaubt mehrere Datensegmente, die separat konsumiert werden können und mit Archive kann man die Daten aus dem Event Hub direkt in einen eigenen Azur-Blob archivieren. Nach 1:30 Min ist der Event Hub nun verfügbar. Er erscheint dann im mittleren Bildschirmbereich unter „Ressourcegroups/<<myressourcegroup>>/<<fooeventhub>>/Event Hubs“

Event Hub anlegen Schritt 4
Event Hub anlegen Schritt 4

Nun wird eine Consumer group über den Pfad „Ressourcegroups/<<myressourcegroup>>/<<fooeventhub>>/Event Hubs/Consumer groups“ angelegt und ein sprechender Name vergeben (z. B. fooconsumer).

Event Hub einrichten Schritt 5
Event Hub einrichten Schritt 5

Zusätzlich wird eine Shared Access Policie benötigt, die uns Zugriff auf den Event Hub gibt. Der Pfad lautet „Ressourcegroups/<<myressourcegroup>>/<<fooeventhub>>/Event Hubs/Shared access policies“.

Event Hub einrichten Schritt 6
Event Hub einrichten Schritt 6

Stream Analytics Job einrichten

Wie bereits angesprochen bietet der Event Hub für eine definierte Zeitspanne die Möglichkeit Daten aufzunehmen und abzugeben. Mit dem Event Hub wurde ein hoch verfügbares, selbstständig skalierendes „Datengefäß“ erstellt. Dabei musste man sich keine Gedanken über die Hardware machen. Folglich möchte man die Daten nun auch konsumieren. Hierfür könnte natürlich eine eigene Lösung entwickelt werden aber auch an dieser Stelle hat Azure eine passende Lösung, die Stream Analytics Jobs.

Im Folgenden wird ein Stream Analytics-Job eingerichtet. Dieser Job ist von Haus aus mit Microsoft Event Hubs integriert und bietet somit eine direkte Anbindung. Der Stream Analytics Job ermöglicht die Definition mehrerer Input-Quellen und das weiter streamen an mehrere Output-Senken. Dabei funktioniert das In-Streaming und Out-Streaming ganz einfach per SQL-naher Syntax. Stream Analytics gibt dem User somit enorme Möglichkeiten, mit bekannter Sprache an die Hand. Man erhält somit die Möglichkeit Daten bereits im Stream aufzubereiten und zu manipulieren.

Um einen Stream Analytics Job anzulegen geht man vom Dashboard aus über den Pfad  „New/ Inernet of Things/ Stream Analytics job“. Hier wird wie bereits bei dem Event Hub ein Name (foostream), die Subscription, Ressourcegroup und Geographische Lage angegeben. Auch hier kann eine Kachel an das Dashboard gepinnt werden. Das anlegen des Jobs hat 15 Sekunden gedauert. Die Eigenentwicklung wird hier den Kosten/Nutzen-Vergleich sicherlich verlieren.

Stream Analytics einrichten Schritt 1
Stream Analytics einrichten Schritt 1

Stream Analytics Inputs

Nachdem der Stream Job eingerichtet wurde, ist er noch gestoppt. Das ist auch korrekt, denn noch weiß der Stream Analytics Job nicht, woher und wohin die Daten gestreamt werden sollen. Das folgende Bild zeigt die Schaltflächen um Inputs und Outputs zu definieren.

Stream Analytics einrichten Schritt 3
Stream Analytics einrichten Schritt 3

Als erstes schaut man nach dem Input des Jobs. Hier müssen nun bestimmte Angaben gemacht werden. Als erstes vergibt man einen Namen (foostreaminput), dann einen Source Type. Der Source Type kann ein Data Stream oder Reference Data sein. Jeder Stream Analytics Job braucht mindestens einen Data Stream. Ein Data Stream beinhaltet kurzlebige, sich schnell ändernde Massendaten. Reference Data können im Gegenzug als eine Art Stammdaten gemerkt werden, die das analytische Arbeiten erleichtern sollen. Da diese in unserem Beispiel irrelevant sind, belassen wir es vorerst hiermit.

Danach muss eine Source ausgewählt werden, in diesem Beispiel ist das Event Hub. Nachdem auch die Subscription ausgewählt wurde, kann man im Service bus namespace einen Event Hub wählen. Interessanterweise sieht man hier für jeden angelegten Event Hub zwei Einträge. Das kommt daher, dass die Segmentierung der Event Hubs standardmäßig auf dieser Anzahlt steht. Jetzt wählt man noch die Policy aus, die zuvor angelegt wurde (foopolicy) und die Event hub consumer group (fooconsumer). Nun ist es auch möglich ein Event serialization format auszuwählen. Wir wählen diesmal (wie sollte es auch anders sein) das JSON-Format und als Encoding UTF-8. Außer JSON kann noch AVRO oder CSV gewählt werden für das Seralization Format. Als Encoding kann aber bisher nur UTF-8 gewählt werden. Nachdem Create geklickt wirdist der Input in 13 Sekunden fertiggestellt.

Stream Analytics einrichten Schritt 4
Stream Analytics einrichten Schritt 4

Stream Analytics Outputs

Da jetzt geklärt wurde, woher die Daten gestreamt werden (foostreaminput) fehlt noch das wohin. Jetzt wird ein zweiter Cloud-Service von Microsoft Azure genutzt, der separat gehostet wird. Der Dienst von dem hier die Rede ist, ist Power BI. Was genau Power BI ist kann dem Beitrag zur General Availability von Power BI nachgelesen werden. Auch wenn die Information nun etwas veraltet sind, da hier sich rasch viele Entwicklungen ergeben.

Stream Analytics einrichten Schritt 5
Stream Analytics einrichten Schritt 5

Intersessant am Output ist, je nachdem was wir in Sink (Senke) wählen, verändern sich die weiteren Optionen. Da wir möglichst schnell ein Dashboard in Power BI einrichten wollen, wählen wir hier Power BI aus. Ist dieser Schritt erfolgt, müssen wir uns ersteinmal mit dem Power BI Account einloggen, der als Senke/Ziel des Streams dienen soll.

Stream Analytics einrichten Schritt 4
Stream Analytics einrichten Schritt 4

Nach dem erfolgreichem LogIn, muss noch der Group Workspace (Power Bi Arbeitsbereich) definiert werden, indem die Daten abgelegt werden. Außerdem benötigen man noch den Data Set Name und den Table Name (Speicherort für Informationen in Power BI). Wichtig ist der Hinweis den man lesen kann, dass bereits existierende Data Sets oder Tabellen gelöscht werden. Nach dem Klick auf Create. Das hat in unserem Beispiel nun ganze 4 Sekunden gekostet.

Stream Analytics Query

Was nun fehlt ist die Aufgabe, die der Job durchführen soll. Diese definiert man, wie weiter oben bereits erwähnt, über eine SQL-ähnliche Syntax. Dazu wählt man Query aus. Was uns direkt zu dem Query-Editor führt.

Stream Analytics einrichten Schritt 7
Stream Analytics einrichten Schritt 7

In dem Editor können unterschiedliche Transformationen durchgeführt werden. In unserem Beispiel werden wir uns mit dem einfachem Weiterreichen von der Quelle an die Senke begnügen. Zur Unterstützung sieht man auf der linken Seite des Editors alle Inputs und Outputs die zuvor definiert wurden. Außerdem bietet der Editor auch ein Error-Highlighting und eine Testfunktion, nachdem die Query gespeichert wurde.

Stream Analytics einrichten Schritt 8
Stream Analytics einrichten Schritt 8
Stream Analytics einrichten Schritt 9
Stream Analytics Queryeditor

Nachdem Klicken am oberen Rand auf Save, ist es nun möglich in der Übersicht des foostream Stream Analytics Jobs auf Start zu drücken. Der Job wird dann ausgeführt und streamt bereits die Daten an Power BI. Das kann man sehen, indem man sich an Power BI einloggt und die Data Sets nach dem Vorhandensein des neuen Data Sets überprüft. Das Starten des Streams dauert ca. eine Minute.

Daten an Eventhub senden

Um Daten an den Event Hub zu senden benötigt man natürlich noch eine Lösung, die die Daten sendet. Microsoft bietet hierfür einen open Source Twitter-Client, bei dem die Schlagwörter (Hashtags) ausgewählt werden können, die an Azure geleitet werden. Den Client kann man sich aus dem Downloadcenter von Microsoft herunterladen. Weiter braucht man noch eine Twitter-App, die man sich unter  diesem Link bequem einrichten kann. Wie der Stream eingerichtet werden kann, und ein paar Beispiele für Stream Analytics Querys findet man unter diesem Link. In Power BI kann man sich jetzt mit wenigen Klicks ein Dashboard und einen Report erstellen und die Zahlen in Near-Real-Time beobachten.

Power BI Realtime Dashboard
Power BI Real-Time Dashboard

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.