Apache Beam ermöglicht als Parallel Computing Framework das Verarbeiten von nahezu unbegrenzten Datenmengen. Die Open Source Software bietet über verschiedene SDKs das Definieren von Batch-Pipelines oder Pipelines für Streaming-Data-Processing und unterstützt Hadoop, Spark und andere Engines.
Apache Beam kann als Programmiermodell für die verteilte Datenverarbeitung bezeichnet werden. Das Modell ist dazu in der Lage, über APIs Datentypen und Data Frames zu verarbeiten.
Apache Beam ist ein Open Source Tool, mit dem sich über verschiedene SDKs große Datenmengen über Pipelines verarbeiten lassen. Das Parallel Computing Framework stellt SDKs zur Verfügung, mit dem sich das von Google im Jahr 2015 vorgestellte Dataflow Model umsetzen lässt.
Dabei geht es im Grunde genommen darum Korrektheit, Latenz und Kosten in massiven und unbeschränkten Datenverarbeitungen zu koordinieren. Das Datenflussmodell kommt dann zum Einsatz, wenn vor allem riesige Datenmengen möglichst schnell, aber auch so genau wie möglich analysiert werden sollen.
Entwickeln mit Java und Python, verarbeiten mit Hadoop, Spark und anderen Systemen
Apache Beam kann als Programmiermodell für die verteilte Datenverarbeitung bezeichnet werden. Das Modell ist dazu in der Lage über APIs Datentypen und Data Frames zu verarbeiten. Hier lassen sich mit Apache Beam Batch Pipelines und Streaming-Pipelines erstellen. Die Pipelines sind in diesem Zusammenhang für das Lesen, Verarbeiten und Speichern der Daten zuständig.
Nachdem eine Pipeline erstellt ist, kann Apache Beam über einen Worker definieren, wo die Pipeline laufen soll. Beispiele dafür sind Hadoop oder Spark. Das ist einer der größten Vorteile von Apache Beam: Entwickler laufen bei der Verwendung nicht in Gefahr, einem Vendor-Lock-in zum Opfer zu fallen. Da Apache Beam verschiedene Programmiersprachen unterstützt und auch unterschiedliche Execution Engines, gibt es sehr flexible Verarbeitungsmöglichkeiten, die sich auch ständig wechseln lassen.
Dazu stellt Apache Beam verschiedene SDKs für Programmiersprachen zur Verfügung, mit denen sich anschließend Pipelines erstellen lassen. Häufig zum Einsatz kommen in diesem Bereich Java und Python. Die aktive Community erweitert aber ständig die Möglichkeiten von Beam und führt weitere SDKs für mehr Programmiersprachen in das System ein.
Im Fokus des Objektes steht die Entkoppelung der Verarbeitungslogik von Daten von der ausführenden Verarbeitungsengine. Dadurch können einmal erstellte Pipelines mit ihrer Ausführungslogik auf verschiedenen Execution Engines laufen.
Data Flow Model mit Apache Beam
Google hat das Datenflussmodell (Data Flow Model) im Jahr 2015 vorgestellt, und bietet diese Verarbeitung von Daten als Google Dataflow in der Google Cloud Platform (GCP) an. Apache Beam ermöglicht das Erstellen von Anwendungen, die nach dem gleichen Modell wie das Data Flow Model arbeitet, aber auch andere Executions Engines unterstützt, zum Beispiel Hadoop oder Spark.
Die Möglichkeiten von Apache Beam lassen sich in Google Colab testen.
(Bild: T. Joos)
Geht es um die Verarbeitung eines Datenflusses, lässt es sich nahezu nie genau feststellen, wann alle Daten zur Verfügung stehen, die anschließend schnell und korrekt verarbeitet werden müssen. Beginnt ein System früh mit der Datenverarbeitung, ist die Geschwindigkeit hoch, die Datenverarbeitung aber nicht korrekt, weil noch nicht alle Daten zur Verfügung stehen, die analysiert werden sollen. Wartet ein System länger mit der Verarbeitung, steigt die Menge der Daten an, die Verarbeitung ergibt bessere Ergebnisse durch die breite Datenlage, aber dafür wird auch die Latenz schlechter. Hier gilt es, einen optimalen Kompromiss zu finden
Unabhängigkeit von Sprache und Execution Engine
Das Interessante am Data Flow Model, das Apache Beam mit seinen SDKs bietet, ist die Unabhängigkeit zur ausführenden Engine, welche die Daten verarbeiten soll. Apache Beam ermöglicht über seine SDKs die Erstellung von Pipelines in nahezu beliebigen Programmiersprachen. Dazu gehören zum Beispiel Java, Python, Go, Scala und andere Sprachen. Die Execution Engines lassen sich wiederum ebenfalls frei wählen. Aktuell kommen hier vor allem Google Dataflow, Apache Flink, Apache Spark oder Hadoop zum Einsatz.
Die Stärke von Apache Beam besteht dabei nicht nur darin, dass die mit Apache Beam erstellte Pipeline in einer der unterstützten Execution Engines ausgeführt wird, sondern das System versucht die Stärken von allen Engines parallel zu nutzen. Es ist daher kein Problem, bei einer Pipeline parallel auf Flink, Spark und Hadoop zu setzen. Die Pipelines und die erstellten Worker können nahezu sprachneutral verschiedenen Code ausführen Dazu können die Entwickler in ihrer bevorzugten Programmiersprache mit dem SDK von Beam arbeiten, zum Beispiel dem SDK von Java oder Python. Über die APIs in Apache Beam können die Daten anschließend von verschiedenen Execution Engines verarbeitet werden.
Parallel dazu gibt es für jedes SDK auch einen eigenen SDK-Worker. Dabei ist jeder der verschiedenen SDK-Worker in Apache Beam in der Lage den gleichen Code auszuführen. Das erhöht die Unabhängigkeit der Entwickler von der eingesetzten Sprache und von der Execution Engine deutlich.
Apache Beam ermöglicht auch Batch Procession als Streaming-System
Im Data-Flow-Modell lassen sich die Datenströme in verschiedene logische „Windows“ unterteilen, die in einem Zeitstrahl bestimmte Aktionen zusammenfassen, zum Beispiel die Klicks von Besuchern einer Webseite auf verschiedenen Unterseiten. Ein Stream wird dadurch zu einer Sammlung verschiedener „Windows“, also Abschnitte oder Teile eines gesamten Streams. Wie die Windows mit Apache Beam aufgeteilt werden, ist schlussendlich Sache des jeweiligen Entwicklers oder Datenwissenschaftlers. Das Data Flow Model erlaubt hier verschiedene, unterschiedliche Formen für Windows.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Dabei unterscheidet Apache Beam zwischen „Event Time“ und „Processing Time“. Bei „Processing Time“ handelt es sich um die Zeit, in der ein Anwender eine Aktion durchführt, zum Beispiel einen Klick. Die „Processing Time“ ist wiederum die Zeit, wann die Aktion im Datenverarbeitungssystem eingeht und die Verarbeitung beginnt. In einem idealen Szenario sind „Event Time“ und „Processing Time“ identisch. Wenn aber „Processing Time“ erst nach der „Event Time“ angesiedelt ist, bedeutet das eine gewisse Latenz in der Datenverarbeitung, da das System die Aktion erst nach der eigentlichen Ausführung mitbekommt und verarbeiten kann.
Parallel dazu kommen im Data Flow Model auch Trigger zum Einsatz. Diese stehen in einer engen Verbindung mit den „Windows“. Trigger ermöglichen es Entwicklern festzulegen, wann die Ausgabeergebnisse für ein bestimmtes Windows ausgegeben werden sollen. Trigger und Windows sind daher ein Team, das im Rahmen der Entwicklung von Data Flow Models mit Apache Beam berücksichtigt werden.
Apache Beam installieren und testen
Wer einen ersten Blick auf Apache Beam werfen will, kann auf der Webseite des Projektes mit „Run in Colab“ eine Testumgebung erstellen, zum Beispiel in Python, Java oder Go. Auf der Seite „Data Pipelines with Apache Beam“ ist ein englischsprachiges und sehr ausführliches Beispiel zu finden, wie sich Pipelines in verschiedenen Sprachen mit Apache Beam aufbauen lassen.