Todos los productos
Search
Centro de documentos

E-MapReduce:Partition nodes using Node Labels

Última actualización: Sep 04, 2026

Los Node Labels de YARN permiten particionar nodos para aislar físicamente distintos tipos de trabajos durante la programación. Puede crear Node Labels según sus requisitos empresariales y los tipos de nodo.

Contexto

En YARN, las colas y los Node Labels son dos estrategias clave para la gestión y programación de recursos, cada una con un propósito distinto.

  • Una cola es un método lógico para particionar recursos que permite asignar los recursos de cómputo de un clúster a diferentes grupos de usuarios o aplicaciones según proporciones predefinidas. Esto garantiza que los distintos equipos o cargas de trabajo reciban una parte equitativa de los recursos, incluso en un entorno de clúster compartido.

  • Los Node Labels permiten etiquetar nodos específicos en un clúster y tomar decisiones de asignación de recursos más granulares basadas en estas etiquetas. Esto resulta especialmente importante para aplicaciones que requieren características de hardware específicas, como GPU o nodos con alta capacidad de memoria.

Puede combinar colas y Node Labels para lograr una gestión de recursos y una programación de trabajos más flexibles.

Las estrategias de particionamiento comunes incluyen la categorización por tipo de carga de trabajo (como trabajos de sincronización de datos, por lotes o en tiempo real) o por tipo de instancia (como nodos optimizados para CPU, optimizados para memoria o acelerados por GPU).

Requisitos previos

  • Ha creado un clúster con el servicio YARN habilitado. Para obtener más información, consulte Create a cluster.

  • El programador de YARN del clúster debe ser Capacity Scheduler. Actualmente, solo Capacity Scheduler admite la programación basada en particiones con Node Labels.

Ejemplo

Escenario

Una organización divide las colas de su clúster en una cola de almacén de datos (warehouse) y una cola de análisis de datos (analysis) según las necesidades de recursos de cada equipo. También particiona los recursos del clúster en dos particiones: batch y streaming. El equipo de almacén de datos utilizará el 60 % de los recursos de batch y el 70 % de los recursos de streaming. El equipo de análisis de datos utilizará el 30 % de los recursos de batch y el 20 % de los recursos de streaming. Para los recursos sin etiqueta, se asigna el 60 % a la cola warehouse y el 30 % a la cola analysis, mientras que el 10 % restante se reserva para otras necesidades. El siguiente diagrama ilustra este particionamiento.

image

Este ejemplo muestra cómo combinar colas y etiquetas para aislar físicamente los trabajos sin conexión de otras cargas de trabajo. Los siguientes pasos utilizan un clúster Data Lake EMR-5.16.0. El procedimiento es similar para otros tipos de clúster.

Paso 1: Editar colas de recursos

  1. Inicie sesión en la consola de EMR on ECS. En la columna Actions de su clúster objetivo, haga clic en Services. A continuación, haga clic en YARN.

  2. En la página del servicio YARN, haga clic en la pestaña Edit Resource Queue y luego en Manage Queues.

  3. En la página Manage Child Queues, agregue la cola warehouse y la cola analysis.

    • La Queue Capacity de la cola warehouse es del 60 %, y la Queue Capacity de la cola analysis es del 30 %. El 10 % restante se asigna a la cola predeterminada. El Status de todas las colas está establecido en Enabled.

    • La página ahora se muestra de la siguiente manera.

      La página Edit Resource Queue muestra que el programador actual es capacity-scheduler. Bajo la cola root, hay tres subcolas: analysis (Queue Capacity 30 %, Max. Capacity 100 %), warehouse (Queue Capacity 60 %, Max. Capacity 100 %) y default (Queue Capacity 10 %, Max. Capacity 100 %). El estado de las tres colas es Running. Una etiqueta Not Effective Yet aparece junto al servicio YARN en la parte superior de la página, lo que indica que los cambios de configuración aún no se han desplegado.

  4. Haga clic en Not Effective Yet. En el cuadro de diálogo Configurations to Take Effect, haga clic en refresh_queues para aplicar la configuración de la cola.

    En la tabla Custom Effective Configuration, busque la fila correspondiente al componente ResourceManager y al archivo de configuración capacity-scheduler.xml.

Paso 2: Crear particiones de nodos

  1. Haga clic en la pestaña Partitions y luego en Add Partition para agregar la partición streaming.

    • En el cuadro de diálogo Add Partition, especifique el Partition name, seleccione un Partition Type y seleccione los Associated Node Groups.

      Parámetro

      Descripción

      Partition Name

      En este ejemplo, el nombre de la partición es streaming.

      Partition Type

      En este ejemplo, seleccione exclusive. Esto garantiza que solo los contenedores que soliciten una partición coincidente se programen en estos nodos.

      Associated Node Groups

      En este ejemplo, la partición streaming está asociada con emr-task-3. Este grupo de nodos consiste en instancias optimizadas para memoria, adecuadas para trabajos en tiempo real que almacenan grandes cantidades de datos intermedios con baja latencia. Asigne grupos de nodos según las características de su negocio y los tipos de instancia de nodo.

  2. Repita los pasos para agregar la partición batch. El resultado final es el siguiente.

    Después de crear las particiones, la página Partitions enumera tres particiones: DEFAULT_PARTITION (Accessible Queues: all, Node Group: emr-core, Partition Type: Exclusive), streaming (Accessible Queues: root y root.default, Node Group: emr-task-3, Partition Type: Exclusive) y batch (Accessible Queues: root y root.default, Node Groups: emr-task-1 y emr-task-2, Partition Type: Exclusive). Un indicador de estado naranja Not Effective Yet aparece en la barra de navegación superior. Debe hacer clic en Deploy and Take Effect para aplicar la configuración.

  3. Después de agregar las particiones, haga clic en Not Effective Yet. En el cuadro de diálogo Configurations to Take Effect, haga clic en refresh_labels para completar la configuración de la partición de nodos.

    En la sección Custom Effective Configuration, el archivo de configuración para el componente ResourceManager es node-labels.xml.

  4. Una vez que la configuración surta efecto, podrá consultar los Total Resources de cada partición.

    Por ejemplo, los recursos totales de la partición streaming se muestran como <memory:4096, vCores:8>, y los recursos totales de la partición batch se muestran como <memory:8192, vCores:16>.

Paso 3: Habilitar la gestión de asociación entre particiones y colas

  1. En la página Edit Resource Queue, seleccione las particiones batch y streaming en secuencia, y luego haga clic en Enable Partition-queue Association Management.

  2. En el cuadro de diálogo Enable Partition-queue Association Management, configure la Queue Capacity para cada cola dentro de las particiones.

    • Para la partición batch, establezca la Queue Capacity de analysis en 30 %, la Queue Capacity de warehouse en 60 %, y la Queue Capacity de default en 10 %.

    • Para la partición streaming, establezca la Queue Capacity de analysis en 20 %, la Queue Capacity de warehouse en 70 %, y la Queue Capacity de default en 10 %.

    Nota

    En este ejemplo, todas las colas tienen permiso para ejecutarse en todas las particiones. En una configuración real, puede establecer la capacidad de una cola específica en una partición en 0 para garantizar que solo los trabajos de las colas designadas se ejecuten en dicha partición.

  3. Después de configurar la asociación entre particiones y colas, haga clic en Not Effective Yet. En el cuadro de diálogo Configurations to Take Effect, haga clic en refresh_queues para aplicar los cambios.

  4. En la interfaz web de YARN, compruebe que las particiones de nodos estén activas.

    • Página Node Labels

      La tabla en esta página incluye las columnas Label Name, Label Type, Num Of Active NMs y Total Resources. Muestra tres registros: <DEFAULT_PARTITION> (Exclusive Partition, 2 active NMs, resources: memory:8192, vCores:16), batch (Exclusive Partition, 2 active NMs, resources: memory:8192, vCores:16) y streaming (Exclusive Partition, 1 active NM, resources: memory:4096, vCores:8).

    • Página Scheduler

      En la sección Application Queues de la página Scheduler, hay tres particiones configuradas: DEFAULT_PARTITION (<memory:8192, vCores:16>), Partition: batch (<memory:8192, vCores:16>) y Partition: streaming (<memory:4096, vCores:8>). Tanto la partición de etiqueta de nodo batch como la streaming contienen la cola root con las subcolas default, warehouse y analysis. El tipo de Scheduler es Capacity Scheduler, con una asignación mínima de <memory:32, vCores:1> y una asignación máxima de <memory:4096, vCores:8>.

Paso 4: Enviar un trabajo a una partición

Después de configurar las colas y etiquetas del clúster, puede enviar trabajos para que se ejecuten en colas y nodos específicos.

  1. Inicie sesión en el nodo maestro del clúster y vaya al directorio de instalación de Spark, por ejemplo, /opt/apps/SPARK3/spark-3.3.1-hadoop3.2-1.1.1.

    cd /opt/apps/SPARK3/spark-3.3.1-hadoop3.2-1.1.1
  2. En un entorno de producción, debe cargar el archivo JAR de su trabajo para enviar un trabajo de Spark. Este ejemplo utiliza spark-submit para enviar un trabajo.

    ./bin/spark-submit --class org.apache.spark.examples.SparkLR --master yarn --deploy-mode cluster --driver-memory 1g --executor-memory 2g --conf spark.yarn.am.nodeLabelExpression=batch --conf spark.yarn.executor.nodeLabelExpression=batch --queue=warehouse examples/jars/spark-examples_2.12-3.3.1.jar

    Parámetro

    Descripción

    class

    La clase principal de la aplicación: org.apache.spark.examples.SparkLR.

    master

    El entorno de ejecución para el trabajo: yarn.

    deploy-mode

    La ubicación donde se lanza el driver: cluster.

    driver-memory

    La cantidad de memoria para el driver: 1g.

    executor-memory

    La cantidad de memoria por ejecutor: 2g.

    spark.yarn.am.nodeLabelExpression

    La expresión de etiqueta para los nodos donde puede ejecutarse ApplicationMaster: batch.

    spark.yarn.executor.nodeLabelExpression

    La expresión de etiqueta para los nodos donde pueden ejecutarse los ejecutores: batch.

    queue

    La cola específica de YARN a la que se envía el trabajo: warehouse.

    Nota

    Si solo especifica una cola y no especifica una partición al enviar un trabajo, este se envía a la partición predeterminada de la cola. Puede cambiar la partición predeterminada de una cola en la página Edit Resource Queue haciendo clic en Edit para esa cola.

  3. En la interfaz web del clúster YARN, puede comprobar que el trabajo SparkLR enviado a la cola warehouse se está ejecutando en la partición batch.

Las colas de YARN y las particiones de nodos proporcionan conjuntamente aislamiento lógico y físico de recursos, lo que evita interferencias entre trabajos y garantiza la estabilidad de las aplicaciones críticas.

Preguntas frecuentes

  • Cuando envío un trabajo de Spark mediante spark-submit, ¿por qué el trabajo no se ejecuta en la partición especificada?

    • Compruebe si el parámetro spark.yarn.executor.nodeLabelExpression está incluido en su comando de envío.

    • Confirme que su configuración en las páginas Partitions y Edit Resource Queue esté activa.

  • Cuando envío un trabajo de Spark mediante spark-submit, ¿por qué el estado del trabajo permanece como ACCEPTED?

    1. Confirme que la cola a la que se envió el trabajo tenga recursos disponibles. De lo contrario, espere a que otros trabajos liberen recursos antes de volver a enviar el trabajo.

    2. Si la cola tiene recursos disponibles, haga clic en el ID del trabajo en la interfaz web de YARN para ver los detalles del trabajo y revise la descripción de Diagnostics. Es posible que vea un mensaje: "Queue's AM resource limit exceeded". Esto indica que, aunque la cola tiene recursos, los recursos del Application Master (AM) son insuficientes. Los recursos de una cola se asignan tanto al AM como a los ejecutores. Los recursos del AM se utilizan para lanzar la aplicación principal, mientras que los recursos de los ejecutores se usan para el procesamiento de tareas. Por lo tanto, debe ajustar la proporción de asignación de recursos de la cola y aumentar la proporción de recursos del AM para garantizar que los trabajos de Spark se puedan enviar correctamente.

      Diagnostics:   [Wed Dec 25 16:24:10 +0800 2024] Application is added to the scheduler and is not yet activated. Queue's AM resource limit exceeded. Details : AM
                     Partition = &lt;DEFAULT_PARTITION&gt;; AM Resource Request = &lt;memory:2048, vCores:1&gt;; Queue Resource Limit for AM = &lt;memory:2048, vCores:4&gt;; User
                     AM Resource Limit of the queue = &lt;memory:224, vCores:1&gt;; Queue AM Resource Usage = &lt;memory:896, vCores:1&gt;;
    3. Puede ajustar la proporción de recursos del AM en la página de configuración del servicio YARN. Busque el archivo capacity_scheduler.xml y modifique el valor del elemento de configuración yarn.scheduler.capacity.maximum-am-resource-percent. Por ejemplo, cámbielo de 0.25 a 0.5.

    Nota

    Ajuste el porcentaje predeterminado de recursos del AM definido por yarn.scheduler.capacity.maximum-am-resource-percent según su caso de uso específico. Por ejemplo, si su clúster procesa frecuentemente una gran cantidad de trabajos con volúmenes de datos pequeños, puede aumentar el porcentaje de recursos del AM.

Documentación relacionada

  • Para obtener más información sobre los principios de programación de YARN, consulte YARN schedulers.

  • Para obtener más información sobre los principios de las particiones de nodos de YARN, consulte Use Node Labels.