Suchen

Definition Was ist Apache Samza?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Apache Samza ist ein Open-Source-basiertes Framework für das Stream Processing. Es wird von der Apache Software Foundation weiterentwickelt und ermöglicht die Verarbeitung von Prozessdaten aus verschiedenen Quellen in nahezu Echtzeit. Unter anderem lassen sich mit Apache Samza statusbehaftete Anwendungen realisieren.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

Apache Samza wurde ursprünglich gemeinsam mit Apache Kafka von LinkedIn, einer Tochter von Microsoft, entwickelt. Es handelt sich um ein auf Open Source Software basierendes Framework für das Stream Processing. 2013 übertrug LinkedIn das Projekt an die Apache Software Foundation, die es seither weiterentwickelt.

Programmiert ist Samza in Java und Scala. Samza ermöglicht die Realisierung statusbehafteter Anwendungen, die Message-Feeds verschiedener Quellen in nahezu Echtzeit verarbeiten. Das Framework arbeitet fehlertolerant und bietet Verarbeitungszeiten im Bereich von Sekundenbruchteilen. Samza steht in Konkurrenz mit anderen ähnlichen Stream-Processing-Freamworks wie Apache Flink.

Zahlreiche Unternehmen wie Uber, TripAdvisor oder Slack nutzen Samza. Einer der größten Anwender ist das ursprüngliche Entwicklungsunternehmen LinkedIn, das das Framework für sein Karrierenetzwerk einsetzt. Samza steht unter Apache License 2.0. Die aktuellste Version ist Apache Samza 1.4.0 (Stand Anfang 2020).

Grundlagen zum Stream Processing

Stream Processing ist ein Ansatz zur Verarbeitung von Daten, der sich grundlegend vom Batch Processing unterscheidet. Im Gegensatz zum Batch Processing werden Daten nicht erst gesammelt, gespeichert und im Nachgang verarbeitet, sondern die Verarbeitung der Daten erfolgt in nahezu Echtzeit. Sie werden direkt nach ihrer Entstehung oder beim Empfang prozessiert. Die Verzögerung bei der Prozessierung kann je nach Anwendung nur wenige Millisekunden betragen.

Ein Datenstrom dient beispielsweise als Trigger für eine nachfolgende Aktion, aktualisiert Statistiken oder erzeugt einen neuen Datenstrom. Typische Anwendungen des Stream Processings finden sich im Big-Data-Umfeld, in der Künstlichen Intelligenz (KI) und in Industrie-4.0-Prozessen. Beispielsweise kommt das Stream Processing zum Einsatz für:

  • Echtzeitanalysen im E-Commerce-Umfeld
  • Analysen von Finanztransaktionen
  • Auswertung von Patientendaten im Gesundheitswesen
  • Überwachung von Prozessen in der Produktion
  • Automatisierung von Logistikprozessen
  • autonomes Fahren und Verkehrsüberwachung
  • Smart Grids
  • Abwehr von Cyber-Attacken
  • Predictive Maintenance

Merkmale von Apache Samza

Apache Samza besitzt verschiedene charakteristische Merkmale. Das Framework nutzt eine einfache API für eine von der Datenquelle unabhängigen Beschreibung der Applikationslogik. Mit der API ist sowohl das Batch Processing als auch das Stream Processing möglich.

Zahlreiche Datenquellen, wie Apache Kafka, Apache Hadoop, AWS Kinesis und viele mehr, werden unterstützt. Die Integration der Datenquellen ist schnell zu realisieren. Samza ist als Embedded Library nutzbar und einfach in Java- oder Scala-Applikationen einzubetten.

Ausführbar ist das Stream Processing mit Apache Samza in den unterschiedlichsten Umgebungen beispielsweise auf eigener Hardware, in der Cloud als gemanagter Service oder in einer Container-basierten Umgebung. Das Framework arbeitet fehlertolerant und nutzt inkrementelles Checkpointing für das Fehler-Recovery.

Funktionsweise von Apache Samza

Grundsätzlich verarbeitet Samza Daten in Form von Streams. Ein Stream besteht aus einer Folge unveränderbarer Nachrichten gleicher Kategorie. Die Nachrichten setzen sich aus Schlüssel-Werte-Paaren zusammen. Verschiedene Quellen können Daten in einen Stream schreiben und verschiedene Empfänger diese Daten auslesen. Zu Skalierungszwecken lässt sich ein Stream in mehrere Partitionen aufteilen. Jede Partition besteht aus einer geordneten Sequenz von Nachrichten. Eine Stream-Anwendung nimmt Daten eines Streams entgegen, prozessiert und transformiert sie und liefert die Ergebnisse als Output-Stream. Samza stellt verschieden APIs wie eine High Level Stream API, Low Level Task API, eine Apache Beam API oder Samza SQL zur Realisierung der Stream-Anwendungen zur Verfügung.

Statusbehaftetes und statusloses Stream Processing wird unterstützt. Statusloses Stream Processing behält nach der Verarbeitung einer Nachricht keinen zugehörigen Status. Beispiele sind das Filtern eines Datenstroms nach bestimmten Kriterien und die anschließende Ausgabe der gefilterten Nachrichten in einem Datenstrom. Im Gegensatz dazu erzeugt das statusbehaftete Stream Processing zu einer verarbeiteten Nachricht eines Status. Es stehen Mechanismen zur Speicherung der Status zur Verfügung.

Architektur von Apache Samza

Apache Samza teilt Anwendungen in viele verschiedene logische Tasks auf. Jeder Task verarbeitet Daten einer Partition eines Input-Datenstroms. Die Zuordnung von Task und Partition bleibt gleich. Fällt ein Task aus, weil ein einzelnes System nicht funktioniert, wird er auf einem anderen System neu gestartet und verarbeitet dort den gleichen Input-Datenstrom. Die einzelnen Tasks können völlig unabhängig voneinander arbeiten. Mehrere Tasks lassen sich in einem Container zusammenfassen. Eine Anwendung besteht üblicherweise aus mehreren Containern, die über verschiedene Hosts verteilt sind. Für die Steuerung und Zuordnung der Tasks in den Containern ist der Koordinator verantwortlich. Er überwacht den Status jedes Containers und verteilt Tasks auf andere Container, falls er Fehler feststellt. Der Koordinator unterstützt verschiedene Deployment-Optionen.

Vorteile von Apache Samza

Apache Samza bietet einige Vorteile. Diese sind:

  • hohe Performance – niedrige Latenz und großer Durchsatz
  • horizontal skalierbar
  • einfach zu betreiben
  • flexible Deployment-Optionen
  • verschiedene APIs zur Realisierung von Anwendungen
  • Unterstützung der Prozessierung von Batch- und Streaming-Daten
  • modulare Architektur
  • Integration verschiedener Datenquellen

(ID:46569168)

Über den Autor