Todos los productos
Search
Centro de documentos

E-MapReduce:YARN schedulers

Última actualización: Sep 04, 2026

Cuando varios equipos comparten un clúster de Hadoop, la contención de recursos provoca un rendimiento impredecible en los trabajos y dificulta la asignación de costos. Los programadores de YARN resuelven este problema al aplicar garantías de recursos por inquilino, implementar directivas de equidad multiinquilino y optimizar la utilización de los nodos para evitar puntos críticos.

Se recomienda Capacity Scheduler para YARN en E-MapReduce (EMR). Este documento explica el funcionamiento de Capacity Scheduler y cómo configurarlo. Para otros tipos de programadores, consulte la documentación de Apache Hadoop YARN.

Elegir un programador

Programador

Predeterminado en

Compatibilidad multiinquilino

Etiquetas de nodo / atributos / restricciones de ubicación

Cuándo utilizarlo

FIFO Scheduler

—

No

No

Escenarios sencillos con un solo inquilino. Rara vez se usa en producción.

Fair Scheduler

CDH (Cloudera Distributed Hadoop)

Sí

No

Clústeres heredados de CDH. No se recomienda para despliegues nuevos.

Capacity Scheduler

Apache Hadoop, HDP, CDP

Sí

Sí

Clústeres de producción multiinquilino que requieren aislamiento de rendimiento y recursos. Recomendado para YARN en EMR.

Capacity Scheduler ofrece el conjunto completo de funciones de gestión multiinquilino y programación de recursos, incluidas la programación global, las etiquetas de nodo, los atributos de nodo y las restricciones de ubicación. El resto de este documento describe Capacity Scheduler en detalle.

Funcionamiento de Capacity Scheduler

Modos de programación

El MainScheduler de Capacity Scheduler admite tres modos de activación:

Modo

Funcionamiento

Recomendado para

Basado en latidos de nodo

El MainScheduler se activa cuando un nodo envía un latido. La programación es local al nodo y depende de los intervalos de latido, lo que puede reducir la eficiencia si muchos nodos carecen de recursos suficientes.

Clústeres con requisitos bajos de rendimiento y funciones de programación.

Programación asíncrona

Un hilo asíncrono selecciona aleatoriamente un nodo de la lista para programar tareas. Esto mejora el throughput sin necesidad de mantener un estado global.

Clústeres con altos requisitos de rendimiento pero pocos requisitos de funciones.

Programación global

Un hilo global selecciona aplicaciones según la equidad multiinquilino y la prioridad; luego elige nodos según el tamaño de los recursos, las restricciones de ubicación y la distribución de recursos en el clúster. Esto genera decisiones de programación óptimas.

Clústeres con altos requisitos tanto de rendimiento como de funciones de programación.

La programación global requiere todas las configuraciones de programación asíncrona además de sus propios ajustes. Consulte Programación global para obtener más detalles.

Arquitectura (programación global)

La siguiente figura muestra la arquitectura de la programación global basada en YARN 3.2 o versiones posteriores.2

MainScheduler se ejecuta como un framework multihilo asíncrono:

  • Hilos de asignación: identifican la solicitud de recursos de mayor prioridad, seleccionan nodos candidatos según el tamaño de los recursos y las restricciones de ubicación, generan propuestas de asignación y las colocan en una cola intermedia.

  • Hilo de envío: consume las propuestas de asignación, vuelve a comprobar las restricciones de ubicación y los requisitos de la aplicación y del nodo, y luego confirma o descarta cada propuesta y actualiza el estado del programador.

ReScheduler se ejecuta periódicamente como un framework de monitoreo dinámico de recursos. Implementa directivas para la apropiación entre colas, la apropiación dentro de una misma cola y la apropiación de recursos reservados.

Node Sorting Manager y Placement Constraint Manager son complementos de programación global para MainScheduler. Se encargan del balanceo de carga y de la gestión compleja de restricciones de ubicación.

Proceso de asignación de contenedores

La siguiente figura ilustra el proceso de programación global de Capacity Scheduler.3

MainScheduler asigna contenedores en seis pasos:

  1. Seleccionar particiones (etiquetas de nodo). Un clúster puede tener una o más particiones. MainScheduler asigna contenedores a las particiones de forma rotativa.

  2. Seleccionar colas hoja. Al recorrer la jerarquía desde la cola raíz hacia abajo, las colas secundarias de cada nivel se visitan en orden ascendente según su porcentaje de recursos garantizados. Las colas con menor utilización (en verde en la figura anterior) reciben recursos antes que aquellas con mayor utilización (en rojo).

  3. Seleccionar aplicaciones. Dentro de una cola, MainScheduler selecciona las aplicaciones según la directiva de ordenamiento de la cola:

    • Directiva Fair: orden ascendente de recursos de memoria asignados.

    • Directiva FIFO: orden descendente de prioridad y, después, orden ascendente de ID de aplicación.

  4. Seleccionar solicitudes. MainScheduler elige las solicitudes dentro de la aplicación seleccionada según su prioridad.

  5. Seleccionar nodos candidatos ordenados. MainScheduler busca en todos los nodos ordenados aquellos candidatos que cumplen con los requisitos de recursos y las restricciones de ubicación de la solicitud.

  6. Asignar un contenedor. Para cada nodo candidato, MainScheduler verifica los recursos asignados, en uso y sin confirmar de la cola y del nodo. Si la verificación es correcta, genera una propuesta de asignación y la coloca en la cola de propuestas.

Después de la asignación, el hilo de envío valida cada propuesta frente a los requisitos de la aplicación, del nodo y de las restricciones de ubicación. Las propuestas que no superan la validación se descartan; las aprobadas entran en vigor y actualizan el conteo de recursos de la aplicación y del nodo.

Apropiación de recursos

ReScheduler monitorea los recursos del clúster y desencadena la apropiación cuando los recursos disponibles totales caen por debajo de un umbral y ciertas aplicaciones carecen de recursos suficientes.

Tipo de apropiación

Condición de activación

Apropiación entre colas

Una cola utiliza por completo sus recursos garantizados, pero otra cola con derecho a esos recursos no puede obtenerlos porque el clúster no tiene capacidad libre. Los recursos dentro de la capacidad de la cola están garantizados; los recursos por encima de la capacidad pero por debajo de la capacidad máxima se comparten.

Apropiación dentro de la cola

Una aplicación de alta prioridad en una cola necesita recursos, pero la asignación total de la cola está agotada. ReScheduler reequilibra los recursos según la directiva FIFO o fair.

Apropiación de recursos reservados

Una tarea que reservó recursos cumple una condición de liberación, como un tiempo de espera agotado. La tarea y sus recursos reservados se liberan.

Funciones clave

  • Gestión de colas multinivel: La cuota de recursos de una cola principal limita el uso total de todas sus colas secundarias. Ninguna cola secundaria puede superar la cuota de la principal. Esto permite un aislamiento multiinquilino controlable para estructuras organizacionales complejas.

  • Cuota de recursos: Establezca la capacidad garantizada y la capacidad máxima por cola, limite el número de aplicaciones simultáneas, restrinja la proporción de recursos del ApplicationMaster (AM) y controle las proporciones de recursos por usuario.

  • Uso compartido elástico de recursos: Cuando el clúster y la cola principal tienen recursos libres, las colas secundarias pueden tomar prestados recursos garantizados no utilizados de colas hermanas. Capacidad elástica = capacidad máxima de la cola − capacidad de la cola.

  • Control de acceso basado en listas de control de acceso (ACL): Asigne permisos de envío y gestión por cola a usuarios o grupos específicos. Un solo usuario puede gestionar varias colas, o varios usuarios pueden compartir el acceso de envío a la misma cola.

  • Programación de colas entre inquilinos: En el mismo nivel de colas, estas se programan en orden ascendente según su porcentaje de recursos garantizados, de modo que las colas con menores asignaciones se atienden primero. Cuando se configuran prioridades, las colas se dividen en dos grupos: las que están en o por debajo de su capacidad y las que la superan; dentro de cada grupo, se atienden primero las colas en o por debajo de su capacidad.

  • Programación de aplicaciones dentro del inquilino: Dentro de una cola, las aplicaciones se programan según la directiva de ordenamiento de la cola. Con la directiva FIFO: prioridad descendente y luego hora de envío ascendente. Con la directiva fair: porcentaje ascendente de recursos utilizados y luego hora de envío ascendente.

  • Apropiación de recursos: Mantiene equilibrado el uso de recursos de colas y aplicaciones conforme cambian los recursos del clúster. Consulte Apropiación de recursos para conocer los tres tipos de apropiación.

Configurar Capacity Scheduler

Configuraciones globales

Configure los siguientes parámetros en yarn-site.xml y capacity-scheduler.xml.

Archivo de configuraciónParámetro de configuraciónValor recomendadoDescripción
yarn-site.xmlyarn.resourcemanager.scheduler.classDejar en blancoClase del programador. Valor predeterminado: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler.
capacity-scheduler.xmlyarn.scheduler.capacity.maximum-applicationsDejar en blancoNúmero máximo de aplicaciones simultáneas en el clúster. Valor predeterminado: 10000.
yarn.scheduler.capacity.global-queue-max-applicationDejar en blancoNúmero máximo de aplicaciones simultáneas por cola. Si no se establece, el límite por cola se calcula como: Capacidad de la cola / Recursos del clúster × maximum-applications. Configure este valor solo para colas con requisitos especiales, como una cola de baja capacidad que necesita ejecutar muchas aplicaciones.
yarn.scheduler.capacity.maximum-am-resource-percent0.25Porcentaje máximo de recursos de la cola que pueden usar los contenedores del ApplicationMaster (AM), con un tope de: este valor × capacidad máxima de la cola. Valor predeterminado: 0.1. Aumente este valor si una cola ejecuta muchas aplicaciones pequeñas con una alta proporción de contenedores AM.
yarn.scheduler.capacity.resource-calculatororg.apache.hadoop.yarn.util.resource.DominantResourceCalculatorCalculadora de recursos para colas, nodos y aplicaciones. La opción predeterminada (DefaultResourceCalculator) solo considera la memoria. DominantResourceCalculator considera todos los tipos de recursos configurados (memoria, CPU y otros) y usa el recurso más consumido como recurso principal.
Nota

Los cambios en este parámetro requieren reiniciar ResourceManager (o realizar un cambio primario/secundario si la alta disponibilidad (HA) está habilitada). Una operación de actualización no es suficiente.

yarn.scheduler.capacity.node-locality-delay-1Número de ciclos de programación que se omiten antes de relajar la localidad del nodo. Valor predeterminado: 40. Establézcalo en -1 para deshabilitar el retraso de localidad y mejorar el rendimiento de la programación. Con redes y almacenamiento modernos, la programación local rara vez es el cuello de botella.

Configuraciones de latidos de nodo

Archivo de configuración

Parámetro de configuración

Valor recomendado

Descripción

capacity-scheduler.xml

yarn.scheduler.capacity.per-node-heartbeat.multiple-assignments-enabled

false

Indica si se asignan varios contenedores por latido. Valor predeterminado: true. Habilitar esta opción puede afectar el balanceo de carga y provocar puntos críticos.

yarn.scheduler.capacity.per-node-heartbeat.maximum-container-assignments

Dejar en blanco

Número máximo de contenedores asignables por latido. Valor predeterminado: 100. Solo aplica cuando multiple-assignments-enabled es true.

yarn.scheduler.capacity.per-node-heartbeat.maximum-offswitch-assignments

Dejar en blanco

Número máximo de contenedores fuera del switch asignables por latido. Solo aplica cuando multiple-assignments-enabled es true.

Programación asíncrona

Archivo de configuración

Parámetro de configuración

Valor recomendado

Descripción

capacity-scheduler.xml

yarn.scheduler.capacity.schedule-asynchronously.enable

true

Indica si se habilita la programación asíncrona. Valor predeterminado: false. Habilite esta opción para mejorar el rendimiento de la programación.

yarn.scheduler.capacity.schedule-asynchronously.maximum-threads

1 o dejar en blanco

Número máximo de hilos para la programación asíncrona. Valor predeterminado: 1. Varios hilos pueden generar propuestas duplicadas; un solo hilo es suficiente en la mayoría de los casos.

yarn.scheduler.capacity.schedule-asynchronously.maximum-pending-backlogs

Dejar en blanco

Número máximo de propuestas de asignación pendientes en la cola. Valor predeterminado: 100. Aumente este valor para clústeres grandes.

Programación global

La programación global requiere todas las configuraciones de programación asíncrona listadas en la tabla anterior.
Archivo de configuraciónParámetro de configuraciónValor recomendadoDescripción
capacity-scheduler.xmlyarn.scheduler.capacity.multi-node-placement-enabledtrueIndica si se habilita la programación global. Valor predeterminado: false. Habilítela en clústeres con altos requisitos tanto de rendimiento como de funciones de programación.
yarn.scheduler.capacity.multi-node-sorting.policydefaultNombre de la directiva de programación global activa.
yarn.scheduler.capacity.multi-node-sorting.policy.namesdefaultLista separada por comas de nombres de directivas de programación global.
yarn.scheduler.capacity.multi-node-sorting.policy.default.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.placement.ResourceUsageMultiNodeLookupPolicyClase de implementación de la directiva predeterminada. Ordena los nodos en orden ascendente según los recursos absolutos asignados.
yarn.scheduler.capacity.multi-node-sorting.policy.default.sorting-interval.ms0 (clústeres pequeños) / 1000 (clústeres con más de 1,000 nodos)Intervalo de actualización de caché para el ordenamiento de nodos. Valor predeterminado: 1000 ms. Establézcalo en 0 para ordenamiento síncrono (sin caché). Para clústeres grandes, establézcalo en 1000 para habilitar la caché de nodos y mejorar el rendimiento.
Nota

Con la caché de nodos habilitada, los contenedores pueden concentrarse en los nodos mejor clasificados. Pruebe el impacto antes de habilitar esta opción en producción.

Configuraciones de particiones de nodo

Para las configuraciones de particiones de nodo (etiquetas de nodo), consulte Node labels.

Configuraciones de colas

Configuraciones básicas de colas

Las configuraciones básicas de colas definen la jerarquía de colas, la capacidad garantizada y la capacidad máxima. El siguiente ejemplo muestra una cola raíz con cuatro colas secundarias compartidas entre los departamentos de una organización.

image

Ejemplo de estructura de colas:

Cola

Recursos garantizados

Recursos máximos

Colas secundarias

root

100%

100%

dev, test, support, default

root.dev

50%

100%

training, services

root.dev.training

40% de dev

100% de dev

—

root.dev.services

60% de dev

100% de dev

—

root.test

30%

50%

—

root.support

10%

30%

—

root.default

10%

100%

—

El siguiente ejemplo de capacity-scheduler.xml configura esta estructura. Cópielo y ajústelo para que coincida con la disposición de colas de su organización.

<configuration>
  <!-- Root-level child queues -->
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>dev,test,support,default</value>
  </property>

  <!-- dev queue: 50% guaranteed, 100% max -->
  <property>
    <name>yarn.scheduler.capacity.root.dev.capacity</name>
    <value>50</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
    <value>100</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.queues</name>
    <value>training,services</value>
  </property>

  <!-- dev.training: 40% of dev guaranteed, 100% of dev max -->
  <property>
    <name>yarn.scheduler.capacity.root.dev.training.capacity</name>
    <value>40</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.training.maximum-capacity</name>
    <value>100</value>
  </property>

  <!-- dev.services: 60% of dev guaranteed, 100% of dev max -->
  <property>
    <name>yarn.scheduler.capacity.root.dev.services.capacity</name>
    <value>60</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.dev.services.maximum-capacity</name>
    <value>100</value>
  </property>

  <!-- test queue: 30% guaranteed, 50% max -->
  <property>
    <name>yarn.scheduler.capacity.root.test.capacity</name>
    <value>30</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.test.maximum-capacity</name>
    <value>50</value>
  </property>

  <!-- support queue: 10% guaranteed, 30% max -->
  <property>
    <name>yarn.scheduler.capacity.root.support.capacity</name>
    <value>10</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.support.maximum-capacity</name>
    <value>30</value>
  </property>

  <!-- default queue: 10% guaranteed, 100% max -->
  <property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>10</value>
  </property>
  <property>
    <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
    <value>100</value>
  </property>
</configuration>

En la página Application Queues de YARN ResourceManager, puede verificar que la configuración de colas haya surtido efecto. El árbol de jerarquía de colas muestra las siguientes colas bajo root: default, test, support, dev, y bajo dev las subcolas training y services. Expanda la cola dev.services para ver los detalles de su estado de ejecución:

  • Queue State: RUNNING

  • Effective Capacity: memory:7864, vCores:4 (60.0%)

  • Effective Max Capacity: memory:26214, vCores:16 (100.0%)

  • Absolute Configured Capacity: 30.0%

  • Max Applications: 3000

  • Ordering Policy: FifoOrderingPolicy

  • Preemption: disabled

La siguiente tabla describe los parámetros de capacity-scheduler.xml para esta estructura.

Archivo de configuración

Parámetro de configuración

Valor de ejemplo

Descripción

capacity-scheduler.xml

yarn.scheduler.capacity.root.queues

dev,test,support,default

Colas secundarias de la cola raíz. Separe varias colas con comas.

yarn.scheduler.capacity.root.dev.capacity

50

Porcentaje de recursos garantizados para la cola dev respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.dev.maximum-capacity

100

Porcentaje máximo de recursos para la cola dev respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.dev.queues

training,services

Colas secundarias de la cola dev.

yarn.scheduler.capacity.root.dev.training.capacity

40

Porcentaje de recursos garantizados para training respecto a los recursos garantizados de dev.

yarn.scheduler.capacity.root.dev.training.maximum-capacity

100

Porcentaje máximo de recursos para training respecto a los recursos máximos de dev.

yarn.scheduler.capacity.root.dev.services.capacity

60

Porcentaje de recursos garantizados para services respecto a los recursos garantizados de dev.

yarn.scheduler.capacity.root.dev.services.maximum-capacity

100

Porcentaje máximo de recursos para services respecto a los recursos máximos de dev.

yarn.scheduler.capacity.root.test.capacity

30

Porcentaje de recursos garantizados para test respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.test.maximum-capacity

50

Porcentaje máximo de recursos para test respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.support.capacity

10

Porcentaje de recursos garantizados para support respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.support.maximum-capacity

30

Porcentaje máximo de recursos para support respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.default.capacity

10

Porcentaje de recursos garantizados para default respecto al total de recursos del clúster.

yarn.scheduler.capacity.root.default.maximum-capacity

100

Porcentaje máximo de recursos para default respecto al total de recursos del clúster.

Configuraciones avanzadas de colas

Archivo de configuración

Parámetro de configuración

Valor recomendado

Descripción

capacity-scheduler.xml

yarn.scheduler.capacity.<queue_path>.ordering-policy

fair

Directiva de ordenamiento de aplicaciones dentro de una cola. fifo (predeterminado): prioridad descendente y luego hora de envío ascendente. fair: porcentaje ascendente de recursos utilizados y luego hora de envío ascendente. Establézcalo en fair para la mayoría de las colas de producción.

yarn.scheduler.capacity.<queue_path>.ordering-policy.fair.enable-size-based-weight

Dejar en blanco

Indica si se usa programación fair ponderada. Valor predeterminado: false (programación por recursos utilizados). Cuando es true, la programación se basa en Recursos utilizados / Recursos requeridos, lo que ayuda a evitar que las aplicaciones grandes se queden sin recursos durante la contención.

yarn.scheduler.capacity.<queue_path>.state

Dejar en blanco

Estado de la cola. Valor predeterminado: RUNNING. Establézcalo en STOPPED solo cuando elimine una cola. La cola se elimina después de que todas sus aplicaciones finalicen.

yarn.scheduler.capacity.<queue_path>.maximum-am-resource-percent

Dejar en blanco

Límite de recursos AM por cola. Valor predeterminado: hereda de yarn.scheduler.capacity.maximum-am-resource-percent.

yarn.scheduler.capacity.<queue_path>.user-limit-factor

Dejar en blanco

Factor de límite superior para un solo usuario. Recursos máximos que puede usar un usuario: min(recursos máximos de la cola, recursos garantizados de la cola × userLimitFactor). Valor predeterminado: 1.0.

yarn.scheduler.capacity.<queue_path>.minimum-user-limit-percent

Dejar en blanco

Porcentaje mínimo de recursos garantizados que puede usar un solo usuario. Se calcula como: max(recursos garantizados / número de usuarios, recursos garantizados × min(userLimitFactor) / 100). Valor predeterminado: 100.

yarn.scheduler.capacity.<queue_path>.maximum-applications

Dejar en blanco

Número máximo de aplicaciones simultáneas en esta cola. Valor predeterminado: porcentaje de recursos garantizados × yarn.scheduler.capacity.maximum-applications.

yarn.scheduler.capacity.<queue_path>.acl_submit_applications

Dejar en blanco

ACL de envío para esta cola. Hereda de la cola principal si no se establece.

yarn.scheduler.capacity.<queue_path>.acl_administer_queue

Dejar en blanco

ACL de gestión para esta cola. Hereda de la cola principal si no se establece.

Configuraciones de ACL

La ACL está deshabilitada de forma predeterminada. Habilítela solo cuando su organización requiera control de acceso en el envío y la gestión de colas.

Archivo de configuración

Parámetro de configuración

Valor recomendado

Descripción

yarn-site.xml

yarn.acl.enabled

Dejar en blanco

Indica si se habilita la ACL. Valor predeterminado: false.

capacity-scheduler.xml

yarn.scheduler.capacity.<queue_path>.acl_submit_applications

Dejar en blanco

ACL de envío. Hereda de la cola principal si no se establece. De forma predeterminada, la cola raíz permite a todos los usuarios enviar aplicaciones.

yarn.scheduler.capacity.<queue_path>.acl_administer_queue

Dejar en blanco

ACL de gestión. Hereda de la cola principal si no se establece. De forma predeterminada, la cola raíz permite a todos los usuarios gestionar colas.

Importante

La ACL de una cola principal se aplica a todas sus colas secundarias. Si la cola raíz permite a todos los usuarios (valor predeterminado), las restricciones de ACL de las colas secundarias no surten efecto. Para aplicar la ACL de las colas secundarias, primero restrinja la cola raíz con la siguiente configuración:

  • yarn.scheduler.capacity.root.acl_submit_applications=<space>

  • yarn.scheduler.capacity.root.acl_administer_queue=<space>

Para otorgar a un usuario o grupo permisos de envío y gestión en una cola, configure tanto acl_submit_applications como acl_administer_queue para esa cola.

Configuraciones de apropiación

La apropiación garantiza una distribución justa de recursos entre inquilinos y respeta las prioridades de las aplicaciones. Habilítela en clústeres con requisitos estrictos de programación. La apropiación requiere YARN V2.8.0 o posterior.

Archivo de configuración

Parámetro de configuración

Valor recomendado

Descripción

yarn-site.xml

yarn.resourcemanager.scheduler.monitor.enable

true

Habilita la apropiación.

capacity-scheduler.xml

yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled

true

Habilita la apropiación dentro de la cola. La apropiación entre colas está habilitada de forma predeterminada y no se puede deshabilitar.

yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.preemption-order-policy

priority_first

Directiva de orden de apropiación dentro de la cola. Valor predeterminado: userlimit_first.

yarn.scheduler.capacity.<queue-path>.disable_preemption

true

Indica si se protege esta cola contra la apropiación. Hereda de la cola principal si no se establece. Establecer esto en true en la cola raíz protege todas las colas. Valor predeterminado en el nivel raíz: false (las colas pueden ser objeto de apropiación).

yarn.scheduler.capacity.<queue-path>.intra-queue-preemption.disable_preemption

true

Indica si se deshabilita la apropiación dentro de la cola para esta cola. Hereda de la cola principal si no se establece.

Gestionar configuraciones de colas con la API RESTful

A partir de YARN V3.2.0, puede usar la API RESTful para aplicar actualizaciones incrementales de configuración y ver todos los ajustes activos actualmente en capacity-scheduler.xml. Las versiones anteriores solo admiten actualizaciones completas mediante la operación RefreshQueues, sin posibilidad de inspeccionar las configuraciones activas.

Para habilitar la gestión de colas mediante la API RESTful, agregue los siguientes parámetros a yarn-site.xml:

Parámetro de configuración

Valor recomendado

Descripción

yarn.scheduler.configuration.store.class

fs

Tipo de almacenamiento para las configuraciones del programador.

yarn.scheduler.configuration.max.version

100

Número máximo de versiones de configuración almacenadas en el sistema de archivos. Las versiones anteriores se eliminan automáticamente.

yarn.scheduler.configuration.fs.path

/yarn/<cluster-name>/scheduler/conf

Ruta donde se almacena capacity-scheduler.xml. La ruta se crea automáticamente si no existe. Reemplace <cluster-name> con el nombre real de su clúster. Varios clústeres donde esté desplegado el servicio YARN pueden usar el mismo almacenamiento distribuido.

Ver configuraciones activas:

  • API RESTful: http://<rm-address>/ws/v1/cluster/scheduler-conf

  • HDFS: ${yarn.scheduler.configuration.fs.path}/capacity-scheduler.xml.<timestamp> — el archivo con la marca de tiempo mayor es la versión más reciente.

Actualizar configuraciones de forma incremental:

El siguiente ejemplo cambia yarn.scheduler.capacity.maximum-am-resource-percent a 0.2 y elimina el parámetro yarn.scheduler.capacity.xxx. Para eliminar un parámetro, omita el campo value.

curl -X PUT -H "Content-type: application/json" 'http://<rm-address>/ws/v1/cluster/scheduler-conf' -d '
{
  "global-updates": [
    {
      "entry": [{
        "key": "yarn.scheduler.capacity.maximum-am-resource-percent",
        "value": "0.2"
      },{
        "key": "yarn.scheduler.capacity.xxx"
      }]
    }
  ]
}'

Límites de recursos por contenedor

Los recursos máximos para un solo contenedor se determinan mediante los siguientes parámetros. Si una solicitud de contenedor supera el límite, el programador registra un error InvalidResourceRequestException: Invalid resource request....

Archivo de configuración

Parámetro de configuración

Descripción

Valor predeterminado

yarn-site.xml

yarn.scheduler.maximum-allocation-mb

Memoria máxima por contenedor a nivel de clúster. Unidad: MiB.

El valor de yarn.nodemanager.resource.memory-mb del grupo de nodos con mayor memoria. Se establece al crear el clúster.

yarn.scheduler.maximum-allocation-vcores

CPU máxima por contenedor a nivel de clúster. Unidad: vCore.

32

capacity-scheduler.xml

yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb

Memoria máxima por contenedor a nivel de cola. Anula la configuración a nivel de clúster solo para esta cola.

Dejar en blanco (hereda la configuración a nivel de clúster)

yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores

CPU máxima por contenedor a nivel de cola. Anula la configuración a nivel de clúster solo para esta cola.

Dejar en blanco (hereda la configuración a nivel de clúster)