Flink Stream-Batch Integrated Computing (5): modo de implementación y operación

Tabla de contenido

modo de operación de clúster

1.modo local

2. Modo independiente

3. Flink en modo YARN

modo local

modo independiente

Flink en modo hilo


modo de operación de clúster

Al igual que Spark , Flink también tiene varios modos operativos, de los cuales tres son principalmente compatibles: modo local , modo independiente y modo Flink en YARN .

Cada modo tiene un escenario de uso específico, echemos un vistazo a los distintos modos de funcionamiento.

1.modo local

Bueno para probar y depurar. Flink puede ejecutarse en sistemas Linux , macOS y Windows . El único requisito para la instalación en modo local es Java 1.7.x o posterior, y la JVM se iniciará en tiempo de ejecución , que se utiliza principalmente para depurar código y puede ejecutarse en un servidor.

2. Modo independiente

Se aplica a los recursos de autogestión de Flink . Flink tiene su propio modo de clúster independiente , que deja principalmente la gestión de la programación de recursos al propio clúster de Flink . Independiente es un modo de clúster, que puede tener uno o más nodos maestros ( JobManager , modo HA , utilizado para la programación de gestión de recursos, gestión de tareas, división de tareas, etc.), múltiples nodos esclavos ( TaskManager , utilizado principalmente para ejecutar la tarea descompuesta de JobManager ) .

3. Flink en modo YARN

Use YARN para programar y administrar los recursos de manera uniforme. Generalmente, en el proceso de estudio e investigación o cuando los recursos son insuficientes, puede implementar en modo local . El modo Flink on YARN es más común en el entorno de producción .

Consulte la siguiente sección para ver el flujo de trabajo de Flink en el envío de tareas de YARN .

modo local

Implementación e instalación del modo local de Flink

En el modo local, no es necesario iniciar ningún proceso, solo use el subproceso local para simular el proceso flink, que es adecuado para pruebas, desarrollo y depuración, etc. En este modo, no es necesario cambiar ninguna configuración. solo necesita asegurarse de que jdk8 esté instalado normalmente.

requisitos previos:

java 1.8+

Pasos de implementación:

1. Descargue el paquete de instalación y descomprímalo, descargue una versión más nueva y estable:

# wget https://archive.apache.org/dist/flink/flink-1.16.0/flink-1.16.0-bin-scala_2.12.tgz

abrir la cremallera

# tar -zxf flink-1.16.0-bin-scala_2.12.tgz

2. Use directamente el script para comenzar

Flink está en modo local, no es necesario cambiar ninguna configuración, simplemente comience después de la descompresión

Ejecute el siguiente comando para iniciar directamente el modo local

cd /data-ext/flink-1.16.0
bin/start-cluster.sh

desactivar el modo local

cd /data-ext/flink-1.16.0
bin/stop-cluster.sh

3. Verifique después de que el inicio sea exitoso

Ejecute jps para ver que se han iniciado dos procesos

# jps

Ejecutor del Administrador de tareas 23792

23514 StandaloneSessionClusterEntrypoint

acceso a la interfaz webUI

Después de iniciar los dos procesos con éxito, visite el número de puerto 8081 para acceder a la interfaz de administración web de flink

http://maestro:8081/#/resumen

4. Ejecuta las pruebas que vienen con flink

El maestro usa el comando nc de Linux para enviar algunas palabras al socket.

nc es la abreviatura de netcat, es una poderosa herramienta de red y tiene la reputación de la navaja suiza en la industria de redes. El comando real del comando nc en el sistema Linux es ncat, y nc es una conexión suave a ncat.

# sudo yum -y install nc
# nc -lk 8000

Abra otra ventana del maestro, inicie el programa de estadísticas de palabras incorporado de flink, acepte los datos del socket de entrada y haga estadísticas

cd /data-ext/flink-1.16.0
bin/flink run examples/streaming/SocketWindowWordCount.jar   --hostname localhost  --port 8000

Ver estadísticas:

Los resultados estadísticos de los casos de prueba que vienen con flink están en la carpeta de registro

El maestro ejecuta el siguiente comando para ver los resultados estadísticos

cd /data-ext/flink-1.16.0/log
tail -200f flink-root-taskexecutor-0-VM-0-9-centos.out

modo independiente

El modo independiente es una especie de modo de clúster, pero este modo generalmente no se ejecuta en el entorno de producción, la razón se compara con el modo en hilo:

La implementación del modo Independiente es relativamente simple y puede admitir una pequeña cantidad de tareas a pequeña escala;

El modo Stabdalone carece de gestión a nivel de sistema de trabajos en el clúster, que es propenso a una asignación de recursos desigual;

El aislamiento de recursos es relativamente simple y la competencia de recursos entre tareas es seria.

requisitos previos:

Prepare dos servidores, uno para administrar tareas (JobManager) y otro para ejecutar tareas (TaskManager)

Un servidor para la tarea de administración es suficiente, y el servidor para realizar la tarea puede posteriormente expandir los nodos sin límite de acuerdo con las necesidades reales.

Instale java 1.8 en cada servidor y configure JAVA_HOME

Realice el inicio de sesión sin contraseña ssh entre dos servidores

lista de servidores:

NOMBRE

IP

IMAGEN DEL SO

Java

maestro

192.168.0.220

el7.x86_64

1.8.0_291

nodo01

192.168.0.6

el7.x86_64

1.8.0_291

nodo02

192.168.0.8

el7.x86_64

1.8.0_291

pasos de implementación

1. Descomprima el archivo flink de la versión 1.16.0

2. Configurar las variables de entorno del sistema

# vim /etc/profile

exportar FLINK_HOME=/data-ext/flink-1.16.0

exportar PATH=$PATH:$FLINK_HOME/bin

Actualizar las variables de entorno del sistema para que surtan efecto

# source /etc/profile

3. Edite el archivo conf

Ingrese el comando cd flink-1.16.0/conf/ para ingresar al directorio conf

Ingrese el comando vim flink-conf.yaml para editar el archivo conf, que es el archivo de configuración central

jobmanager.rpc.dirección

Configurar la dirección rpc del administrador de trabajos

Seleccione un nodo como el nodo principal (JobManager) y establezca el elemento de configuración jobmanager.rpc.address en la IP o el nombre de host del nodo.

Asegúrese de que todos los nodos tengan la misma configuración jobmanager.rpc.address.

  • Modificar el tamaño de la memoria del administrador de tareas

taskmanager.memory.process.size: 2048m

administrador de tareas.numberOfTaskSlots

Modifique el número de ranuras de tareas del administrador de tareas. La ranura de tarjeta de cada servidor en Flink se puede configurar en el archivo conf. El valor predeterminado es 1

Lo modificamos a 2. Si este valor es mayor que 1, el TaskManager puede usar múltiples núcleos de CPU, y un solo TaskManager ejecutará la función de adquisición u operador en paralelo.

Modificar paralelismo

paralelismo.predeterminado: 4

4. Configurar el maestro

vim masters

maestro: 8081

5. Editar trabajadores

Ingrese trabajadores vim para editar el archivo, este archivo se usa para configurar el subnodo del clúster flink, el valor predeterminado es localhost

Similar a la configuración de HDFS, edite el archivo conf/slaves e ingrese la IP/nombre de host de cada nodo de trabajo, y escriba varias líneas nuevas para múltiples nodos. Cada nodo trabajador luego ejecutará el Administrador de tareas.

Si el maestro tiene una carga pesada, aún puede elegir que el maestro no sea el nodo TaskManager (eliminar localhost).

# vim workers

Nodo01

Nodo02

5. Archivo de configuración de distribución

Distribuya el archivo de configuración al servidor secundario a través de scp

6. Inicio y parada del servicio

Inicie el clúster:

bin/start-cluster.sh

proceso de vista jps

Apague el clúster:

bin/stop-cluster.sh

7. Configuración de alta disponibilidad

7.1 Diseño del nodo del servidor

nodo maestro

nodo esclavo

Método de implementación

maestro

nodo01

Autónomo-HA

7.2 Configurar variables de entorno

# vim /etc/profile

exportar HADOOP_HOME=/data-ext/hadoop-3.2.4

exportar HADOOP_CONF_DIR=$HADOOP_HOME/etc/Hadoop

Actualizar el entorno de la variable del sistema

# source /etc/profile

7.3 Editar conf/flink-conf.yaml, configurar flink

# vim conf/flink-conf.yaml

7.3.1 Configuración de zoológicos

Cree un nuevo directorio de almacenamiento de instantáneas y ejecútelo en el directorio FLINK_HOME

# mkdir -p tmp/zookeeper

Modifique la configuración de zoo.cfg en conf

# vim zoo.cfg

# El directorio donde se almacena la instantánea.

dataDir = /data-ext/flink-1.16.0/tmp/zookeeper

# El puerto en el que se conectarán los clientes

puertocliente = 2181

# pares de quórum de ZooKeeper

servidor.1 = maestro: 2888: 3888

Flink en modo hilo

El principio del modo Flink on Yarn es confiar en YARN para programar las tareas de Flink, que actualmente se usa ampliamente en las empresas. La ventaja de este modo es que puede hacer un uso completo de los recursos del clúster, mejorar la tasa de utilización de las máquinas del clúster y solo necesita un clúster de Hadoop para ejecutar tareas de MR y Spark, así como tareas de Flink, etc. La operación es muy conveniente y no requiere mucho mantenimiento.Un conjunto de clústeres también es muy fácil de operar y mantener. El modo Flink on Yarn debe basarse en el clúster de Hadoop y la versión de Hadoop debe ser 2.2 o superior.

Al iniciar una nueva sesión de Flink YARN Client, el cliente primero verifica si los recursos solicitados (contenedores y memoria) están disponibles. Luego, carga la configuración de Flink y los archivos JAR a HDFS.

El siguiente paso para el cliente es solicitar un contenedor YARN para iniciar ApplicationMaster. JobManager y ApplicationMaster (AM) se ejecutan en el mismo contenedor. Una vez que se inician correctamente, AM puede conocer la dirección de JobManager y generará un nuevo archivo de configuración de Flink para TaskManager (para que pueda conectarse a JobManager). Este archivo también se cargará en HDFS. Además, el contenedor AM también proporciona el servicio de interfaz web de Flink. Los puertos que utiliza Flink para proporcionar servicios están configurados por ID de usuario y de aplicación como compensaciones, lo que permite a los usuarios ejecutar varias sesiones de YARN en paralelo.

Posteriormente, AM comienza a asignar contenedores (Containers) para TaskManager de Flink y descarga archivos JAR y archivos de configuración modificados de HDFS. Una vez que se completan estos pasos, Flink está instalado y listo para aceptar tareas.

Pasos de implementación:

1. Modifique la configuración conf/flink-conf.yaml y agregue los siguientes dos elementos:

#Cuando el usuario no puede enviar el trabajo, la cantidad de reejecuciones

hilo.intentos de aplicación: 4

#Establecer tarea para distribuir equitativamente entre todos los nodos

cluster.evenly-spread-out-ranuras: verdadero

2. Descargue el paquete de dependencia de hadoop y copie el paquete en el directorio lib de flink

 flink-shaded-hadoop-3-uber-3.1.1.7.2.1.0-327-9.0.jar

3. Iniciar la prueba (modo sesión)

Session-Cluster: es para inicializar un clúster de Flink (llamado sesión de hilo de Flink) por adelantado en YARN, abrir recursos específicos y enviar todas las tareas futuras de Flink aquí. Este clúster de Flink residirá en el clúster de YARN a menos que se detenga manualmente. El clúster de Flink creado de esta manera monopolizará los recursos, y no importa si hay tareas de Flink ejecutándose o no, otras tareas en YARN no pueden usar estos recursos.

# Ejecutar en el nodo maestro

bin/yarn-session.sh -d -jm 1024 -tm 1024 -s 1

-tm indica el tamaño de la memoria de cada TaskManager

-s indica el número de ranuras para cada TaskManager

-d significa ejecutar como un programa de fondo

Nota: Las tareas enviadas en este momento se ejecutan todas a través de la sesión (sesión) y no se aplicarán a los recursos de hilo.

Ver la lista de tareas en ejecución

yarn application -list

4. prueba

  1. Crear un archivo de texto palabras.txt

pensamos que podemos hacerlo por nosotros mismos.

no podemos pensar que podemos adivinar a nosotros mismos.

pensar pensar pensar

podemos pensar, entonces podemos hacerlo.

  1. Subir archivos a hdfs
# hdfs dfs -copyFromLocal  words.txt  /
  1. Enviar tareas en hilo a través del modo de sesión
# bin/flink run examples/batch/WordCount.jar --input hdfs://master:8020/wordcount.txt

5. Cierre el modo de sesión y elimine las tareas en ejecución

yarn application kill

Supongo que te gusta

Origin blog.csdn.net/victory0508/article/details/131361901
Recomendado
Clasificación