Eine kurze Diskussion über den Aufbau und den Betriebsmechanismus des Echtzeit-Computerframeworks Flink Cluster

Eine kurze Diskussion über den Aufbau und den Betriebsmechanismus des Echtzeit-Computerframeworks Flink Cluster

1. Flink-Übersicht

1.1 Grundlegende Einführung

Zu den Hauptfunktionen gehören: Batch- und Stream-Integration, präzises Statusmanagement, Ereigniszeitunterstützung und Exactly-Once-Statuskonsistenzgarantie. Flink kann nicht nur auf einer Vielzahl von Ressourcenverwaltungs-Frameworks wie YARN, Mesos und Kubernetes ausgeführt werden, sondern unterstützt auch die unabhängige Bereitstellung auf Bare-Metal-Clustern. Wenn die Hochverfügbarkeitsoption aktiviert ist, gibt es keinen einzelnen Ausfallpunkt.

Hier müssen zwei Konzepte erläutert werden:

  • Grenze: Unbegrenzte und begrenzte Datenflüsse, die als Strategien oder Bedingungen zur Datenaggregation verstanden werden können;
  • Status: ob eine Abhängigkeit in der Ausführungsreihenfolge besteht, d. h. ob die nächste Ausführung vom vorherigen Ergebnis abhängt;

1.2 Anwendungsszenarien

Datengesteuert

Ereignisgesteuerte Anwendungen müssen keine Remote-Datenbanken abfragen. Lokaler Datenzugriff ermöglicht ihnen einen höheren Durchsatz und geringere Latenz. Am Beispiel des Betrugsbekämpfungsfalls schreibt DataDriven das Verarbeitungsregelmodell in die DatastreamAPI und abstrahiert dann die gesamte Logik zur Flink-Engine. Wenn Ereignisse oder Daten einfließen, wird das entsprechende Regelmodell ausgelöst. Sobald die Bedingungen in der Regel ausgelöst werden, verarbeitet DataDriven sie schnell und benachrichtigt die Geschäftsanwendung.

Datenanalyse

Im Vergleich zur Batch-Analyse entfällt bei der Streaming-Analyse die Notwendigkeit regelmäßiger Datenimport- und Abfrageprozesse, sodass die Latenzzeit beim Abrufen von Indikatoren aus Ereignissen geringer ist. Darüber hinaus müssen Batch-Abfragen mit künstlichen Datengrenzen umgehen, die durch periodische Importe und Eingabegrenzen verursacht werden, während Streaming-Abfragen dieses Problem nicht berücksichtigen müssen. Flink bietet gute Unterstützung sowohl für kontinuierliche Streaming-Analysen als auch für Batch-Analysen und verarbeitet und analysiert Daten in Echtzeit. Es wird häufig in Szenarien wie Echtzeit-Großbildschirmen und Echtzeitberichten verwendet.

Datenpipeline

Im Vergleich zu periodischen ETL-Aufgaben können kontinuierliche Datenpipelines die Latenz beim Verschieben von Daten zum Ziel erheblich reduzieren. Beispielsweise kann auf Grundlage des vorgelagerten StreamETL eine Echtzeitbereinigung oder -erweiterung durchgeführt und nachgelagert ein Echtzeit-Data Warehouse erstellt werden, um die Aktualität von Datenabfragen sicherzustellen und eine hocheffiziente Datenabfrageverbindung zu bilden. Dieses Szenario ist bei Media-Stream-Empfehlungen oder Suchmaschinen sehr verbreitet.

2. Umgebungsbereitstellung

2.1. Installationspaketverwaltung

[root@hop01 opt]# tar -zxvf flink-1.7.0-bin-hadoop27-scala_2.11.tgz

[root@hop02 opt]# mv flink-1.7.0 flink1.7

2.2 Cluster-Konfiguration

Verwaltungsknoten

[root@hop01 opt]# cd /opt/flink1.7/conf

[root@hop01 conf]# vim flink-conf.yaml

jobmanager.rpc.adresse: hop01

Verteilte Knoten

[root@hop01 conf]# vim-Sklaven

hop02

hop03

Die beiden Konfigurationen werden mit allen Clusterknoten synchronisiert.

2.3. Starten und Stoppen

/opt/flink1.7/bin/start-cluster.sh

/opt/flink1.7/bin/stop-cluster.sh

Startprotokoll:

[root@hop01 conf]# /opt/flink1.7/bin/start-cluster.sh

Cluster wird gestartet.

Standalonesession-Daemon wird auf Host Hop01 gestartet.

Taskexecutor-Daemon wird auf Host Hop02 gestartet.

Taskexecutor-Daemon wird auf Host Hop03 gestartet.

2.4 Web-Schnittstelle

Besuchen Sie: http://hop01:8081/

3. Entwicklungseintrittsfall

3.1 Datenskript

Verteilen Sie ein Datenskript an jeden Knoten:

/var/flink/test/word.txt

3.2. Einführung grundlegender Abhängigkeiten

Hier ist ein einfacher Fall, geschrieben in Java.

<Abhängigkeiten>
    <Abhängigkeit>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-java</artifactId>
        <version>1.7.0</version>
    </Abhängigkeit>
    <Abhängigkeit>
        <groupId>org.apache.flink</groupId>
        <artifactId>flink-streaming-java_2.11</artifactId>
        <version>1.7.0</version>
    </Abhängigkeit>
</Abhängigkeiten>

3.3. Dateidaten lesen

Hierbei werden die Daten der Datei direkt ausgelesen und die Häufigkeit des Vorkommens der einzelnen Wörter über den Programmablauf analysiert.

öffentliche Klasse WordCount {
    öffentliche statische void main(String[] args) wirft Exception {
        // Dateidaten lesen readFile();
    }

    öffentliche statische void readFile () wirft Exception {
        // 1. Ausführungsumgebung erstellen ExecutionEnvironment environment = ExecutionEnvironment.getExecutionEnvironment();

        // 2. Datendatei lesen String filePath = "/var/flink/test/word.txt";
        DataSet<String> Eingabedatei = Umgebung.readTextFile(Dateipfad);

        // 3. Gruppieren und summieren Sie DataSet<Tuple2<String, Integer>> wordDataSet = inputFile.flatMap(new WordFlatMapFunction(
        )).groupBy(0).sum(1);

        // 4. Verarbeitungsergebnisse drucken wordDataSet.print();
    }

    //Methode zum Lesen und Ausschneiden von Daten static class WordFlatMapFunction implements FlatMapFunction<String, Tuple2<String, Integer>> {
        @Überschreiben
        öffentliche void flatMap(String-Eingabe, Collector<Tuple2<String, Integer>> Collector){
            String[] WortArr = Eingabe.split(",");
            für (String-Wort: WortArr) {
                Sammler.sammeln(neues Tupel2<>(Wort, 1));
            }
        }
    }
} 

3.4. Portdaten lesen

Erstellen Sie einen Port auf dem Dienst hop01 und simulieren Sie das Senden einiger Daten an den Port:

[root@hop01 ~]# nc -lk 5566

c++,java

Verwenden Sie das Flink-Programm, um den Dateninhalt des Ports zu lesen und zu analysieren:

öffentliche Klasse WordCount {
    öffentliche statische void main(String[] args) wirft Exception {
        //Portdaten lesen readPort();
    }

    öffentliche statische void readPort () wirft Exception {
        // 1. Ausführungsumgebung erstellen StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();

        // 2. Lesen Sie den Socket-Datenport DataStreamSource<String> inputStream = environment.socketTextStream("hop01", 5566);

        // 3. Methode zum Lesen und Schneiden von Daten SingleOutputStreamOperator<Tuple2<String, Integer>> resultDataStream = inputStream.flatMap(
                neue FlatMapFunction<String, Tuple2<String, Integer>>()
        {
            @Überschreiben
            public void flatMap(String input, Collector<Tuple2<String, Integer>> collector) {
                String[] WortArr = Eingabe.Split(",");
                für (String-Wort: WortArr) {
                    Sammler.sammeln(neues Tupel2<>(Wort, 1));
                }
            }
        }).keyBy(0).sum(1);

        // 4. Analyseergebnisse drucken resultDataStream.print();

        // 5. Umgebungsstart environment.execute();
    }
}

IV. Funktionsweise

4.1. FlinkClient

Der Client dient zum Vorbereiten und Senden von Datenströmen an den JobManager-Knoten. Anschließend kann der Client je nach Bedarf die Verbindung direkt trennen oder den Verbindungsstatus aufrechterhalten und auf die Ergebnisse der Aufgabenverarbeitung warten.

4.2 JobManager

In einem Flink-Cluster werden ein JobManger-Knoten und mindestens ein TaskManager-Knoten gestartet. Nachdem der JobManager die vom Client übermittelte Aufgabe empfangen hat, koordiniert er sie und sendet sie zur Ausführung an einen bestimmten TaskManager-Knoten. Der TaskManager-Knoten sendet Heartbeat- und Verarbeitungsinformationen an den JobManager.

4.3 TaskManager

Ein Slot ist die kleinste Ressourcenplanungseinheit im TaskManager. Die Anzahl der Slots wird beim Start festgelegt. Jeder Slot kann eine Aufgabe starten, vom JobManager-Knoten bereitgestellte Aufgaben empfangen und bestimmte Analysen und Verarbeitungen durchführen.

5. Quellcodeadresse

GitHub-Adresse

https://github.com/cicadasmile/big-data-parent

GitEE-Adresse

https://gitee.com/cicadasmile/big-data-parent

Oben finden Sie eine kurze Erläuterung der Details des Aufbaus und des Betriebsmechanismus des Echtzeit-Computerframeworks Flink Cluster. Weitere Informationen zum Aufbau und dem Betriebsmechanismus des Echtzeit-Computerframeworks Flink Cluster finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Speicherverwaltung von Flink, einer Big Data-Verarbeitungs-Engine
  • Detaillierte Schritte zur Implementierung der Timeout-Statusüberwachung in Apache FlinkCEP
  • Welche Datentypen unterstützt Flink?
  • Java-Lambda-Ausdruck zur Implementierung der Flink WordCount-Prozessanalyse
  • Big Data HelloWorld-Flink implementiert WordCount
  • Analysieren Sie die Kernprinzipien von Flink und implementieren Sie Kernabstraktionen

<<:  Der visuelle Designpfad der Website sollte den Benutzergewohnheiten entsprechen

>>:  Lösung für das Problem, dass MySQL Daten sehr langsam löscht und einfügt

Artikel empfehlen

Teilen Sie 8 MySQL-Fallstricke, die Sie erwähnen müssen

MySQL ist einfach zu installieren, schnell und ve...

8 Tipps für Vue, die Sie nach dem Lesen lernen werden

1. Verwenden Sie immer :key in v-for Die Verwendu...

Detaillierte Schritte zur Installation der MySQL 5.6 X64-Version unter Linux

Umfeld: 1. CentOS6.5 X64 2.mysql-5.6.34-linux-gli...

Bauprozess eines privaten Docker-Lagerhafens

1. Vorbereitung 1.1 Hafen herunterladen Harbor-Do...

Grundkenntnisse in HTML: ein erstes Verständnis von Webseiten

HTML ist die Abkürzung für Hypertext Markup Langua...

Beispiel, wie man einen Div-Hintergrund transparent macht

Es gibt zwei gängige Möglichkeiten, den Div-Hinte...

Spezifische Verwendung des Linux-Man-Befehls

01. Befehlsübersicht Linux bietet ein umfangreich...

So verstehen und identifizieren Sie Dateitypen in Linux

Vorwort Wie wir alle wissen, ist in Linux alles e...

Tiefes Verständnis der Verwendung von ::before/:before und ::after/:after

Teil 1: Grundlagen 1. Im Gegensatz zu Pseudoklass...

Linux-Befehl „cut“ erklärt

Der Cut-Befehl in Linux und Unix dient dazu, aus ...

Installations- und Verwendungsschritte für Docker Compose

Inhaltsverzeichnis 1. Was ist Docker Compose? 2. ...

Einfache Zusammenfassung der Methoden zur Leistungsoptimierung von Tomcat

Tomcat selbst optimieren Tomcat-Speicheroptimieru...