Was ist Apache Flink?
Apache Flink ist eine verteilte Open-Source-Engine für die zustandsbehaftete Verarbeitung von unbegrenzten (Streams) und begrenzten (Batches) Datensätzen. Stream-Verarbeitungsanwendungen sind so konzipiert, dass sie kontinuierlich und mit minimalen Ausfallzeiten ausgeführt werden und Daten verarbeiten, sobald sie aufgenommen werden. Apache Flink wurde für die Verarbeitung mit niedriger Latenz, die Durchführung von Berechnungen im Arbeitsspeicher, für hohe Verfügbarkeit, die Beseitigung einzelner Fehlerquellen und für die horizontale Skalierung konzipiert.
Zu den Funktionen von Apache Flink gehören eine fortschrittliche Zustandsverwaltung mit Konsistenzgarantien, die exakt einmalig sind, sowie eine Semantik für die Verarbeitung von Ereignissen mit einer hochentwickelten Behandlung von Daten außerhalb der Reihenfolge und späten Daten. Apache Flink wurde für das Streaming an erster Stelle entwickelt und bietet eine einheitliche Anwendungsprogrammierschnittstelle sowohl für die Stream- als auch für die Batch-Verarbeitung.
Warum sollten Sie Apache Fink verwenden?
Apache Flink wird aufgrund des breiten Funktionsumfangs zum Erstellen vieler verschiedener Arten von Streaming- und Batch-Anwendungen verwendet.
Einige der gängigen Arten von Anwendungen, die von Apache Flink unterstützt werden, sind:
- Ereignisgesteuerte Anwendungen, die Ereignisse aus einem oder mehreren Ereignis-Streams aufnehmen und Berechnungen, Statusaktualisierungen oder externe Aktionen ausführen. Die zustandsbehaftete Verarbeitung ermöglicht die Implementierung von Logik, die über die Transformation einzelner Nachrichten hinausgeht, wobei die Ergebnisse vom Verlauf der aufgenommenen Ereignisse abhängen.
- Datenanalyse-Anwendungen, die Informationen und Erkenntnisse aus Daten extrahieren. Wird traditionell ausgeführt, indem endliche Datensätze abgefragt und die Abfragen erneut ausgeführt oder die Ergebnisse geändert werden, um neue Daten einzubeziehen. Mit Apache Flink kann die Analyse ausgeführt werden, indem Abfragen kontinuierlich aktualisiert, gestreamt oder aufgenommene Ereignisse in Echtzeit verarbeitet werden, wobei die Ergebnisse kontinuierlich ausgegeben und aktualisiert werden.
- Data Pipelines für Anwendungen, transformieren und bereichern Daten, die von einem Datenspeicher in einen anderen verschoben werden sollen. Traditionell wird Extract-Transform-Load (ETL) regelmäßig in Batches ausgeführt. Mit Apache Flink kann der Prozess kontinuierlich ausgeführt werden und die Daten mit geringer Latenz an ihr Ziel übertragen werden.
Wie funktioniert Apache Flink?
Flink ist eine Stream-Verarbeitungs-Engine mit hohem Durchsatz und niedriger Latenz. Eine Flink-Anwendung besteht aus einem beliebigen komplexen azyklischen Datenflussgraphen, der aus Streams und Transformationen besteht. Daten werden aus einer oder mehreren Datenquellen aufgenommen und an ein oder mehrere Ziele gesendet. Quell- und Zielsysteme können Streams, Nachrichtenwarteschlangen oder Datenspeicher sein und Dateien, beliebte Datenbanken und Suchmaschinen enthalten. Transformationen können zustandsbehaftet sein, wie Aggregationen über Zeitfenster oder komplexe Mustererkennung.
Die Fehlertoleranz wird durch zwei separate Mechanismen erreicht: automatisches und periodisches Prüfen des Anwendungsstatus, der in einen persistenten Speicher kopiert wird, um bei einem Ausfall eine automatische Wiederherstellung zu ermöglichen; Sicherungspunkte auf Abruf, die ein konsistentes Bild des Ausführungsstatus speichern, um das Anhalten und Fortsetzen, Aktualisieren oder Gabeln Ihrer Flink-Aufgabe zu ermöglichen und den Anwendungsstatus über Pausen und Neustarts hinweg beizubehalten. Checkpoint- und Sicherungspunkt-Mechanismen sind asynchron und erstellen eine konsistente Momentaufnahme des Status, ohne „die Welt anzuhalten“, während die Anwendung weiterhin Ereignisse verarbeitet.
Was sind die Vorteile von Apache Flink?
Sowohl unbegrenzte (Streams) als auch begrenzte (Batches) Datensätze verarbeiten
Apache Flink kann sowohl unbegrenzte als auch begrenzte Datensätze verarbeiten, d. h. Streams und Batch-Daten. Unbegrenzte Streams haben einen Anfang, sind aber praktisch unendlich und enden nie. Die Verarbeitung kann theoretisch niemals aufhören.
Begrenzte Daten sind wie Tabellen endlich und können in einer endlichen Zeit von Anfang bis Ende verarbeitet werden.
Apache Flink bietet Algorithmen und Datenstrukturen, um sowohl begrenzte als auch unbegrenzte Verarbeitung über dieselbe Programmierschnittstelle zu unterstützen. Anwendungen, die unbegrenzte Daten verarbeiten, werden kontinuierlich ausgeführt. Anwendungen, die begrenzte Daten verarbeiten, beenden ihre Ausführung, wenn das Ende der Eingabe-Datensätze erreicht ist.
Ausführung von Anwendungen in jeglicher Größenordnung
Apache Flink wurde für die Ausführung zustandsbehafteter Anwendungen in praktisch jeder Größenordnung entwickelt. Die Verarbeitung erfolgt parallelisiert auf Tausende von Aufgaben, die auf mehrere Maschinen verteilt sind, gleichzeitig.
Der Status ist außerdem partitioniert und horizontal verteilt, sodass mehrere Terabyte auf mehreren Computern verwaltet werden können. Der Status wird inkrementell auf einen persistenten Speicher überprüft.
In-Memory-Leistung
Daten, die durch die Anwendung und den Status fließen, werden auf mehrere Maschinen partitioniert. Daher kann die Berechnung abgeschlossen werden, indem auf lokale Daten zugegriffen wird, häufig im Speicher.
Exactly-Once-State-Konsistenz
Anwendungen, die über die Transformationen einzelner Nachrichten hinausgehen, sind zustandsbehaftet. Die Geschäftslogik muss sich Ereignisse oder Zwischenergebnisse merken. Apache Flink garantiert die Konsistenz des internen Zustands, auch bei einem Ausfall und bei jedem Anhalten und Neustart der Anwendung. Die Auswirkung jeder Nachricht auf den internen Status wird immer genau einmal angewendet, unabhängig davon, ob die Anwendung bei der Wiederherstellung oder beim Neustart Duplikate von der Datenquelle empfängt.
Große Auswahl an Konnektoren
Apache Flink verfügt über eine Reihe von bewährten Konnektoren für beliebte Messaging- und Streaming-Systeme, Datenspeicher, Suchmaschinen und Dateisysteme. Einige Beispiele sind Apache Kafka, Amazon Kinesis Data Streams, Amazon SQS, Active MQ, Rabbit MQ, NiFi, OpenSearch und ElasticSearch, DynamoDB, HBase und alle Datenbanken, die JDBC-Clients bereitstellen.
Mehrere Abstraktionsebenen
Apache Flink bietet mehrere Abstraktionsebenen für die Programmierschnittstelle. Von Streaming-SQL und Tabellen-API auf höherer Ebene unter Verwendung vertrauter Abstraktionen wie Tabelle, Joins und Gruppieren nach. Die DataStream-API bietet eine niedrigere Abstraktionsebene, aber auch mehr Kontrolle mit der Semantik von Streams, Windowing und Mapping. Und schließlich bietet die ProcessFunction-API eine genaue Kontrolle über die Verarbeitung jeder Nachricht und eine direkte Kontrolle über den Zustand. Alle Programmierschnittstellen funktionieren nahtlos sowohl mit unbegrenzten (Streams) als auch mit begrenzten (Tabellen) Datumssätzen. Verschiedene Abstraktionsebenen können in derselben Anwendung als das richtige Werkzeug zur Lösung jedes Problems verwendet werden.
Verschiedene Programmiersprachen
Apache Flink kann mit mehreren Sprachen programmiert werden, von High-Level-Streaming-SQL bis hin zu Python, Scala, Java, aber auch anderen JVM-Sprachen wie Kotlin.
Was sind Anwendungsfälle für Apache Flink?
Zu den Anwendungsfällen von Apache Flink gehören:
-
Betrugserkennung, Anomalieerkennung, regelbasierte Warnmeldungen und UX-Personalisierung in Echtzeit sind Beispiele für Anwendungsfälle für ereignisgesteuerte Anwendungen. Flink eignet sich perfekt für all diese Anwendungsfälle, bei denen Ereignisströme zustandsbehaftet verarbeitet werden müssen, wobei die Entwicklung im Laufe der Zeit berücksichtigt, komplexe Muster erkannt oder Statistiken über Zeitfenster berechnet werden müssen, um Abweichungen von erwarteten Schwellenwerten zu erkennen.
-
Qualitätsüberwachung, Ad-hoc-Analyse von Live-Daten, Clickstream-Analyse und Auswertung von Produktexperimenten sind Anwendungsfälle für Streaming-Analysen, die Flink effizient unterstützen kann. Durch die Nutzung des hohen Abstraktionsgrads der SQL- oder Tabellen-API-Programmierschnittstelle können Sie dieselben Analysen sowohl für Streaming-Live-Daten als auch für Batches historischer Daten ausführen.
-
Die Überwachung des Dateisystems und das Schreiben von Daten in ein Protokoll, das Materialisieren eines Ereignis-Streams in einer Datenbank, das schrittweise Erstellen und Verfeinern eines Suchindex sind Anwendungsfälle, die durch kontinuierliches ETL effizient unterstützt werden. Durch die Nutzung einer Vielzahl von Konnektoren kann Flink direkt aus verschiedenen Arten von Datenspeichern lesen, Streams von Änderungsereignissen aufnehmen und sogar Änderungen direkt erfassen. Durch die kontinuierliche Erfassung und Verarbeitung der Änderungen und die direkte Aktualisierung der Zielsysteme kann Flink die Verzögerung der Datensynchronisierung auf Sekunden oder weniger reduzieren.
Wer benutzt Apache Flink?
Norton LifeLock
NortonLifeLock ist ein globales Unternehmen für Cybersicherheit und Internet-Datenschutz, das Millionen von Kunden Dienstleistungen für Gerätesicherheit sowie Identitäts- und Online-Datenschutz für Zuhause und Familie anbietet.
NortonLifeLock bietet Benutzern ein VPN-Produkt als Freemium-Service an. Daher müssen sie Nutzungsbeschränkungen in Echtzeit durchsetzen, um zu verhindern, dass Freemium-Benutzer den Service nutzen, wenn ihre Nutzung das Limit überschreitet. Die Herausforderung für NortonLifeLock besteht darin, dies auf zuverlässige und erschwingliche Weise zu tun.
NortonLifeLock vereinfachte die Implementierung der Aggregation auf Benutzer- und Geräteebene mithilfe von Apache Flink.
Samsung SmartThings
Als unabhängige Tochtergesellschaft von Samsung ist SmartThings eines der führenden IoT-Ökosysteme der Welt und bietet jedem die müheloseste Möglichkeit, ein Smart Home zu erstellen.
Bei Samsung SmartThings traten Probleme auf, weil die Ressourcen für einzelne Anwendungen reserviert waren. Dies führte zu Verzögerungen und Leistungseinbußen bei der Verarbeitung von Daten. Letztendlich führte dies zu hohen Kosten für die Aufrechterhaltung der Workloads im Betrieb. Sie mussten die Datenplattform neu gestalten.
Sie sind von Apache Spark zu Apache Flink übergegangen.
BT Group
Die BT Group ist der führende Telekommunikations- und Netzwerkanbieter Großbritanniens und ein führender Anbieter von globalen Kommunikationsdiensten und -lösungen, der Kunden in 180 Ländern bedient. Zu den Hauptaktivitäten im Vereinigten Königreich gehören die Bereitstellung von Festnetz-, Mobilfunk-, Breitband- und Fernseh-Services (einschließlich Sport) sowie einer Reihe von Produkten und Services über konvergierte Fest- und Mobilfunknetze für Verbraucher, Unternehmen und Kunden des öffentlichen Sektors.
BT benötigte eine Anwendung zur Service-Überwachung, um die Einführung von Digital Voice zu unterstützen, seinem neuen Verbraucherprodukt, das hochauflösende Sprachanrufe über sein britisches Breitbandnetzwerk ermöglicht.
BT hat mithilfe von Apache Flink einen ereignisgesteuerten Analyse-Service entwickelt, um Servicedaten aufzunehmen, zu verarbeiten und zu visualisieren.
Autodesk
Autodesk, führender Anbieter von 3D-Design- und Konstruktionssoftware möchte mehr tun, als Software zu entwickeln und bereitzustellen. Das Unternehmen möchte sicherstellen, dass Millionen von Benutzern weltweit ein optimales Erlebnis bei der Ausführung dieser Software geboten wird.
Autodesk entwickelt Software für Menschen, die in der Entwicklung tätig sind. Sie betreuen über 200 Millionen Kunden. Sie mussten Silos beseitigen, um Kundenprobleme schneller finden und beheben zu können. Sie wollten eine einheitliche Methode zur Erfassung und Messung von Metriken mit einem kleinen Betriebsteam, ohne dass die Kosten eskalieren oder Datenbindungen entstehen.
NHL
Die National Hockey League ist die zweitälteste der vier großen professionellen Mannschaftssportligen in Nordamerika. Heute besteht die NHL aus 32 Mitgliedsvereinen, die jeweils die internationale Zusammensetzung der Liga widerspiegeln. In den Kadern der Teams sind Spieler aus mehr als 20 Ländern vertreten.
Die NHL stand vor mehreren technischen Herausforderungen, wie der Bestimmung der erforderlichen Features und Modellierungsmethoden zur Vorhersage eines Ereignisses mit großer Unsicherheit sowie der Bestimmung, wie Streaming-PT-Sensordaten verwendet werden können, um zu ermitteln, wo ein Duell stattfindet, die beteiligten Spieler und die Wahrscheinlichkeit, welcher Spieler das Duell gewinnt, und das alles innerhalb von Hunderten von Millisekunden.
Mithilfe von Apache Flink war die NHL nicht nur in der Lage, den Gewinner eines Duells vorherzusagen, sondern auch eine Grundlage für die Lösung einer Reihe ähnlicher Probleme in Echtzeit und kosteneffizient zu schaffen.
Poshmark
Poshmark ist ein führender sozialer Marktplatz für neuen und gebrauchten Stil für Damen, Herren, Kinder, Haustiere, Zuhause und mehr. Ihre Gemeinschaft von mehr als 80 Millionen Menschen in den USA, Kanada, Australien und Indien gestaltet die Zukunft des Einkaufens so, dass es einfach, sozial und nachhaltig ist.
Poshmark hat sich darauf konzentriert, durch Personalisierung und Verbesserung der Benutzererfahrung ein Umsatzwachstum zu erzielen. Der ursprüngliche Ansatz, die Batch-Vrarbeitung für Personalisierung und Sicherheit zu verwenden, entsprach nicht den Erwartungen an eine Verbesserung des Kundenerlebnisses.
Poshmark entwickelte die Personalisierung in Echtzeit mithilfe der Datenanreicherung in Echtzeit mit Apache Flink.
Wie kann AWS helfen, Apache Flink-Anwendungen in der Cloud auszuführen?
Amazon Manages Service für Apache Flink ist eine vollständig verwaltete Lösung zum Ausführen von Apache Flink-Anwendungen. Amazon Managed Service für Apache Flink reduziert die Komplexität der Erstellung, Verwaltung und Integration von Apache-Flink-Anwendungen mit anderen AWS-Services. Mit Amazon Managed Service für Apache Flink müssen keine Server verwaltet werden. Es gibt keine Mindestgebühr oder Einrichtungskosten. Die Einrichtung ist standardmäßig hochverfügbar. Der Anwendungsstatus wird vollständig verwaltet und aus Gründen der Fehlertoleranz in einem Backend mit hoher Lebensdauer gespeichert. Die Anwendung wird mit einer einfachen API gesteuert, um die Anwendung zu stoppen, zu starten, zu konfigurieren und zu skalieren.
Amazon Managed Service für Apache Flink Studio bietet eine interaktive Notebook-Schnittstelle zu Apache Flink. Mit einem Apache-Zeppelin-Notebook können Sie SQL-, Python- und Scala-Code auf Apache Flink ausführen, um zu entwickeln und zu experimentieren, Daten zu überprüfen oder zu visualisieren.
Amazon EMR unterstützt Apache Flink auch als YARN-Anwendung, sodass Sie Ressourcen verwalten und andere Anwendungen innerhalb des Clusters ausführen können.
Apache Flink unterstützt nativ Kubernetes. Sie können Apache Flink in einer containerisierten Umgebung wie Amazon Elastic Kubernetes Service (Amazon EKS) selbst hosten oder es mithilfe von Amazon Elastic Compute Cloud (Amazon EC2) vollständig selbst verwalten.
Beginnen Sie mit Apache Flink in AWS, indem Sie noch heute ein Konto erstellen.
Nächste Schritte in AWS
Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.
Starten Sie mit der Entwicklung in der AWS-Managementkonsole.