Tabla de contenido
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
- 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.
- Subir archivos a hdfs
# hdfs dfs -copyFromLocal words.txt /
- 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