Moderne Architekturen zur Datenanalyse – Teil 1

Analyse von Echtzeitdaten

| Autor / Redakteur: Steffen Hausmann / Nico Litzel

Der Autor: Steffen Hausmann ist Specialist Solutions Architect Analytics bei AWS
Der Autor: Steffen Hausmann ist Specialist Solutions Architect Analytics bei AWS (Bild: AWS)

In dieser dreiteiligen Artikelserie betrachten wir anhand einer konkreten Beispielanwendung den Aufbau einer Architektur zur Analyse von Echtzeitdaten mit AWS. Wir diskutieren, wie durch das Zusammenspiel verschiedener Dienste Aspekte der Echtzeitanalyse und der langfristigen Analyse von Daten flexibel kombiniert werden können.

Die Rahmenbedingungen der Beispielanwendung, die wir betrachten, sind relativ einfach: Wir betreiben ein Taxiunternehmen in New York City und haben unsere Flotte mit moderner Technik ausgestattet. So werden für jede Fahrt die Geo-Koordinaten von Start- und Endpunkt, die benötigte Zeit, die Anzahl der Fahrgäste und der bezahlte Preis an das Backend übermittelt.

Diese Daten möchten wir auf zwei verschiedene Arten nutzen: Zum einem sollen die Daten, insbesondere der Umsatz, kontinuierlich auf Unregelmäßigkeiten analysiert werden, um schnell darauf reagieren zu können. Zum anderen möchten wir aber auch langfristige Analysen von historischen Daten durchführen, um bessere Vorhersagen über die Passagierzahlen und die Umsatzentwicklung machen zu können.

Architektur zur schnellen und langfristigen Analyse von Echtzeitdaten

Um diesen Anforderungen gerecht zu werden, bietet sich eine Zweiteilung der Architektur an. Einen Teil, der die Echtzeitanalyse der Daten abdeckt und einen zweiten Teil, der die Daten archiviert, um eine Analyse aller bisher angefallenen historischen Daten mittels SQL zu ermöglichen. In einem ersten Schritt werden die Daten temporär in einem Datenstrom zwischengespeichert. Für die Echtzeitanalyse werden die Daten aus dem Zwischenspeicher analysiert und die Ergebnisse dieser Analyse werden in einem Dashboard grafisch dargestellt. Zugleich werden die Rohdaten aus dem Zwischenspeicher aber auch archiviert, um sie für langfristige Trendanalysen verwenden zu können.

Zweiteilung der Architektur
Zweiteilung der Architektur (Bild: AWS)

Durch die zweigeteilte Architektur sind die Abläufe der Datenproduktion und Datennutzung voneinander getrennt. Datenproduzierende und konsumierende Systeme können unabhängig voneinander betrieben, verändert und skaliert werden. Außerdem können die Daten auch gleichzeitig und unabhängig für Analysen von verschiedenen Systemen genutzt werden. Somit gibt die Architektur viel Spielraum, um zukünftige Anforderungen und Anwendungsfälle elegant in die bestehende Architektur zu integrieren, ohne dass die bestehenden Konsumenten oder Produzenten angepasst werden müssen.

Im Folgenden werden wir anhand des Beispielszenarios diskutieren, wie sich die Architektur mithilfe von AWS-Diensten umsetzen lässt. Dabei liegt ein besonderes Augenmerk auf der Verwendung von vollständig verwalteten Diensten, sodass wir uns auf die Analyse der Daten und das Lösen der Geschäftsprobleme konzentrieren können, ohne uns auf die Beschaffung, den Betrieb und die Skalierung der Infrastruktur kümmern zu müssen.

Um das Beispielszenario in Ihrem eigenen AWS Account nachzustellen, führen Sie dieses CloudFormation template aus. AWS CloudFormation erstellt dann automatisch die benötigten Ressourcen in Ihrem Account. Da für die Verwendung dieser Ressourcen Kosten anfallen, denken Sie bitte daran nach dem Test das CloudFormation Template wieder zu löschen, um die erstellten Ressourcen wieder zu entfernen.

Nachdem Sie dem Link zum Ausführen des CloudFormation Templates gefolgt sind, übernehmen Sie in dem folgenden Assistenten die voreingestellte Konfiguration durch dreimaliges Drücken auf Next. Auf der letzten Seite wählen Sie durch das Setzen jeweils eines Häkchens beide Optionen unter Capabilities aus, um zu bestätigen, dass CloudFormation IAM-Ressourcen erstellen und geschachtelte CloudFormation Templates ausführen darf. Beenden Sie den Dialog mit Create. Nach fünf bis zehn Minuten finden Sie alle benötigten Ressourcen automatisch in Ihrem AWS Account.

Zwischenspeichern der Daten in einem Datenstrom

Zunächst müssen die Echtzeitdaten aufgenommen und zwischengespeichert werden. Für diese Grundlage eignet sich Amazon Kinesis Data Streams. Damit können Sie kontinuierlich Gigabytes von Daten pro Sekunde aus Hunderttausenden von Quellen wie Website-Clickstreams, Datenbank-Event-Streams, Finanztransaktionen, Social Media Feeds, IT-Logs und Location-Tracking-Events erfassen. Die gesammelten Daten stehen in Sekunden zur Verfügung, um Echtzeit-Analyseanwendungen wie Echtzeit-Dashboards, Echtzeit-Anomalie-Erkennung, dynamische Preisgestaltung und mehr auszuführen.

Im Rahmen der Beispielanwendung werden die Taxifahrten simuliert, indem ein historischer Datensatz von Taxifahrten in New York City in den Datenstrom abgespielt wird. Dazu werden die Daten von einer Amazon-EC2-Instanz gelesen und in den Datenstrom geschrieben. Dabei werden in einer Minute die historischen Daten eines ganzen Tages abgespielt, was zu einer Datenrate von etwa 8.000 Ereignissen pro Sekunde führt. In der Praxis macht es dabei keinen Unterschied, ob, wie in diesem Fall, eine einzelne Java-Anwendung 8.000 Events pro Sekunde generiert oder ob 8.000 Taxis jeweils ein Event pro Sekunde erzeugen.

Echtzeitanalyse der Daten mittels SQL

Die eigentliche Datenanalyse erfolgt über SQL-Anfragen mit Amazon Kinesis Data Analytics. Streaming-Daten können damit in Echtzeit mit Standard-SQL analysiert werden, ohne mit anderen Programmiersprachen oder Verarbeitungs-Frameworks vertraut zu sein. Kinesis Data Analytics führt dabei die Schritte, die zur kontinuierlichen Analyse der Daten notwendig sind, automatisch aus und passt sich dynamisch an den Umfang und den Durchsatz der eingehenden Daten an.

Wie häufig bei Sensordaten, sind die Rohdaten der Taxis nicht störungsfrei und müssen zunächst bereinigt werden. Manche der von den Taxis generierten Ereignisse enthalten beispielsweise die unsinnigen Längen- und Breitengrade von 0, was einer Position westlich von Afrika im Meer entspricht. Um Ereignisse mit diesen offensichtlich fehlerhaften Daten aus dem Datenstrom zu entfernen verwenden wir folgende Anfrage.

CREATE OR REPLACE PUMP clean_pump AS

INSERT INTO cleaned_trips

SELECT STREAM

"pickup_latitude",

"pickup_longitude",

"dropoff_latitude",

"dropoff_longitude",

"trip_id",

"trip_distance",

"passenger_count",

"pickup_datetime",

"dropoff_datetime",

"total_amount"

FROM source_sql_stream_001

WHERE "pickup_latitude" <> 0 AND "pickup_longitude" <> 0 AND "dropoff_latitude" <> 0 AND "dropoff_longitude" <> 0;

Der WHERE Teil der Anfrage stell dabei sicher, dass nur Ereignisse in den (internen) Datenstrom cleaned_trips geschrieben werden, die von 0 unterschiedlich sind.

Eine Besonderheit der Echtzeitverarbeitung von Daten ist, dass sie kontinuierlich stattfinden soll. Im Gegensatz zu SQL-Anfragen in relationalen Datenbanken reicht es nicht aus, eine Anfrage einmalig auszuwerten, da kontinuierlich neue Daten in dem Datenstrom abgelegt werden. Um Anfragen kontinuierlich auszuwerten wird hier das Konstrukt CREATE OR REPLACE PUMP verwendet, um die Ergebnisse der Anfrage kontinuierlich in den internen Datenstrom „cleaned_trips“ zu schreiben.

Nachdem durch die Vorverarbeitung der Daten eine ausreichende Datenqualität sichergestellt ist, werden in einem nächsten Schritt Daten miteinander verglichen, um Ausreißer zu identifizieren. Darum geht es im nächsten Teil, in der kommenden Ausgabe.

Echtzeitdaten – Ausreißer identifizieren

Moderne Architekturen zur Datenanalyse – Teil 2

Echtzeitdaten – Ausreißer identifizieren

18.03.20 - Im ersten Teil des Artikels ging es um die optimale Analyse von Echtzeitdaten mithilfe der Cloud. Dabei werden beispielhaft in Echtzeit einlaufende Geoinformationen und Bezahldaten eines Taxiunternehmens in New York untersucht. Durch die Vorverarbeitung der Daten musste zunächst für eine ausreichende Datenqualität gesorgt werden. Im nächsten Schritt geht es nun darum, die Daten miteinander zu verglichen, um Ausreißer zu identifizieren. lesen

Langzeitanalysen

Moderne Architekturen zur Datenanalyse – Teil 3

Langzeitanalysen

20.03.20 - In den ersten beiden Teilen des Artikels ging es um die optimale Analyse von Echtzeitdaten mithilfe der Cloud. Dabei wurden in Echtzeit einlaufende Geoinformationen und Bezahldaten eines Taxiunternehmens in New York untersucht. Neben solchen Dashboard-Betrachtungen sind oftmals zusätzlich Langzeitanalysen von historischen Daten sinnvoll und gewünscht. lesen

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46361322 / Best Practices)