© Excellent backgrounds/Shutterstock.com
Java Magazin
Verarbeitung komplexer Ereignisse und Datenströme

Mit Storm den Strom meistern

Mit Twitter Storm [1] steht ein System zur verteilten Verarbeitung von Ereignissen und Datenströmen bereit. Einmal berechnete Ergebnisse müssen nicht verworfen werden, wenn sich der Datenbestand ändert. Stattdessen können sie kontinuierlich aktualisiert werden, um augenblicklich neue Ergebnisse liefern zu können. Während Ansätze wie Hadoop MapReduce für Batch-Verarbeitung konzipiert sind, kann Storm in kurzer Zeit neue Ergebnisse liefern, ohne dass der gesamte Datenbestand erneut durchgearbeitet werden muss. Mit diesen Eigenschaften ist es ideal für kontinuierliche Berechnungen, Datenstromverarbeitung und verteilte Remote Procedure Calls.

Kai Spichale


Storm wird vom Kurznachrichtendienst Twitter zur Berechnung der Trending Topics eingesetzt. Diese Liste der aktuell am häufigsten diskutierten Themen wird von Twitter regelmäßig aktualisiert und ist somit stets am Puls der Zeit. Diesen eingängigen Anwendungsfall greifen wir auf und entwerfen eine Beispielanwendung, die ein Ranking für die aktuell am häufigsten aufgerufenen Ressourcen eines fiktiven Webdienstes erstellt und kontinuierlich aktualisiert. Eine Ressource dieses Webdienstes könnte beispielsweise eine Kurznachricht, ein Artikel oder ein Video sein. Konkret soll die Anwendung eine geordnete Liste der hundert am häufigsten aufgerufenen Ressourcen bereitstellen und zur Berechnung dieser nur die Aufrufe aus den vergangenen drei Stunden verwenden. Ältere Aufrufe sollen keinen Einfluss auf dieses Kurzzeitranking haben. Das Ranking soll ausschließlich das aktuelle Interesse der Benutzer des Webdienstes widerspiegeln.

Als Datenbasis dienen die URLs der aufgerufenen Ressourcen, die zusammen mit Uhrzeit und Datum geloggt werden. Die Log-Daten bilden einen Datenstrom, der durch die Rankinganwendung fließt, um die Liste der Top-100 zu ermitteln. Ein Datenstrom ist eine unbegrenzte Sequenz aus Tupeln und bildet ein zentrales Konzept von Storm. In Abbildung 1 ist der allgemeine Systemaufbau dargestellt. Die Log-Daten des Webdienstes werden in eine Queue, wie beispielsweise RabbitMQ oder Kestrel, geschrieben und gepuffert, bevor sie von Storm ausgewertet werden. Die Rankingliste könnte am Ende in ein Caching-System oder eine Datenbank zur weiteren Verwendung geschrieben werden.

Abb. 1: Onlineauswertung von Log-Daten

Für die Berechnung der Rankingliste wird das Vorkommen der unterschiedlichen URLs im Datenstrom gezählt. Da veraltete Aufrufe nicht mehr mitgezählt werden sollen und das Verwalten einer vollständigen Log-Historie zu aufwändig wäre, sollen mehrere Zähler pro URL eingesetzt werden. Veraltete Zähler können dann einfach gelöscht oder zurückgesetzt werden. Gemäß diesem Ansatz sollen für jede URL achtzehn Zähler eingesetzt werden, um die Anzahl der Aufrufe mit zehnminütiger Genauigkeit für die zurückliegenden drei Stunden zu verfolgen. Das heißt, alle zehn Minuten wird ein neuer Zähler verwendet und der älteste verworfen. Der beschriebene Ansatz ist eine Variante eines sich verschiebenden Fensters (engl. sliding window).

Wie kann nun die beschriebene Anwendung mit Twitter Storm realisiert werden? Dazu betrachten wir zunächst die wesentlichen Konzepte von S...

Java Magazin
Verarbeitung komplexer Ereignisse und Datenströme

Mit Storm den Strom meistern

Mit Twitter Storm [1] steht ein System zur verteilten Verarbeitung von Ereignissen und Datenströmen bereit. Einmal berechnete Ergebnisse müssen nicht verworfen werden, wenn sich der Datenbestand ändert. Stattdessen können sie kontinuierlich aktualisiert werden, um augenblicklich neue Ergebnisse liefern zu können. Während Ansätze wie Hadoop MapReduce für Batch-Verarbeitung konzipiert sind, kann Storm in kurzer Zeit neue Ergebnisse liefern, ohne dass der gesamte Datenbestand erneut durchgearbeitet werden muss. Mit diesen Eigenschaften ist es ideal für kontinuierliche Berechnungen, Datenstromverarbeitung und verteilte Remote Procedure Calls.

Kai Spichale


Storm wird vom Kurznachrichtendienst Twitter zur Berechnung der Trending Topics eingesetzt. Diese Liste der aktuell am häufigsten diskutierten Themen wird von Twitter regelmäßig aktualisiert und ist somit stets am Puls der Zeit. Diesen eingängigen Anwendungsfall greifen wir auf und entwerfen eine Beispielanwendung, die ein Ranking für die aktuell am häufigsten aufgerufenen Ressourcen eines fiktiven Webdienstes erstellt und kontinuierlich aktualisiert. Eine Ressource dieses Webdienstes könnte beispielsweise eine Kurznachricht, ein Artikel oder ein Video sein. Konkret soll die Anwendung eine geordnete Liste der hundert am häufigsten aufgerufenen Ressourcen bereitstellen und zur Berechnung dieser nur die Aufrufe aus den vergangenen drei Stunden verwenden. Ältere Aufrufe sollen keinen Einfluss auf dieses Kurzzeitranking haben. Das Ranking soll ausschließlich das aktuelle Interesse der Benutzer des Webdienstes widerspiegeln.

Als Datenbasis dienen die URLs der aufgerufenen Ressourcen, die zusammen mit Uhrzeit und Datum geloggt werden. Die Log-Daten bilden einen Datenstrom, der durch die Rankinganwendung fließt, um die Liste der Top-100 zu ermitteln. Ein Datenstrom ist eine unbegrenzte Sequenz aus Tupeln und bildet ein zentrales Konzept von Storm. In Abbildung 1 ist der allgemeine Systemaufbau dargestellt. Die Log-Daten des Webdienstes werden in eine Queue, wie beispielsweise RabbitMQ oder Kestrel, geschrieben und gepuffert, bevor sie von Storm ausgewertet werden. Die Rankingliste könnte am Ende in ein Caching-System oder eine Datenbank zur weiteren Verwendung geschrieben werden.

Abb. 1: Onlineauswertung von Log-Daten

Für die Berechnung der Rankingliste wird das Vorkommen der unterschiedlichen URLs im Datenstrom gezählt. Da veraltete Aufrufe nicht mehr mitgezählt werden sollen und das Verwalten einer vollständigen Log-Historie zu aufwändig wäre, sollen mehrere Zähler pro URL eingesetzt werden. Veraltete Zähler können dann einfach gelöscht oder zurückgesetzt werden. Gemäß diesem Ansatz sollen für jede URL achtzehn Zähler eingesetzt werden, um die Anzahl der Aufrufe mit zehnminütiger Genauigkeit für die zurückliegenden drei Stunden zu verfolgen. Das heißt, alle zehn Minuten wird ein neuer Zähler verwendet und der älteste verworfen. Der beschriebene Ansatz ist eine Variante eines sich verschiebenden Fensters (engl. sliding window).

Wie kann nun die beschriebene Anwendung mit Twitter Storm realisiert werden? Dazu betrachten wir zunächst die wesentlichen Konzepte von S...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang