Instalación e implementación de clústeres independientes de Flink

Introducción a la arquitectura Flink

La instalación y despliegue de Flink se divide principalmente en modo local (máquina única) y modo cluster. El modo local se puede utilizar descomprimiendo directamente sin modificar ningún parámetro. Generalmente se utiliza cuando se realizan algunas pruebas sencillas. El modo local no se repetirá en nuestro curso. El modo de clúster incluye:
Independiente.
Flink on Yarn.
Mesos.
Estibador.
Kubernetes.
AWS.
Goole Compute Engine.
Aquí primero implemente el clúster en modo autónomo

Estructura basica

Todo el sistema Flink se compone principalmente de dos componentes, JobManager y TaskManager. La arquitectura Flink también sigue los principios de diseño de la arquitectura Maestro-Esclavo. El JobManager es el nodo Maestro y el TaskManager es el nodo Trabajador (Esclavo). La comunicación entre todos los componentes se realiza a través de Akka Framework, incluido el estado de la tarea y el esquema de información de activación del punto de control es el siguiente:
Inserte la descripción de la imagen aquí
Cliente
El cliente es responsable de las tareas para enviar al clúster, el conector JobManager Akka construido y enviar las tareas al JobManager, obtenga el estado de ejecución de la tarea interactuando con JobManager. Los clientes pueden enviar tareas por CLI o mediante Flink WebUI. También puede especificar el puerto de red RPC de JobManager en la aplicación para construir ExecutionEnvironment. Envíe la aplicación Flink.
JobManager
JobManager es responsable de la programación de tareas y la administración de recursos de todo Flink Desde el cliente Obtenga la aplicación enviada y luego asigne los recursos de TaskSlots para la aplicación enviada de acuerdo con el uso de TaskSlot en el TaskManager en el clúster e indique a TaskManger que inicie la aplicación. JobManager es equivalente al nodo maestro de todo el clúster, y solo hay un JobManager activo en todo el clúster, responsable de la gestión de tareas y la gestión de recursos de todo el clúster.
JobManager y TaskManager se comunican a través del Actor System para obtener el estado de ejecución de la tarea y enviar el estado de ejecución al cliente a través del Actor System. Al mismo tiempo, en el proceso de ejecución de la tarea, Flink JobManager activará la operación Checkpoints. Después de que cada nodo TaskManager recibe la instrucción de activación Checkpoint, completa la operación Checkpoint. Todos los procesos de coordinación de puntos de control se completan en Flink JobManager. Cuando se complete la tarea, Flink enviará la información de la ejecución de la tarea al cliente y liberará los recursos en el Administrador de tareas para el próximo envío de la tarea.

TaskManager
TaskManager es equivalente al nodo esclavo de todo el clúster, responsable de la ejecución de tareas específicas y la aplicación de recursos y la gestión de las tareas correspondientes en cada nodo. El cliente compila y empaqueta la aplicación Flink preparada, la envía al JobManager y luego JobManager asigna la tarea al nodo TaskManager con recursos de acuerdo con la situación de recursos del TaskManager registrado, y luego inicia y ejecuta la tarea. El Administrador de tareas recibe las tareas que deben implementarse desde el Administrador de trabajos, luego usa el recurso Slot para iniciar la Tarea, establece una conexión de red para el acceso a los datos, recibe los datos e inicia el procesamiento de datos. Al mismo tiempo, la interacción de datos entre TaskManagers se lleva a cabo a través del flujo de datos.
La operación de tareas de Flink es en realidad multiproceso, que es muy diferente del proceso MapReduce multi-JVM. Fink puede mejorar enormemente la eficiencia del uso de la CPU. Los recursos del sistema se comparten entre múltiples tareas y tareas a través de TaskSlot. Administración efectiva de recursos mediante la administración de múltiples Grupos de recursos de TaskSlot en un TaskManager

Instalación y despliegue

Planificación de la preparación y el despliegue de documentos

Preparamos tres servidores server01, server02, server03
server01 como jobManager (master) server01, server02, server03 como TaskManager (esclavo) server01 como maestro y esclavo para
descargar e instalar el archivo flink-1.9.1-bin-scala_2.12 .tgz, dirección de descarga: https://download.csdn.net/download/zhangxm_qz/12732760

Sube archivos al servidor y descomprímelos

Sube el archivo flink-1.9.1-bin-scala_2.12.tgz al directorio server01 server / opt / apps
y descomprímelo de la siguiente manera:

[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

Modificar el archivo de configuración

Ingrese al directorio conf debajo de flink para modificar el archivo de configuración flink-conf.yaml, y modifique los siguientes dos elementos

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

Modifique el contenido del archivo de esclavos de la siguiente manera:

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

Distribuir archivos de instalación a otros servidores

Copie el directorio flink modificado en server02 y server03, el comando es el siguiente:

[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 

Iniciar el clúster

Ejecute el comando start-cluster.sh en bin para iniciar el clúster de la siguiente manera:

[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.

Visite webUI

Después de un inicio exitoso, visite http: // server01: 8081 para acceder a flinkwebUI de la siguiente manera:
Inserte la descripción de la imagen aquí

Subir tareas al clúster

Desarrollar un programa de ejemplo WordCount

el código se muestra a continuación

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")
  }
}

Subir tareas al clúster de Flink a través de comandos

Cargue el paquete jar del programa en la ubicación server01 de la siguiente manera:

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

Ejecutar tarea de carga de comandos

Debido a que el programa necesita conectarse al puerto 8888 de server01, primero debe iniciar el programa de envío de datos a través del siguiente comando; de lo contrario, la tarea no se iniciará debido a una falla en la conexión
. Ejecute el siguiente comando en server01 (si el comando no existe , ejecute yum install -y nc para instalar):

[root@server01 flink]# nc -lk 8888

Sube el paquete al motor de 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

Al enviar una cadena al controlador en la terminal, puede ver la ejecución de la tarea en la interfaz de usuario web

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

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Subir tareas al clúster de Flink a través de webUI

También puede cargar el programa de tareas a través de la interfaz webUI

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/zhangxm_qz/article/details/108124130
Recomendado
Clasificación