SMACK Stack

Der SMACK Stack ist ein Ensemble aus verschiedenen Tools, die miteinander zu einer Big-Data-Plattform integriert werden können. Der Name „SMACK Stack“ ist ein Akronym aus den Anfangsbuchstaben der Tools Spark, Mesos, Akka, Cassandra und Kafka.

SMACK Stack als Big-Data-Plattform

Der SMACK Stack ist kein Produkt eines einzelnen Herstellers, sondern ein Best-of-Breed Ansatz aus verschiedenen Tools, die zu einer vollständigen Big-Data-Plattform orchestriert werden können. Der Name setzt sich aus den Anfangsbuchstaben der jeweiligen Tools zusammen:

  • Apache Spark
  • Apache Mesos
  • Akka
  • Apache Cassandra
  • Apache Kafka

Apache Kafka

Kafka ist ein verteilter, skalierbarer und verlässlicher Message Broker für große Datenmengen. Die Verlässlichkeit des Brokers wird über Replay-Mechanismen sichergestellt. Zweifelt ein Beteiligter an der Vollständigkeit der empfangenen Nachrichten, kann er einfach um eine Wiederholung der Nachrichten (Replay) bitten. Da Kafka die Daten partitioniert und in einem Append-Only-Log speichert, kann Kafka ohne Weiteres Terabytes an Daten vorhalten – ohne Performanceeinbußen.

Reactive Streams

Sowohl Spark als auch Akka implementieren Reactive Streams. Verschiedene Komponenten hängen aneinander und können Streams von Nachrichten abarbeiten. Sofern eine der Komponenten Performanceprobleme hat, wird es von einem Push- auf ein Pull-Verfahren umstellen, um zu verhindern, dass temporäre Buffer volllaufen. Diese Kompensation kann durch die komplette Verarbeitungskette bis zur Quelle durcheskaliert werden. Sofern diese Quelle Kafka ist, kann sich das System innerhalb von Stunden wieder beruhigen, ohne dass eine Nachricht verlorengeht.

Akka

Akka ist eine Implementierung des Actor Frameworks und erlaubt das Schreiben von reaktiven Anwendungen, die hochverteilt sind. Mit der Nutzung von Scala als Entwicklungssprache stehen viele hilfreiche funktionale Aspekte der Sprache zur Verfügung, um noch eleganter die Logik zu implementieren. Mittlerweile können mit Akka auch REST-Services angeboten werden.

Apache Spark

Apache Spark unterstützt sowohl Batch-Verarbeitung (auch MapReduce) und Stream-Verarbeitung (umgesetzt durch  µ-Batches). Lambda-Architekturen lassen sich somit sehr elegant umsetzen, da die APIs für den Stream- und Batch-Modus dieselben sind und die Datenlogik nur noch einmal geschrieben werden muss. Spark versteht sich auch mit allen relevanten NoSQL- und RDBMS-Lösungen, so dass auch Bestandssysteme einfach integriert werden können. Es kann nicht nur mit diesen Tools kommunizieren, sondern auch in der gleichen Sprache. So  kann SQL (auch mit Joins und Aggregations) auf NoSQL Lösungen ausgeführt werden oder auch Graphentraversierungen auf Nicht-Graphendatenbanken. Zudem ist die Scala-API sehr leistungsfähig, so dass Akka- und Spark-Anwendungen mit dem gleichen Mind- und Toolset entwickelt werden können.

Apache Cassandra

Apache Cassandra ist eine spaltenorientierte Datenbank der neusten Generation. Sie kann über verschiedene Rechenzentren verteilt werden, skaliert linear zur Anzahl der Maschinen im Cluster, hat eine unschlagbare Performance – auch bei gemischten Schreib- und Lesevorgängen – und ist sehr flexibel in dem Umgang mit Konsistenz. Cassandra integriert sich hervorragend mit Spark, sodass z. B. verteilte Spark-Operationen auf den Cassandra-Servern lokal zu den Daten ausgeführt werden können. Diese Datenlokalität bedeutet, dass die CPUs nur die Daten verarbeiten, die lokal auf der Festplatte gespeichert werden. So werden teure IO-Operationen über das Netzwerk verhindert.

Apache Mesos

Das letzte Tool in der Reihe ist Mesos. Mesos ist ein Scheduling-Framework für Cluster und Rechenzentren. Alle Mesos-Maschinen in einem Cluster beginnen mit dem gleichen Softwarestand und der gleichen Konfiguration (abgesehen von dem Unterschied zwischen Master und Slave). Anwendungen (auch Spark, Akka, Cassandra und Kafka) werden logisch auf das Cluster deployed, und Mesos entscheidet (scheduled), welcher Job auf welcher Maschine zu laufen hat. Die Jobs können aktiv steuern, wie viele Ressourcen sie benötigen, und so können nach Bedarf Cluster vergrößert oder verkleinert werden. Auch können Hardwareausfälle kompensiert werden, indem die Jobs auf die übriggebliebene Maschinen neu verteilt werden. Mesos erhöht zudem die Gesamtauslastung der Hardware, da nicht ausschließlich eine Anwendung auf einem Server betrieben werden muss.

SMACK Stack: Tools für zeitgemäße Big-Data-Anwendungen

Alle genannten Tools sind sehr gut miteinander integrierbar und liefern so die Plattform für zeitgemäße Big-Data-Anwendungen. Niemand ist eingeschränkt in der Auswahl der Verarbeitungs- oder Modellierungsmöglichkeiten, niemand muss sich um die Details der Cluster kümmern, und jeder kann abends beruhigt in den Feierabend gehen.

Welche Probleme adressiert der SMACK Stack?

Big-Data-Lösungen haben sich in den letzten Jahren signifikant weiter entwickelt. Zu Beginn lag die Herausforderung in der Verarbeitung bisher unvorstellbar großer Datenmengen auf Commodity-Hardware. Allerdings war der Batch-Ansatz mit MapReduce-Jobs nicht immer schnell genug. Man fing an, aktuelle Daten direkt in einem Stream zu verarbeiten, um diese schnellstmöglich verfügbar zu machen (Speed-Lane), so dass nicht immer auf die Batch-Auswertungen gewartet werden musste.

Dieser kombinierte Ansatz (so genannte Lambda-Architekturen) löste das Latenzproblem der Datenverarbeitung, brachte aber auch neue Probleme mit sich:

  • Es gab einen kleinen, aktuellen Datenbestand neben einem großen und nicht-aktuellen Datentopf, die häufig kombiniert abgefragt werden mussten.
  • Mit den damaligen Tools musste die Datenverarbeitung für beiden Methoden redundant mit verschiedenen APIs implementiert werden, was wiederum fehleranfällig und zeitaufwändig ist.

Zudem waren viele betriebliche Aspekte nicht einmal ansatzweise gelöst – was fairerweise auch niemals das Ziel von Lambda Architekturen gewesen ist.

Der Umgang mit Datenströmen von mehreren TeraByte pro Tag stellt ganz andere Anforderungen, als es die bisherige IT gewohnt ist. Beispiele für solche Probleme sind:

  • Quellausfall: Fällt eine Datenstromquelle für längere Zeiten aus und ist dann wieder verfügbar, werden große Mengen  aufgelaufener Daten auf einmal übertragen. Die Hard- und Software muss das verkraften.
  • Skalierung und Verlässlichkeit: Die Datenmengen müssen auf verteilten Clustern verarbeitet werden. Das bisherige Enterprise-Konzept von (verteilten) Transaktionen skaliert allerdings nicht ausreichend. Daher müssen neue Methoden für die verteilte Verlässlichkeit gefunden werden.
  • Resilience: Big-Data-Lösungen bestehen aus vielen beweglichen Teilen. Es ist keine Frage, ob Fehler und Ausfälle auftreten, sondern nur die Frage wann. Wenn dann eines der Teile aufgrund eines Entwicklerfehlers oder durch einen Hardwaredefekt ausfällt, darf das Gesamtsystem keine Daten verlieren oder gar ausfallen.
  • Elastizität: Big-Data-Lösungen konsumieren sehr viele Ressourcen auf den Servern. Durch Oversizing konnten auf kleinen Clustern Performance-Engpässe und Ausfälle kompensiert werden. Ein Zwei-Maschinen-Cluster kann problemlos um 100 % auf vier Maschinen oversized werden. Bei großen Clustern ist das aber nicht mehr finanzierbar. Hier müssen andere Mechanismen für Elastizität gefunden werden.

Genau an diesen Punkten setzt der SMACK Stack an.

Nehmen Sie Kontakt mit uns auf.

Jetzt informieren!

Das könnte Sie auch interessieren