Flink sobre la gestión de recursos del proceso de envío de hilo

Flink on Yarn tiene dos métodos de ejecución, uno es el modo Session-Cluster, el otro es el modo Pre-Job-Cluster


Flink Session (Session-Cluster)

  1. Modo de gestión de memoria centralizada: inicialice un clúster de Flink en Yarn, abra los recursos designados y luego envíe a Flink Jon en esta sesión de Flink, lo que significa que no importa cuántos trabajos se envíen, estos trabajos compartirán el hilo al principio Recursos solicitado en. Este grupo de Flink residirá en el grupo de Yarn a menos que se detenga manualmente.
  2. Iniciar un demonio en hilo para iniciar varios trabajos, es decir, iniciar una aplicación maestra para gestionar varios trabajos
  3. Este modo se divide en dos pasos: yarn-session.sh (desarrollo de recursos) + flink run (enviar tarea)
  4. ./yarn-session.sh -n 4 -jm 1024 -tm 5120 -s 5 -nm yarn-session-jobs -d

Descripción de parámetros:

  • -n: especifique el número de administrador de tareas, especifique el número de administrador de tareas
  • -jm: la cantidad de memoria ocupada por jobmanager, en MB
  • -tm: especifica la memoria ocupada por cada administrador de tareas, en MB
  • -s: especifica la cantidad de núcleos de CPU que puede usar cada administrador de tareas
  • -nm: especifica el nombre de la aplicación
  • -d: comienza en segundo plano, después de que se inicia la sesión, el proceso se cierra

Descripción del proceso de inicio:

  1. Después de iniciar la sesión, yarn primero asignará un contenedor para iniciar la aplicación maestra y el administrador de trabajos. La memoria ocupada es el tamaño de memoria especificado por -jm, y la CPU es de 1 núcleo.
  2. Antes de comenzar el trabajo, jobmanager no iniciará taskmanager (jobmanager asignará dinámicamente el taskmanager de acuerdo con el grado de paralelismo del trabajo, es decir, los espacios ocupados)
  3. Enviar tarea al maestro de aplicaciones
  4. ./flink run -p 3 -yid application_id -d -c com.xxx ~/jar/xxx-1.0-SNAPSHOT.jarSe utiliza para iniciar un trabajo en la aplicación maestra especificada

Nota: El parámetro de trabajo debe escribirse antes de -c, de lo contrario, el parámetro especificado no funcionará

Descripción de parámetros:

  • -p: especifique el grado de paralelismo de la tarea. Si especifica el grado de paralelismo en el código del programa, el parámetro de grado de paralelismo aquí no tiene ningún efecto
  • -yid: especifica a qué ID de aplicación se envía la tarea, el valor predeterminado es la última aplicación enviada a este nodo
  • -c: entrada principal del trabajo + ruta del tarro

Flink ejecutar (Clúster por trabajo)

Inicie un solo trabajo y envíelo al grupo de hilos, es decir, un solo trabajo y una sola sesión, para lograr un aislamiento completo de los recursos.
El comando para iniciar el trabajo es diferente al de yarn-session. Al especificar -m yarn-cluster, los parámetros se han comparado con -y session.

./flink run \
-m yarn-cluster \
-yn 2 \
-yjm 1024  \
-ytm 3076 \ 
-p 2 \
-ys 3 \
-yD name=hadoop \
-ynm RTC_KB_FLINK_TEST \
-yqu rt_constant \
-c com.kb.rt.Test02 ~/jar/kb-1.0-SNAPSHOT.jar   

Descripción de parámetros:

  • -m: yarn-cluster, que significa iniciar una sola sesión y enviar un solo trabajo
  • -yn: número de administrador de tareas
  • -yjm: uso de memoria de jobmanager
  • -ytm: uso de memoria de cada administrador de tareas
  • -ys: la cantidad de núcleos de CPU que puede usar cada administrador de tareas
  • -ynm: nombre de la aplicación
  • -yqu: especifica el nombre de la cola de trabajos
  • -c: programa entrada principal + ruta de jarra
  • -p: especifica el grado de paralelismo de la tarea
  • -yD: configuración de parámetros dinámicos

Proceso de envío de tareas

Inserte la descripción de la imagen aquí

  1. flink-client envía la tarea a yarn y carga todos los frascos y configuraciones dependientes a hdfs
  2. Para solicitar recursos de ResourceManager, ResourceManager contiene principalmente dos partes: ApplicationManager y resourceScheduler
  3. ApplicationManager inicia ApplicationMaster y ResourceScheduler asigna los contenedores necesarios para ejecutar ApplicationMaster.
  4. Inicie JobManager de Flink en ApplicationMaster y solicite recursos de ResourceManager a través de RPC de forma de sondeo
  5. Después de que ResourceManager reciba la solicitud, asignará el contenedor correspondiente para iniciar TaskManager en el futuro y descargar el jar y la configuración correspondientes de hdfs.
  6. ApplicationMater requiere el contenedor correspondiente para iniciar la tarea.
  7. Se inician el JobManager y el TaskManager correspondientes.

Gestión de recursos de Flink

cadenas de operador

En todo el proceso de procesamiento del flujo de datos, hay muchos operadores, que también pueden entenderse como operadores. Existe una cierta relación entre los operadores adyacentes. Conectar a los operadores adyacentes para formar una cadena es la clave para la computación distribuida eficiente de flink. entre hilos y la serialización y deserialización de mensajes.

Inserte la descripción de la imagen aquí

Flujos uno a uno: entre la fuente y el mapa, no hay cambio de partición ni intercambio de datos entre particiones.
Redistribución de flujos: entre map y keyby / window y entre keyby / window y sumidero, hay un cambio en el intercambio de datos entre particiones o el número de particiones.
Inserte la descripción de la imagen aquí

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


espacio

  1. Las ranuras generalmente se refieren a un subconjunto de recursos fijos del administrador de tareas o subprocesos. Si hay 3 ranuras en un administrador de tareas, cada ranura administra 1/3 del alojamiento de la memoria.

  2. Los recursos de memoria no tendrán competencia de memoria debido a la existencia de ranuras, y las ranuras aíslan la memoria, pero tenga en cuenta que la CPU no está aislada

Las ranuras y el paralelismo son diferentes. La ranura es un concepto estático, lo que significa que el administrador de tareas puede tener la capacidad de ejecutarse en paralelo. El paralelismo solo es significativo cuando se ejecuta el programa. Es un concepto dinámico y se refiere al uso real del programa cuando se está ejecutando La capacidad de concurrencia, pero las dos están relacionadas. El paralelismo no puede ser mayor que el número de ranuras.

Espacio para compartir: SlotSharingGroup y CoLocationGroup

De forma predeterminada, Flink permite que las subtareas compartan espacios, siempre que todas provengan del mismo trabajo y tengan subtareas de diferentes tareas con el mismo SlotSharingGroup (el nombre predeterminado es el predeterminado). Entonces significa que las subtareas de tareas con diferentes nombres se comparten en una ranura, de modo que una ranura tiene la oportunidad de contener una canalización completa. Por lo tanto, en el caso predeterminado de compartición de espacios, el número de espacios necesarios para el inicio del trabajo es igual al paralelismo máximo del operador en el trabajo.

Inserte la descripción de la imagen aquí
La figura anterior es un trabajo del modelo fuente-mapa-reducción, que se muestra en la esquina inferior izquierda de la figura, donde el paralelismo de fuente y mapa es 4, y el paralelismo de reducción es 3. Cada círculo representa una subtarea; y el paralelismo máximo del operador en todo el trabajo es 4; si la tarea se envía para ejecución, puede saber que el trabajo requiere 4 espacios; si el trabajo se envía a 2 administradores de tareas, cada administrador de tareas allí son 3 ranuras, como se muestra en el lado derecho de la figura, de las cuales 3 ranuras tienen una tubería con un modelo completo de fuente-mapa-reducción. Sin embargo, el proceso de reproducción aleatoria de datos no se dibuja.

Inserte la descripción de la imagen aquí
La figura anterior contiene el trabajo modelo de source-map, keyBy / window / apply, sink, donde el paralelismo de source-map es 6, el paralelismo de keyBy / window / apply es 6 y el paralelismo de sumidero es 1, luego el trabajo es necesario para el envío Hay 6 ranuras. Después de la asignación, la primera ranura a la izquierda tiene una canalización completa, ejecutando 3 subtareas, y las 5 ranuras restantes ejecutan estas 2 subtareas respectivamente, y finalmente los datos se transmiten al receptor para salida.


Parámetros de ejecución de Flink

参数说明
Action "run" compiles and runs a program.
Syntax: run [OPTIONS] <jar-file> <arguments>

"run" action options:
 -c,--class <classname>                         Class with the program entry
                                                point ("main" method or
                                                "getPlan()" method. Only
                                                needed if the JAR file does
                                                not specify the class in its
                                                manifest.
 -C,--classpath <url>                           Adds a URL to each user code
                                                classloader  on all nodes in
                                                the cluster. The paths must
                                                specify a protocol (e.g.
                                                file://) and be accessible
                                                on all nodes (e.g. by means
                                                of a NFS share). You can use
                                                this option multiple times
                                                for specifying more than one
                                                URL. The protocol must be
                                                supported by the {
    
    @link
                                                java.net.URLClassLoader}.
 -d,--detached                                  If present, runs the job in
                                                detached mode
 -m,--jobmanager <host:port>                    Address of the JobManager
                                                (master) to which to
                                                connect. Use this flag to
                                                connect to a different
                                                JobManager than the one
                                                specified in the
                                                configuration.
 -p,--parallelism <parallelism>                 The parallelism with which
                                                to run the program. Optional
                                                flag to override the default
                                                value specified in the
                                                configuration.
 -q,--sysoutLogging                             If present, suppress logging
                                                output to standard out.
 -s,--fromSavepoint <savepointPath>             Path to a savepoint to reset
                                                the job back to (for example
                                                file:///flink/savepoint-1537
                                                ).
 -z,--zookeeperNamespace <zookeeperNamespace>   Namespace to create the
                                                Zookeeper sub-paths for high
                                                availability mode
Options for yarn-cluster mode:
 -yD <arg>                            Dynamic properties
 -yd,--yarndetached                   Start detached
 -yid,--yarnapplicationId <arg>       Attach to running YARN session
 -yj,--yarnjar <arg>                  Path to Flink jar file
 -yjm,--yarnjobManagerMemory <arg>    Memory for JobManager Container [in
                                      MB]
 -yn,--yarncontainer <arg>            Number of YARN container to allocate
                                      (=Number of Task Managers)
 -ynm,--yarnname <arg>                Set a custom name for the application
                                      on YARN
 -yq,--yarnquery                      Display available YARN resources
                                      (memory, cores)
 -yqu,--yarnqueue <arg>               Specify YARN queue.
 -ys,--yarnslots <arg>                Number of slots per TaskManager
 -yst,--yarnstreaming                 Start Flink in streaming mode
 -yt,--yarnship <arg>                 Ship files in the specified directory
                                      (t for transfer)
 -ytm,--yarntaskManagerMemory <arg>   Memory per TaskManager Container [in
                                      MB]
 -yz,--yarnzookeeperNamespace <arg>   Namespace to create the Zookeeper
                                      sub-paths for high availability mode

-n 10 一共启动10个TaskManager节点

-jm 1024 JobManager的内存大小为1024M
 
-tm 2048 TaskManager的内存大小为2048M
-d 使用detached模式进行部署(部署完成后本地命令行可以退出)
-qu default 部署到YARN的default队列中

Supongo que te gusta

Origin blog.csdn.net/qq_43081842/article/details/112153724
Recomendado
Clasificación