Eine Open Source und eine proprietäre Streaming Plattform im Vergleich: SAP Smart Data Streaming gegen Apache Storm

Mai 4, 2016 |

Daten bestimmen den Pulsschlag der Unternehmen. Je langsamer und je weniger Daten fließen, umso ineffizienter kann beispielsweise eine Kundenbindung aufgebaut werden, eine Maschinensteuerung optimiert werden 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. Für die Echtzeitanalyse von Daten gibt es am Markt einige, sich entwickelnde Technologien und auch etablierte Lösungen auf die man auch im Enterprise-Umfeld bauen kann. Um zwei Vertreter dieser Gattung einmal genauer zu beleuchten, wurden zwei unterschiedliche Kontrahenten ins Rennen geschickt. Mit der SAP Smart Data Streaming Plattform und dem Apache Storm Projekt haben wir sowohl einen sehr Enterprise-nahen Vertreter als auch einen Vertreter aus dem Open Source-Umfeld für diesen Anwendungsbereich herausgegriffen.

1

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. 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. Eine Topologie orchestriert dabei unterschiedliche Datenquellen-Objekte (Spouts) und die Daten verarbeitende 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 hinzu definiert 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 mit Hilfe 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.

2

Das SAP Smart Data Streaming besteht auf der untersten Architekturebene aus dem Streaming Server und einem Streaming 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 für die in ihm laufenden Projekte 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 mit Hilfe 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. Mit Hilfe 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 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.

3

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 mit Hilfe 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-Titel direkt übergeben. Die Python-Anwendung führt dann die Berechnungen aus und liefert das Ergebnis dann 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 einem SQL-Syntax und kann mit Hilfe 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. Der 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.

4

Definition der Projekte

Die Generierung von Topologie bei Apache Storm basiert auf einer Java Klasse, welche die notwendigen Komponenten mit Hilfe unterschiedlicher Groupings (Routingvariationen) zusammenfügt. Diese Groupings regeln den Fluss der Daten und konservieren Informationen während der Verarbeitungsschritte. Beim SAP Smart Data Streaming 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 Bindungsfähigkeiten: Die Ö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 dem 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.

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
  • 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 (siehe beispielsweise) 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 umzusetzen möchten, können sowohl auf SAP Smart Data Streaming, als auch auf Apache Storm setzen. Beide Technologien können Streaming-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.

Dem gegenü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.

5

Tags: , , , , , , , ,

Category: News

About the Author ()

Comments are closed.