Installation et déploiement du cluster Flink Standalone

Présentation de l'architecture Flink

L'installation et le déploiement de Flink sont principalement divisés en mode local (machine unique) et mode cluster. Le mode local peut être utilisé en décompressant directement sans modifier aucun paramètre. Il est généralement utilisé lors de quelques tests simples. Le mode local ne sera pas répété dans notre cours. Le mode cluster comprend:
Autonome.
Flink on Yarn.
Mesos.
Docker.
Kubernetes.
AWS.
Goole Compute Engine.
Ici, déployez d'abord le cluster en mode autonome

Structure basique

L'ensemble du système Flink est principalement composé de deux composants, à savoir JobManager et TaskManager. L'architecture Flink suit également les principes de conception de l'architecture maître-esclave. JobManager est le nœud maître et le gestionnaire de tâches est le nœud travailleur (esclave). La communication entre tous les composants se fait au moyen d'Akka Framework, y compris l'état de la tâche et le schéma des informations de déclenchement de Checkpoint est le suivant:
Insérez la description de l'image ici
Client
Le client est responsable des tâches à soumettre au cluster, le connecteur JobManager Akka construit et soumet les tâches au JobManager, obtenez le statut d'exécution de la tâche en interagissant avec le JobManager. Les clients peuvent soumettre des tâches par CLI ou à l'aide de Flink WebUI. Vous pouvez également spécifier le port réseau RPC de JobManager dans l'application pour créer ExecutionEnvironment. Soumettez l'application Flink.
JobManager
JobManager est responsable de la planification des tâches et de la gestion des ressources de l'ensemble de Flink À partir du client Obtenez l'application soumise, puis allouez des ressources TaskSlots pour l'application soumise en fonction de l'utilisation de TaskSlot sur le TaskManager dans le cluster et demandez à TaskManger de démarrer l'application. JobManager équivaut au nœud maître de l'ensemble du cluster, et il n'y a qu'un seul JobManager actif dans l'ensemble du cluster, responsable de la gestion des tâches et des ressources de l'ensemble du cluster.
Le JobManager et le TaskManager communiquent via le système d'acteurs pour obtenir l'état d'exécution de la tâche et envoyer l'état d'exécution au client via le système d'acteurs. En même temps, au cours du processus d'exécution de la tâche, Flink JobManager déclenchera l'opération Checkpoints. Une fois que chaque nœud TaskManager reçoit l'instruction de déclenchement Checkpoint, il termine l'opération Checkpoint. Tous les processus de coordination des points de contrôle sont terminés dans Flink JobManager. Lorsque la tâche est terminée, Flink renvoie les informations de l'exécution de la tâche au client et libère les ressources dans le TaskManager pour la prochaine soumission de la tâche.

TaskManager
TaskManager équivaut au nœud esclave de l'ensemble du cluster, responsable de l'exécution de tâches spécifiques et de l'application des ressources et de la gestion des tâches correspondantes sur chaque nœud. Le client compile et conditionne l'application Flink préparée, la soumet au JobManager, puis le JobManager affecte la tâche au nœud TaskManager avec des ressources en fonction de la situation des ressources du TaskManager enregistré, puis démarre et exécute la tâche. Le TaskManager reçoit les tâches qui doivent être déployées à partir du JobManager, puis utilise la ressource Slot pour démarrer la tâche, établit une connexion réseau pour l'accès aux données, reçoit les données et démarre le traitement des données. Dans le même temps, l'interaction des données entre les TaskManagers est effectuée via un flux de données.
Le fonctionnement des tâches de Flink est en fait multithread, ce qui est très différent du processus multi-JVM de MapReduce. Fink peut considérablement améliorer l'efficacité de l'utilisation du processeur. Les ressources système sont partagées entre plusieurs tâches et tâches via TaskSlot. Gestion efficace des ressources en gérant plusieurs Pools de ressources TaskSlot dans un TaskManager

Installation et déploiement

Préparation des documents et planification du déploiement

Nous préparons trois serveurs server01, server02, server03
server01 en tant que jobManager (master) server01, server02, server03 en tant que TaskManager (slave) server01 à la fois en tant que maître et esclave pour
télécharger et installer le fichier flink-1.9.1-bin-scala_2.12 .tgz, adresse de téléchargement: https://download.csdn.net/download/zhangxm_qz/12732760

Téléchargez des fichiers sur le serveur et décompressez

Téléchargez le fichier flink-1.9.1-bin-scala_2.12.tgz dans le répertoire server01 server / opt / apps
et décompressez-le comme suit:

[root@server01 apps]# ll
total 750912
lrwxrwxrwx.  1 root  root         11 Jun 14 22:54 flink -> flink-1.9.1
drwxr-xr-x. 10   502 games       156 Sep 30  2019 flink-1.9.1
-rw-r--r--.  1 root  root  246364329 Aug 20  2020 flink-1.9.1-bin-scala_2.12.tgz

Modifier le fichier de configuration

Entrez dans le répertoire conf sous flink pour modifier le fichier de configuration flink-conf.yaml, et modifiez les deux éléments suivants

jobmanager.rpc.address: server01   # 修改master节点服务器 我这里是 server01 做master
taskmanager.numberOfTaskSlots: 3 # taskmanager.numberOfTaskSlot 参数默认值为 1,修改成 3。表示数每一个TaskManager 上有 3 个 Slot

Modifiez le contenu du fichier esclaves comme suit:

"flink-conf.yaml" 259L, 10326C written
[root@server01 conf]# vi slaves
server01
server02
server03
~

Distribuer les fichiers d'installation sur d'autres serveurs

Copiez le répertoire flink modifié sur server02 et server03, la commande est la suivante:

[root@server01 apps]# scp -r flink-1.9.1  root@server02:/opt/apps 
[root@server01 apps]# scp -r flink-1.9.1  root@server03:/opt/apps 

Démarrez le cluster

Exécutez la commande start-cluster.sh sous bin pour démarrer le cluster comme suit:

[root@server01 flink]# bin/start-cluster.sh 
Starting cluster.
Starting standalonesession daemon on host server01.
Starting taskexecutor daemon on host server01.
Starting taskexecutor daemon on host server02.
Starting taskexecutor daemon on host server03.

Visiter webUI

Après un démarrage réussi, visitez http: // server01: 8081 pour accéder à flinkwebUI comme suit:
Insérez la description de l'image ici

Télécharger des tâches dans le cluster

Développer un exemple de programme WordCount

code montrer comme ci-dessous

package com.test.flink.wc

import org.apache.flink.streaming.api.scala.StreamExecutionEnvironment

object StreamWordCount {
    
    
  def main(args: Array[String]): Unit = {
    
    
    val streamEnv: StreamExecutionEnvironment =
      StreamExecutionEnvironment.getExecutionEnvironment
    //导入隐式转换,建议写在这里,可以防止IDEA代码提示出错的问题
    import org.apache.flink.streaming.api.scala._
    //读取数据
    val stream: DataStream[String] = streamEnv.socketTextStream("server01",8888)
    //转换计算
    val result: DataStream[(String, Int)] = stream.flatMap(_.split(","))
      .map((_, 1))
      .keyBy(0)
      .sum(1)
    //打印结果到控制台
    result.print()
    //启动流式处理,如果没有该行代码上面的程序不会运行
    streamEnv.execute("wordcount")
  }
}

Télécharger des tâches sur le cluster Flink via des commandes

Téléchargez le package jar du programme vers l'emplacement server01 comme suit:

[root@server01 flink]# ll appjars
total 24
-rw-r--r--. 1 root root 22361 Aug 20  2020 test-1.0-SNAPSHOT.jar

Exécuter la tâche de téléchargement de commande

Étant donné que le programme doit se connecter au port 8888 de server01, vous devez d'abord démarrer le programme d'envoi de données via la commande suivante, sinon la tâche échouera en raison d'un échec de connexion
. Exécutez la commande suivante sur server01 (si la commande n'existe pas , exécutez yum install -y nc pour installer):

[root@server01 flink]# nc -lk 8888

Téléchargez le package sur le moteur Flink

[root@server01 flink]# bin/flink run -d -c com.test.flink.wc.StreamWordCount ./appjars/test-1.0-SNAPSHOT.jar 
Starting execution of program
Job has been submitted with JobID 75fd7304caa7d429b343b77dff4ce65d

En envoyant une chaîne au gestionnaire dans le terminal, vous pouvez voir l'exécution de la tâche dans l'interface Web

[root@server01 flink]# nc -lk 8888
a
a
a
a
a
a
a
a

Insérez la description de l'image ici
Insérez la description de l'image ici

Télécharger des tâches sur le cluster Flink via WebUI

Vous pouvez également télécharger le programme de tâches via l'interface WebUI

Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/zhangxm_qz/article/details/108124130
conseillé
Classement