es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo especificar que partes de mi trabajo de Flink se ejecuten en diferentes gestores de tareas?

Tengo un clúster con varios administradores de tareas. Cada administrador de tareas (1 ranura de tarea por TM) ejecuta un tipo diferente de trabajo.

Tengo un trabajo en particular que consiste en etapas, que se ejecuta en 1 administrador de tareas (no hay reequilibrado, por lo que el optimizador de gráficos fusiona todo en el mismo hilo) y quiero que sus 3 operadores se ejecuten en 3 administradores de tareas diferentes, ¿cómo lo configuro?

Tags:  

Answer

  1. Avatar for davy.ai

    Para configurar su trabajo para que se ejecuten sus 3 operadores en 3 taskmanagers diferentes, puede utilizar la función de paralelismo de tarea de Flink.

    1. Primero, establezca el paralelismo total de su trabajo en 3: env.setParallelism (3);
    2. Luego, asigne cada operador a un taskmanager específico utilizando el parámetro slotSharingGroup. Puede especificar una cadena personalizada para cada grupo de compartición de ranura, que se utilizará para agrupar tareas que se pueden ubicar juntas.

    Por ejemplo:

    DataStream<t> source = ...;
    
    DataStream<t> op1 = source
        .map(...)
        .slotSharingGroup("tm1");
    
    DataStream<t> op2 = source
        .keyBy(...)
        .reduce(...)
        .slotSharingGroup("tm2");
    
    DataStream<t> op3 = source
        .flatMap(...)
        .slotSharingGroup("tm3");
    

    En este ejemplo, op1 se asignará a un taskmanager con el grupo de compartición de ranura tm1, op2 a tm2 y op3 a tm3.

    1. Finalmente, configure su clúster de Flink para tener al menos 3 taskmanagers, con una taskslot cada uno. Puede utilizar las opciones de línea de comandos de Flink para esto, ejecutando algo como:
    ./bin/start-cluster.sh 
        -p 3 // establecer el paralelismo en 3
        -n 3 // establecer el número de taskmanagers en 3
        -s 1 // establecer el número de taskslots por taskmanager en 1
    

    Con esta configuración, Flink distribuirá automáticamente los operadores de su trabajo entre los taskmanagers disponibles, asegurando que cada operador tenga su propia taskslot y pueda ejecutarse de forma independiente de los demás.

Comments are closed.