Wie wählt man eine Streaming-Data-Plattform aus?

Viele der besten Plattformen für die Verwaltung, Speicherung und Analyse von Streaming-Daten sind Apache-Open-Source-Projekte sowie kommerzielle und Cloud-Implementierungen dieser Projekte. [...]

(c) pixabay.com

Streaming-Daten werden kontinuierlich generiert, oft von Tausenden von Datenquellen, wie z. B. Sensoren oder Serverprotokollen. Streaming-Datensätze sind oft klein, vielleicht ein paar Kilobyte pro Satz, aber es gibt viele davon, und in vielen Fällen läuft der Datenstrom immer weiter, ohne jemals zu stoppen. In diesem Artikel erfahren Sie mehr über die Hintergründe und die Auswahl einer Streaming-Data-Plattform.

Wie funktionieren Streaming-Data-Plattformen?

Ingestion und Datenexport. Im Allgemeinen werden sowohl der Dateningestion als auch der Datenexport über Datenkonnektoren abgewickelt, die auf die Fremdsysteme spezialisiert sind. In einigen Fällen gibt es einen ETL- (Extract, Transform, and Load) oder ELT-Prozess (Extract, Load, and Transform), um die Daten neu zu ordnen, zu bereinigen und für den Bestimmungsort aufzubereiten.

Beim Ingestion von Streaming-Daten werden häufig Daten gelesen, die von mehreren, manchmal Tausenden Quellen generiert werden, wie z. B. im Fall von IoT-Geräten (Internet der Dinge). Der Datenexport erfolgt manchmal in ein Data Warehouse oder einen Data Lake für tiefgreifende Analysen und maschinelles Lernen.

Pub/sub und Themen. Viele Streaming-Data-Plattformen, darunter Apache Kafka und Apache Pulsar, implementieren ein Publish-and-Subscribe-Modell, bei dem die Daten in Topics organisiert sind. Eingespeiste Daten können mit einem oder mehreren Themen gekennzeichnet werden, so dass Clients, die eines dieser Themen abonniert haben, die Daten empfangen können. In einem Anwendungsfall der Online-Veröffentlichung von Nachrichten könnte beispielsweise ein Artikel über die Rede eines Politikers als Eilmeldung, US-Nachrichten und Politik gekennzeichnet werden, so dass er von der Seitenlayout-Software unter der Aufsicht des (menschlichen) Redakteurs in jeden dieser Bereiche eingefügt werden kann.

Datenanalyse. Daten-Streaming-Plattformen bieten in der Regel die Möglichkeit, Analysen an zwei Stellen in der Pipeline durchzuführen. Der erste ist Teil des Echtzeitstroms, der zweite befindet sich an einem persistenten Endpunkt. Kafka verfügt beispielsweise über einfache Echtzeit-Analysefunktionen in seiner Streams-API und kann auch Apache Samza oder einen anderen Analyseprozessor für komplexere Echtzeitberechnungen aufrufen. Es gibt zusätzliche Möglichkeiten für Analysen und maschinelles Lernen, sobald die Daten in einem persistenten Datenspeicher abgelegt wurden. Diese Verarbeitung kann nahezu in Echtzeit oder als regelmäßiger Batch-Prozess erfolgen.

Serverlose Funktionen wie AWS Lambda können mit Datenströmen verwendet werden, um Streaming-Datensätze mit benutzerdefinierten Programmen zu analysieren. Serverlose Funktionen sind eine Alternative zu Stream-Analytics-Prozessoren wie Apache Flink.

Clustering. Daten-Streaming-Plattformen sind selten Einzelinstanzen, außer bei Entwicklungs- und Testinstallationen. Produktionsfähige Streaming-Plattformen müssen skaliert werden, daher werden sie in der Regel als Cluster von Knoten betrieben. Die allerneueste Möglichkeit, dies für Cloud-Event-Streaming zu implementieren, ist eine serverlose, elastische Plattform wie Confluent Cloud.

Anwendungsfälle für Streaming

Die folgende Liste von Anwendungsfällen stammt aus der Open-Source-Dokumentation von Kafka:

  • Verarbeitung von Zahlungen und Finanztransaktionen in Echtzeit, z. B. an Börsen, bei Banken und Versicherungen.
  • Verfolgung und Überwachung von Autos, Lastwagen, Flotten und Sendungen in Echtzeit, z. B. in der Logistik und der Automobilindustrie.
  • Kontinuierliche Erfassung und Analyse von Sensordaten aus IoT-Geräten oder anderen Anlagen, z. B. in Fabriken und Windparks.
  • Erfassung und sofortige Reaktion auf Kundeninteraktionen und -bestellungen, z. B. im Einzelhandel, in der Hotel- und Reisebranche und bei mobilen Anwendungen.
  • Zur Überwachung von Patienten in Krankenhäusern und zur Vorhersage von Zustandsänderungen, um in Notfällen eine rechtzeitige Behandlung sicherzustellen.
  • Verbindung, Speicherung und Bereitstellung von Daten, die von verschiedenen Abteilungen eines Unternehmens produziert werden.
  • als Grundlage für Datenplattformen, ereignisgesteuerte Architekturen und Microservices dienen.

Kafka listet auch namhafte Anwendungsfälle von Kunden auf, zum Beispiel: Die New York Times nutzt Apache Kafka und die Kafka Streams API, um veröffentlichte Inhalte zu speichern und in Echtzeit an die verschiedenen Anwendungen und Systeme zu verteilen, die sie den Lesern zur Verfügung stellen.

Kriterien für die Auswahl einer Streaming-Data-Plattform

Die wichtigsten Leistungsindikatoren (KPIs) für Streaming-Data-Plattformen sind Ereignisrate, Durchsatz (Ereignisrate mal Ereignisgröße), Latenz, Zuverlässigkeit und die Anzahl der Themen (bei Pub-Sub-Architekturen). Die Skalierung kann durch Hinzufügen von Knoten in einer geclusterten Geometrie erfolgen, was auch die Zuverlässigkeit erhöht. Die Skalierung erfolgt bei serverlosen Plattformen automatisch. Nicht alle Streaming-Data-Plattformen werden zwangsläufig alle Ihre KPIs erfüllen.

Die Unterstützung von Client-Programmiersprachen kann ein Unterscheidungsmerkmal zwischen Streaming-Data-Plattformen sein, da Ihre eigenen Entwickler oder Berater Client-Anwendungen schreiben werden. Bei Open Source Apache Kafka haben Sie beispielsweise offiziell die Wahl, die Streams-API von Java oder Scala (beides JVM-Sprachen) aus aufzurufen, aber es gibt ein Community-Projekt namens librdkafka, das andere Sprachen für Clients unterstützt, darunter C/C++, Go, .NET und Python. Confluent unterhält seinen eigenen offiziellen, signierten Satz von Binärdateien für librdkafka.

Im Gegensatz dazu wurde Apache Storm von Grund auf so konzipiert, dass es über den sprachübergreifenden Compiler Apache Thrift mit jeder Programmiersprache verwendet werden kann. Apache Pulsar unterstützt Clients in Java, Go, Python, C++, Node.js, WebSocket und C#. Die Amazon Kinesis Streams API unterstützt alle Sprachen, für die es ein Amazon SDK oder CDK gibt: Java, JavaScript, .NET, PHP, Python, Ruby, Go, C++ und Swift.

Die Unterstützung von Verbindungen kann ein weiteres Unterscheidungsmerkmal sein. Idealerweise sollten Konnektoren für alle Ihre Datenquellen bereits verfügbar und getestet sein. Confluent listet beispielsweise über 120 verfügbare Konnektoren für Kafka auf, einige nur für die Quelle (z. B. Splunk), einige nur für die Senke (z. B. Snowflake) und einige sowohl für die Senke als auch für die Quelle (z. B. Microsoft SQL Server). Die Liste von Confluent enthält von der Community entwickelte Konnektoren. Wenn Sie Ihre eigenen Kafka-Konnektoren in Java schreiben müssen, können Sie die Kafka Connect API verwenden.

Bei der Entscheidung, wo Sie Ihre Streaming-Data-Plattform hosten möchten, müssen Sie die Standorte Ihrer Datenquellen und -senken berücksichtigen. Im Allgemeinen möchten Sie die Latenz des Streams minimieren, was bedeutet, dass die Komponenten nahe beieinander liegen sollten. Andererseits unterstützen einige Streaming-Data-Plattformen geografisch verteilte Cluster, die die Latenz für weit entfernte Quellen und Senken verringern können.

Sie müssen auch die Verwaltbarkeit der in Frage kommenden Streaming-Data-Plattformen berücksichtigen. Einige Plattformen stehen in dem Ruf, schwer zu konfigurieren und zu warten zu sein, es sei denn, Sie verfügen über Fachkenntnisse in ihrem Betrieb. Andere, insbesondere die kommerziell unterstützten Cloud-Server, haben den Ruf, sehr einfach zu verwalten zu sein.

Wichtige Streaming-Data-Plattformen und -Dienste

Amazon Kinesis

Mit Amazon Kinesis können Sie Streaming-Daten in Echtzeit und in großem Umfang sammeln, verarbeiten und analysieren. Es bietet drei Services für Daten (Data Streams, Data Firehose und Data Analytics) und einen für Medien (Video Streams). Kinesis Data Streams ist ein Ingestion-Service, der kontinuierlich Gigabytes an Daten pro Sekunde aus Tausenden von Quellen erfassen kann. Kinesis Data Analytics kann Datenströme in Echtzeit mit SQL oder Apache Flink verarbeiten. Kinesis Data Firehose kann Datenströme erfassen, umwandeln und in AWS-Datenspeicher laden, um mit vorhandenen Business Intelligence-Tools Analysen nahezu in Echtzeit durchzuführen. Sie können AWS Lambda serverlose Funktionen anstelle von Kinesis Data Analytics verwenden, wenn Sie den Stream mit einem Programm verarbeiten möchten, anstatt SQL oder Flink zu verwenden.

Apache Flink ist ein quelloffenes Java/Scala/Python-Framework und eine verteilte Verarbeitungs-Engine für zustandsabhängige Berechnungen über unbeschränkte und beschränkte Datenströme. Flink wurde entwickelt, um in allen gängigen Cluster-Umgebungen zu laufen und Berechnungen mit In-Memory-Geschwindigkeit und in beliebigem Umfang durchzuführen. Flink lässt sich in gängige Cluster-Ressourcenmanager wie Hadoop YARN, Apache Mesos und Kubernetes integrieren, kann aber auch als eigenständiger Cluster betrieben werden.

Apache Kafka

Apache Kafka ist eine quelloffene, verteilte Java/Scala-Ereignis-Streaming-Plattform für Hochleistungs-Datenpipelines, Streaming-Analysen, Datenintegration und unternehmenskritische Anwendungen. Kafka-Ereignisse werden in Topics organisiert und dauerhaft gespeichert. Kafka wurde ursprünglich bei LinkedIn entwickelt und hat derzeit den größten Marktanteil im Bereich Event-Streaming, einschließlich der kommerziellen Confluent-Version.

Kafka hat fünf Kern-APIs:

  • Die Admin-API zur Verwaltung und Überprüfung von Themen, Brokern und anderen Kafka-Objekten.
  • Die Producer-API zum Veröffentlichen (Schreiben) eines Stroms von Ereignissen in ein oder mehrere Kafka-Themen.
  • Die Consumer-API zum Abonnieren (Lesen) eines oder mehrerer Topics und zum Verarbeiten des für sie produzierten Ereignisstroms.
  • Die Kafka-Streams-API zur Implementierung von Stream-Verarbeitungsanwendungen und Microservices. Sie bietet Funktionen auf höherer Ebene zur Verarbeitung von Ereignisströmen, einschließlich Transformationen, zustandsbehafteter Operationen wie Aggregationen und Joins, Windowing, Verarbeitung basierend auf der Ereigniszeit und mehr. Eingaben werden aus einem oder mehreren Topics gelesen, um Ausgaben für ein oder mehrere Topics zu generieren, wobei die Eingabeströme effektiv in Ausgabeströme umgewandelt werden.
  • Die Kafka Connect-API zum Erstellen und Ausführen wiederverwendbarer Datenimport-/Export-Konnektoren, die Ereignisströme von und zu externen Systemen und Anwendungen konsumieren (lesen) oder produzieren (schreiben), so dass sie in Kafka integriert werden können. Ein Konnektor zu einer relationalen Datenbank wie PostgreSQL könnte zum Beispiel jede Änderung an einer Reihe von Tabellen erfassen. In der Praxis müssen Sie jedoch in der Regel keine eigenen Konnektoren implementieren, da die Kafka-Community bereits Hunderte von gebrauchsfertigen Konnektoren bereitstellt.

Apache Pulsar

Apache Pulsar ist eine quelloffene, Cloud-native, verteilte Java/C++/Python Pub-Sub-Messaging- und Streaming-Plattform. Pulsar wurde ursprünglich bei Yahoo entwickelt. Pulsar-Funktionen umfassen:

  • Native Unterstützung für mehrere Cluster in einer Pulsar-Instanz, mit nahtloser geografischer Replikation von Nachrichten über Cluster hinweg.
  • Sehr niedrige Veröffentlichungs- und End-to-End-Latenzzeiten.
  • Nahtlose Skalierbarkeit auf über eine Million Themen.
  • Eine einfache Client-API mit Bindungen für Java, Go, Python und C++.
  • Mehrere Abonnement-Modi (exklusiv, gemeinsam und Failover) für Topics.
  • Garantierte Nachrichtenzustellung mit persistenter Nachrichtenspeicherung durch Apache BookKeeper.
  • Ein serverloses, leichtgewichtiges Computing-Framework, Pulsar Functions, für stream-native Datenverarbeitung.
  • Ein serverloses Connector-Framework, Pulsar IO, das auf Pulsar Functions aufbaut und das Verschieben von Daten in und aus Apache Pulsar erleichtert.
  • Tiered Storage, der Daten von Hot/Warm Storage auf Cold/Langzeitspeicher (wie Amazon S3 und Google Cloud Storage) verlagert, wenn die Daten veraltet sind.

Apache Samza

Apache Samza ist ein verteiltes Open-Source-Framework für die Stream-Verarbeitung in Scala/Java, das ursprünglich bei LinkedIn in Verbindung mit (Apache) Kafka entwickelt wurde. Mit Samza können Sie zustandsbehaftete Anwendungen erstellen, die Daten in Echtzeit aus mehreren Quellen, einschließlich Apache Kafka, verarbeiten. Zu den Merkmalen von Samza gehören:

  • Vereinheitlichte API: Eine einfache API zur Beschreibung der Anwendungslogik, unabhängig von der Datenquelle. Die gleiche API kann sowohl Batch- als auch Streaming-Daten verarbeiten.
  • Steckbarkeit auf jeder Ebene: Verarbeiten und transformieren Sie Daten aus beliebigen Quellen. Samza bietet integrierte Integrationen mit Apache Kafka, AWS Kinesis, Azure Event Hubs (Azure-natives Kafka as a Service), Elasticsearch und Apache Hadoop. Auch die Integration mit Ihren eigenen Quellen ist recht einfach.
  • Samza als eingebettete Bibliothek: Integrieren Sie es in Ihre bestehenden Anwendungen und machen Sie es überflüssig, einen separaten Cluster für die Stream-Verarbeitung aufzusetzen und zu betreiben. Samza kann als leichtgewichtige Client-Bibliothek verwendet werden, die in Java/Scala-Anwendungen eingebettet ist.
  • Einmal schreiben, überall ausführen: Flexible Bereitstellungsoptionen, um Anwendungen überall auszuführen – von öffentlichen Clouds über containerisierte Umgebungen bis hin zu Bare-Metal-Hardware.
  • Samza als verwalteter Dienst: Führen Sie die Stream-Verarbeitung als verwalteten Dienst aus, indem Sie sie in gängige Cluster-Manager wie Apache YARN integrieren.
  • Fehlertoleranz: Transparente Migration von Aufgaben und deren zugehörigen Zuständen im Falle von Ausfällen. Samza unterstützt Host-Affinität und inkrementelles Checkpointing, um eine schnelle Wiederherstellung nach Ausfällen zu ermöglichen.
  • Massive Skalierung: Gefechtserprobt mit Anwendungen, die mehrere Terabyte an Status verwenden und auf Tausenden von Kernen laufen. Samza unterstützt mehrere große Unternehmen wie LinkedIn, Uber, TripAdvisor und Slack.

Apache Spark

Apache Spark ist eine mehrsprachige, hauptsächlich in Scala geschriebene Engine für die Ausführung von Data Engineering, Data Science und maschinellem Lernen auf Einzelknotenrechnern oder Clustern. Es verarbeitet sowohl Batch-Daten als auch Echtzeit-Streaming-Daten. Spark wurde an der U.C. Berkeley entwickelt, und die Autoren von Spark gründeten Databricks.

Apache Storm

Apache Storm ist ein verteiltes Stream-Processing-Computation-Framework, das hauptsächlich in Clojure geschrieben wurde. In Storm ist ein Stream eine unbegrenzte Abfolge von Tupeln, die parallel auf verteilte Weise verarbeitet und erstellt wird. Eine Topologie ist ein Graph von Spouts und Bolts, die mit Stream-Gruppierungen verbunden sind; Topologien definieren die Logik, die Streams verarbeitet. Ein Spout ist eine Quelle von Datenströmen in einer Topologie. Die gesamte Verarbeitung in Topologien wird in Bolts durchgeführt. Storm lässt sich mit vielen anderen Systemen und Bibliotheken integrieren, darunter Kafka, Cassandra, Redis und Kinesis.

Azure Stream Analytics

Azure Stream Analytics ist eine Echtzeit-Analyse- und komplexe Ereignisverarbeitungs-Engine, die für die gleichzeitige Analyse und Verarbeitung großer Mengen schneller Streaming-Daten aus mehreren Quellen konzipiert ist. Muster und Beziehungen können in Informationen identifiziert werden, die aus einer Reihe von Eingabequellen wie Geräten, Sensoren, Clickstreams, Social Media Feeds und Anwendungen extrahiert wurden. Diese Muster können verwendet werden, um Aktionen auszulösen und Workflows zu initiieren, wie z. B. das Erstellen von Warnmeldungen, das Einspeisen von Informationen in ein Reporting-Tool oder das Speichern umgewandelter Daten zur späteren Verwendung.

Confluent Plattform und Confluent Cloud

Confluent Platform ist eine kommerzielle Adaption von Apache Kafka durch die ursprünglichen Schöpfer von Kafka, die vor Ort und in der Cloud angeboten wird. Confluent Cloud wurde von Grund auf als serverloser, elastischer, vollständig verwalteter, Cloud-nativer Dienst neu entwickelt. Er läuft auf AWS, Microsoft Azure und Google Cloud.

Google Cloud Dataflow

Google Cloud Dataflow ist ein vollständig verwalteter, serverloser, vereinheitlichter Stream- und Batch-Datenverarbeitungsdienst, der auf Apache Beam basiert. Apache Beam ist ein vereinheitlichtes SDK, ursprünglich von Google, für Dataflow, Flink, Spark und Hazelcast Jet.

Ververica

Ververica ist eine Stream-Processing-Plattform für Unternehmen, die von den ursprünglichen Entwicklern von Apache Flink stammt. Sie bietet Multi-Tenancy, Authentifizierung, rollenbasierte Zugriffskontrolle und automatische Skalierung für Apache Flink.

Wie wir gesehen haben, gibt es viele Echtzeit-Streaming-Data-Plattformen, die zur Auswahl stehen, viele Echtzeit-Analyseoptionen und viele Möglichkeiten zur Speicherung und Batch-Analyse der gestreamten Daten. Achten Sie auf die KPIs für Streaming-Daten, konzipieren Sie Ihr System mit Blick auf das Wachstum und führen Sie auf jeden Fall einen Proof of Concept durch, bevor Sie in Produktion gehen.

*Martin Heller ist ein mitwirkender Redakteur und Rezensent für InfoWorld. Als ehemaliger Berater für Web- und Windows-Programmierung entwickelte er von 1986 bis 2010 Datenbanken, Software und Websites. In jüngster Zeit war er als Vizepräsident für Technologie und Bildung bei Alpha Software sowie als Vorsitzender und CEO bei Tubifi tätig.


Mehr Artikel

News

Bad Bots werden immer menschenähnlicher

Bei Bad Bots handelt es sich um automatisierte Softwareprogramme, die für die Durchführung von Online-Aktivitäten im großen Maßstab entwickelt werden. Bad Bots sind für entsprechend schädliche Online-Aktivitäten konzipiert und können gegen viele verschiedene Ziele eingesetzt werden, darunter Websites, Server, APIs und andere Endpunkte. […]

Frauen berichten vielfach, dass ihre Schmerzen manchmal jahrelang nicht ernst genommen oder belächelt wurden. Künftig sollen Schmerzen gendersensibel in 3D visualisiert werden (c) mit KI generiert/DALL-E
News

Schmerzforschung und Gendermedizin

Im Projekt „Embodied Perceptions“ unter Leitung des AIT Center for Technology Experience wird das Thema Schmerzen ganzheitlich und gendersensibel betrachtet: Das Projektteam forscht zu Möglichkeiten, subjektives Schmerzempfinden über 3D-Avatare zu visualisieren. […]

Be the first to comment

Leave a Reply

Your email address will not be published.


*