Infrastruktur MAG 1606

Apache Storm gegen SAP Smart Data Streaming

[shutterstock.com:294081374, Sergey Nivens]
[shutterstock.com:294081374, Sergey Nivens]

Für die Echtzeitanalyse von Daten gibt es am Markt einige sich entwickelnde Technologien und auch etablierte Lösungen. Mit SAP Smart Data Streaming und Apache Storm möchten wir sowohl einen sehr Enterprise-nahen Vertreter als auch einen Vertreter aus dem Open-Source-Umfeld beleuchten.

Daten bestimmen den Pulsschlag der Unternehmen. Je langsamer und je weniger Daten fließen, umso ineffizienter kann beispielsweise eine Kundenbindung aufgebaut, eine Maschinensteuerung optimiert oder auf Notfälle reagiert werden. Denn ohne Datenströme bleibt die Echtzeitanalyse auf der Strecke, mit deren Hilfe Optimierungen, Empfehlungen und Entscheidungen getroffen werden können.

Architekturen der Kontrahenten

Eine der wichtigsten Streaming-Lösungen ist die von Nathan Marz konzipierte und mittlerweile zum Apache-Projekt transformierte Lösung mit dem Namen Storm. Diese ermöglicht eine garantierte, robuste, verteilte und fehlertolerante Verarbeitung von Echtzeitdaten in dynamisch definierbaren Topologien.

Grundlage dieser Plattform sind dedizierte Hardware-Ressourcen für ein Zookeeper-Cluster, den Nimbus und die Supervisor. Der Zookeeper-Cluster kümmert sich um die verteilte Konfiguration der einzelnen Systeme und ist mittlerweile fester und solider Bestandteil vieler Open-Source-Projekte, wie z. B. Apache Hadoop.

ad_banner

Der Nimbus kümmert sich um die Verteilung der einzelnen Topologien innerhalb des Clusters und damit um die Bereitstellung des Projektcodes und der benötigten Ressourcen.

Bjoern BoetcherEine Topologie orchestriert dabei unterschiedliche Datenquellen-Objekte (Spouts) und die Daten verarbeitenden Objekte (Bolts) durch einen gerichteten Flussgraphen. Der Nimbus selbst ist zustandslos und kann ohne Probleme neu gestartet werden.

Die Supervisor beherbergen die einzelnen Worker. Jeder Worker kann einen oder mehrere Executor einer Topologie in einer JVM ausführen. Supervisor können jederzeit zur Laufzeit der Plattform hinzugefügt oder entfernt werden.

In der Version 1.0 von Apache Storm kann neuerdings auch ein Pacemaker Server hinzudefiniert werden, damit der Zookeeper-Cluster nicht zu stark belastet wird und die Netzwerkkommunikation bewusst kleingehalten wird.

Um eine Topologie nur einmal ausrollen zu müssen, ist es möglich, einen verteilten Cache zu nutzen. So können beispielsweise Konfigurationsdateien zur Laufzeit adaptiert werden, ohne die Topologie neu starten zu müssen.

Die strömenden Daten können mithilfe von in Länge und Intervall definierbaren Fenstern (Windows) berechnet werden. Dadurch können z. B. klassische Streaming-Szenarien, wie die Top-Trends bei sozialen Nachrichten, kalkuliert werden.

Das SAP Smart Data Streaming besteht auf der untersten Architekturebene aus dem Streaming Server und einem Strea­ming Cluster. Jeder der Komponenten muss auf dedizierter Hardware installiert werden.

Ein Streaming Cluster gliedert sich in einem oder mehreren Knoten (Clients), welche die Laufzeitumgebung der Streaming-Projekte darstellen. Weitere Knoten können zur Laufzeit beliebig ergänzt werden. Wenn das Cluster installiert und konfiguriert wurde, kann ein Projekt erstellt und innerhalb eines Workspace ausgeführt werden.

Ein oder mehrere Workspaces können auf einem Cluster betrieben werden, um zum Beispiel eine inhaltliche Trennung von Projekten zu gewährleisten. Denn ein Workspace definiert einen Namensraum im laufenden Projekt und erlaubt ebenso, die Zugriffsrechte zu definieren.

Damit ergeben sich durch unterschiedliche Zugriffsrechte automatisch unterschiedliche Workspaces. Projekte sind die kleinste Einheit, welche auf dem Cluster ausgeführt werden kann, die es erlaubt die Geschäftslogik zu definieren. Dies geschieht in einem Projekt über die Komponenten Stream, Window und Adapter.

Alle drei Komponenten sind in Einzahl oder mehrfach benutzbar. Bei Stream und Window handelt es sich um die verarbeitende Einheit für die einströmenden Daten. Die in das System fließenden Daten können mithilfe der zustandslosen Streams oder der zustandsbehafteten Windows transformiert, angereichert oder aggregiert werden.

Um den Zustand jederzeit parat zu haben, nutzen Windows einen Richtlinien-basierten Datenbank-Speicher. Mithilfe der Richtlinien kann eine maximale Anzahl der Zeilen oder eine zeitliche Beschränkung definiert werden, um die Daten bereitzuhalten.

Beispielsweise können für fünf Minuten in das System strömende Daten gespeichert werden und so kann zum Beispiel eine Abweichung in Betriebstemperaturen oder beim Druck einer Maschine identifiziert werden.

Die Realisierung des Cache ist dabei standardmäßig als Rolling Windows definiert. Dies kann jedoch auch per Schlüsselwort zu einem springenden Fenster umfunktioniert werden. Dies hätte zur Folge, dass die Daten nach dem definierten Zeit- oder Zeilenintervall automatisch gelöscht werden und nicht mehr kontinuierlich rollend überschrieben.

Die Adapter innerhalb eines Projektes verbinden Streams und Windows mit Datenquellen und Datenendpunkten. Adapter können dabei Informationen von Events ohne eine weitere Operation akzeptieren oder eine der folgenden Aktionen durchführen: insert, update, delete, upset, safedelete.

Dies ermöglicht die Verbindung unterschiedlichster Datenquellen und -endpunkte in unterschiedlichen Betriebsmodi. Dabei ist zu beachten, dass Streams aufgrund ihrer Definition keine vorherigen Datensätze modifizieren können.

Boetcher 1606 I

Sprachfähigkeiten

Apache Storm basiert auf Java und Python und bietet nativ einen Zugang zur Nutzung der vollen Sprachvielfalt von Java. Ferner ist es möglich, auch Code jeder anderen Sprache mithilfe von Distributed RPC auszuführen. Beliebtes Beispiel zur Integration von anderen Sprachen in die reine Java-Entwicklung ist die Nutzung von Python, wenn es zum Beispiel um die Nutzung von Bibliotheken aus dem Bereich des Machine Learning geht.

Hier wird dann aus dem Java-Quellcode direkt das Python-Programm aufgerufen und die Daten-Tutel direkt übergeben. Die Python-Anwendung führt dann die Berechnungen aus und liefert das Ergebnis wieder an das aufrufende Java-Programm zurück, und somit ist der Fluss der Topologie nicht unterbrochen.

SAP Smart Data Streaming nutzt eine eigene Sprache zur Programmierung der Streaming-Anwendung. Die Event-basierte Continuous Computation Language (CCL) basiert auf einer SQL-Syntax und kann mithilfe von CCL-Skripten erweitert werden.

Um bei der Analogie zu SQL zu bleiben, kann man sich CCL als eine unendlich wiederholte und dynamische Ausführung von SQL-Abfragen vorstellen, wobei die Ausführung von Ereignissen der Datenströme angeregt wird. Die CCL-Skripte ermöglichen es Entwicklern, benutzerdefinierte Funktionen und Operatoren zu schreiben.

Die Syntax der Skripte ist dabei ähnlich zu der Programmiersprache C. Alle Streaming-Projekte werden in CCL geschrieben und dann kompiliert und als ausführbare CCX-Dateien im Streaming-Server hinterlegt.

Ein klassisches Beispiel für die Nutzung von CCL-Skripten ist die Definition von flexiblen Operatoren. Diese ermöglichen die Erstellung von eigenen Wörterbüchern. Damit wäre es dann z. B. möglich, die Zeitspanne zwischen zwei benutzerdefinierten Ereignissen zu bestimmen.

Ein schönes Feature ist die Debugging-Möglichkeit, welche es erlaubt, von einem Datum bis zu einzelnen gecachten Streams kontrolliert Testdaten in das System zu spielen.

Definition der Projekte

Die Generierung von Topologie bei Apache Storm basiert auf einer Java-Klasse, welche die notwendigen Komponenten mithilfe unterschiedlicher Groupings (Routingvariationen) zusammenfügt. Diese Groupings regeln den Fluss der Daten und konservieren Informationen während der Verarbeitungsschritte.

Beim SAP Smart Data Strea­ming erstellt man visuell die Projekte und reichert die einzelnen Elemente mit Logik an. Der wesentliche Teil der Modellierung des Streamingprojektes beim SAP Smart Data Streaming geschieht über die SQL-ähnliche Syntax.

Freiheit und Bindung: Ökosysteme

Ein Streaming von Daten allein macht noch keine Applikation aus. Daher lebt auch eine Streaming-Plattform von ihrem Ökosystem. Bei Apache Storm ist dies der ganze Zoo der Apache-Familie und darüber hinaus alles, was sich mit Java irgendwie ansprechen lässt. Damit ist die Flexibilität sehr hoch und die Integrationsfähigkeit auch immens.

Beim Kontrahenten von SAP sieht es prinzipiell erst einmal etwas beschränkter aus, da die Plattform primär auf das SAP-eigene Ökosystem abzielt. Jedoch sind mit SAP Smart Data Streaming Lite, SAP Hana und beispielsweise Siemens MindSphere auch viele Anwendungsbereiche eines Unternehmens bereits abgedeckt.

Interessant ist dabei die SAP-Smart-Data-Streaming-­Lite-Version, welche es ermöglicht, die Vorverarbeitung der Daten bereits auf ein embedded Gerät auszulagern. Damit erweitert SAP die Streaming-Plattform auch proaktiv auf das IoT-Umfeld.

Apache Storm

Tauglichkeit im Unternehmensumfeld

Beide Vertreter der Streaming-Plattform sind für den Einsatz im Unternehmensumfeld geeignet. Alle Fragestellungen bezüglich der Punkte Sicherheit, Skalierbarkeit & Ressourcenmanagement, Support, Entwicklungsstatus des Projekts („Open Source“), Service-Level-Agreements, Integrationsfähigkeit mit bestehenden Systemen und Wartbarkeit können beide Vertreter ohne Probleme meistern.

SAP kennt sich bestens aus im Unternehmensumfeld und deckt mit seiner Erfahrung viele Szenarien und Bedürfnisse ab. Bei Apache Storm sieht es genau umgekehrt aus. Die Software stammt aus dem Open-Source-Umfeld und hat sich in die Unternehmenslandschaft hinein entwickelt.

Mit dem kürzlich erschienenen Release 1.0 ist auch die notwendige Reife des Projektes vorhanden. Mit der Unterstützung von Kerberos steht auch dem sicheren Einsatz im Unternehmenskontext nichts im Weg.

Auch die oftmals angesprochene Schwachstelle des Nimbus als ein Single Point of Failure kann mit der entsprechenden Strategie (Beispiel: Hortonworks Blog) umgangen werden.

Aussicht und Empfehlung

Unternehmen, die beispielsweise in den Bereichen Industrie 4.0, Telematics, Healthcare, E-Commerce eine Streaming-Lösung im eigenen Hause umsetzen möchten, können sowohl auf SAP Smart Data Streaming als auch auf Apache Storm setzen. Beide Technologien können Strea­ming-Aufgaben erfüllen.

Bei der SAP-Lösung schlägt negativ zu Buche, dass eine dedizierte Hardware notwendig ist, ein verteiltes Dateisystem erforderlich ist, zusätzliche Kosten für Lizenzen anfallen, die Plattform bisher nur auf das SAP-Ökosystem ausgerichtet ist, eine zusätzliche Lernkurve für CCL notwendig ist und es noch keine große Entwickler-Gemeinde gibt.

Demgegenüber steht bei Apache Storm nur der fehlende native Monitoring-Support, welcher durch das umfangreiche Ökosystem wieder abgemildert wird. Somit bleibt festzuhalten, dass SAP eine gute Lösung implementiert hat, welche zu Anfang sehr komplex erscheint, jedoch erlernbar ist. Offener, flexibler und kostengünstiger ist man aber mit der Open-­Source-Variante unterwegs.

Über den Autor

Björn Böttcher, Crisp Research

Bjoern Boettcher ist Senior Analyst bei Crisp Research

Hinterlassen Sie einen Kommentar

AdvertDie Meinung 2