Flink DataStream-System

Vorwort

Dieser Artikel gehört zur Rubrik „Big Data Technology System“. Diese Kolumne ist ein Original des Autors. Bitte geben Sie beim Zitieren die Quelle an. Bitte weisen Sie im Kommentarbereich auf etwaige Mängel und Fehler hin. Vielen Dank!

Die Verzeichnisstruktur und Referenzen dieser Kolumne finden Sie unter Big Data Technology System


Mindmapping

Fügen Sie hier eine Bildbeschreibung ein


Text

Für Flink, eine Stream-zentrierte Distributed-Computing-Engine, ist der Datenstrom die Kerndatenabstraktion und stellt einen kontinuierlich generierten Datenstrom dar , ähnlich dem Konzept von PCollection in Apache Beam.

DataStream wird in Flink zur Darstellung des Datenflusses verwendet. DataStream ist ein logisches Konzept, kein Konzept der zugrunde liegenden Ausführung.

DataStream definiert allgemeine Datenverarbeitungsoperations-APIs (konvertiert in Transformation) und bietet außerdem die Möglichkeit, die Datenverarbeitung von zwei Zahlen anzupassen. Wenn die von DataStream bereitgestellten allgemeinen Operationen nicht den Anforderungen entsprechen, kann die Datenverarbeitungslogik angepasst werden.

Das DataStream-System ist in der folgenden Abbildung dargestellt.

Fügen Sie hier eine Bildbeschreibung ein

DataStreamSource selbst ist ein DataStream. DataStreamSink, AsyncDatastream, BroadcastDataStream, BroadcastConnectedDataStream und QueryableDataStream sind alle Kapselungen allgemeiner DataStream-Objekte. Sie implementieren spezifische Funktionen in DataStream. Als Nächstes werden diese DataStreams einzeln eingeführt.

  1. DataStreamEs handelt sich um die Kernabstraktion des Flink-Datenflusses , die eine Reihe von Operationen für den Datenfluss definiert und auch die gegenseitige Konvertierungsbeziehung mit anderen DataStream-Typen definiert. Jeder DataStream verfügt über ein Transformationsobjekt, das den DataStream mithilfe der Transformation aus dem Upstream-DataStream darstellt.
  2. DataStreamSourceIst der Ausgangspunkt von DataStream . DataStreamSource wird in StreamExecutionEnvironment erstellt und von StreamExecutionEnvironment.addSourcce (SourceFunction) erstellt. SourceFunction enthält die spezifische Logik von DataStreamSource, die Daten aus der Datenquelle liest.
  3. DataStreamSinkDie Daten werden aus dem DatasourceStream gelesen und müssen nach einer Reihe von Verarbeitungsvorgängen schließlich in den externen Speicher geschrieben werden, der über DataStream.addSink (sinkFunction) erstellt wird, wobei SinkFunction die spezifische Logik zum Schreiben von Daten in den externen Speicher definiert.
  4. KeyedStreamWird verwendet, um den Datenstrom gruppiert nach dem angegebenen Schlüssel darzustellen . Ein keyedStream kann durch Aufrufen von DataStream.keyBy() abgerufen werden. Jede im KeyedStream ausgewählte Transformation wird zurück in den DataStream umgewandelt. Bei der Implementierung schreibt KeyedStream Schlüsselinformationen in Transformation. Jeder Datensatz kann nur auf den Status seines Schlüssels zugreifen, und die darin enthaltenen aggregierten Daten können den Status des entsprechenden Schlüssels problemlos bedienen und speichern.
  5. WindowedStream & AllWindowedStreamWindowedStream stellt einen Datenstrom dar, der nach Schlüssel gruppiert und basierend auf WindowAssigner in Fenster aufgeteilt ist. Daher wird WindowedStream von KeyedStream abgeleitet und jede an WindowedStream durchgeführte Transformation wird auch zurück in DataStream konvertiert.
  6. JoinedStreams & CoGroupedStreamsJoin ist ein Sonderfall von CoGroup und die unterste Ebene von JoinedStreams wird mithilfe von CoGroupedStreams implementiert.

Der Unterschied zwischen Join und CoGroup ist wie folgt: CoGrouped konzentriert sich auf die Gruppierung, das Gruppieren von Daten und das Arbeiten mit zwei Sätzen auf demselben Schlüssel. Es kann flexibler Code geschrieben werden, um bestimmte Geschäftsfunktionen zu implementieren. Join konzentriert sich auf Datenpaare und arbeitet mit jedem Elementpaar desselben Schlüssels. CoGroup ist allgemeiner, aber da Join ein allgemeiner Vorgang in der Datenbank ist, werden die Funktionen von Join basierend auf CoGroup bereitgestellt. Sowohl JoinGroup als auch CoGroup führen Operationen an kontinuierlich generierten Daten durch, können die Daten jedoch nicht unbegrenzt im Speicher halten. Es ist theoretisch nicht möglich, die kartesische Produktoperation von Join für alle Daten auszuführen (theoretisch ist der Speicher nicht ausreichend, kann er in den geleert werden Festplatte, und wiederholtes Lesen und Schreiben auf der Festplatte führt zu schlechter Leistung), daher basieren beide auf der untersten Ebene auf Windows.

  1. ConnectedStreamsStellt eine Kombination aus zwei Datenströmen dar. Die beiden Datenströme können vom gleichen Typ oder unterschiedlichen Typs sein. ConnectedStreams eignet sich für Operationen an zwei verwandten Datenströmen, die den Status teilen. Ein typisches Szenario ist die dynamische Regeldatenverarbeitung . Einer der beiden Flüsse ist ein Datenfluss und der andere ist eine Geschäftsregel, die im Laufe der Zeit aktualisiert wird. Die Regeln im Geschäftsregelfluss werden im Status gespeichert und die Regeln aktualisieren den Status weiterhin. Wenn neue Daten im Datenfluss eintreffen, werden die im Staat hinterlegten Regeln für die Datenverarbeitung verwendet.
  2. BroadcastStream & BroadcastConnectedStreamBroadcastStream ist eigentlich eine Kapselung eines gemeinsamen DataStreams und stellt das Broadcast- Verhalten von DataStream bereit. BroadcastConnectedStream ist im Allgemeinen über DataStream / KeyedDataStream und BroadcastStream verbunden, ähnlich wie ConnectedStream.
  3. IterativeStreamEs handelt sich um eine iterative Operation für einen DataStream . Logisch gesehen ist der Dataflow, der IterativeStream enthält, ein gerichteter zyklischer Graph. Auf der zugrunde liegenden Ausführungsebene führt Flink eine spezielle Verarbeitung darauf durch.
  4. AsyncDataStreamIst ein Tool, das die Möglichkeit bietet, asynchrone Funktionen auf DataStream zu verwenden .

Ich denke du magst

Origin blog.csdn.net/Shockang/article/details/132810777
Empfohlen
Rangfolge