¿Por qué mis aplicaciones de Yarn en Amazon EMR siguen en el estado Accepted (Aceptado)?

5 minutos de lectura
0

Mis trabajos de Amazon EMR están bloqueados en el estado Accepted (Aceptado) y los registros muestran “WARN YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources” (ADVERTENCIA YarnScheduler: el trabajo inicial no ha aceptado ningún recurso; compruebe la interfaz de usuario del clúster para asegurarse de que los trabajadores estén registrados y tengan suficientes recursos).

Descripción breve

Los trabajos de EMR quedan bloqueados en el estado Accepted (Aceptado) si el clúster no tiene suficientes recursos para cumplir con la solicitud de trabajo. Esto puede ocurrir por las siguientes razones:

  • El valor de YARNMemoryAvailablePercentage es muy bajo y muchos de los contenedores están pendientes.
  • La aplicación no puede iniciar una aplicación maestra debido a la insuficiencia de recursos en los nodos principales. Esto puede ocurrir en Amazon EMR 5.19.0 y versiones posteriores, sin incluir la serie Amazon EMR 6.x.
  • Los nodos principales están en mal estado.
  • Un trabajo de EMR está consumiendo todos los recursos.

Resolución

El clúster no tiene recursos suficientes para cumplir con la solicitud de trabajo

1.    Conéctese a la interfaz de usuario del administrador de recursos o utilice el siguiente comando desde cualquier nodo para comprobar los recursos:

yarn top 10

2.    Compruebe si los recursos utilizados son casi equivalentes a los recursos totales. También puede consultar las métricas de Amazon CloudWatch para YARNMemoryAvailablePercentage y MemoryAvailableMB.

4.    Si es necesario, agregue más capacidad al clúster. Puede utilizar el escalado administrado de EMR o el escalado automático para agregar o reducir automáticamente la capacidad en función del uso de los recursos.

Los recursos de los nodos principales son insuficientes.

En EMR 5.19.0 y versiones posteriores, sin incluir la serie 6.0, la aplicación maestra se ejecuta en el nodo principal de forma predeterminada. En la serie EMR 6.x, la aplicación maestra puede ejecutarse tanto en el nodo principal como en el nodo de tarea.

Debido al aumento del número de trabajos enviados y al menor número de nodos principales, los nodos principales no pueden asignar otro contenedor maestro de aplicaciones. Por lo tanto, es posible que el trabajo se quede bloqueado aunque los nodos de tareas tengan suficiente memoria. Si esto ocurre, es posible que vea el siguiente mensaje en los registros del contenedor:

Application is Activated, waiting for resources to be assigned for AM. Last Node which was processed for the application : ip-xxxx:8041 ( Partition : [], Total resource :
<memory:516096, vCores:64>, Available resource : <memory:516096,vCores:64> ). Details : AM Partition = CORE ; Partition Resource =
<memory:516096, vCores:64> ; Queue's Absolute capacity = 100.0 % ; Queue's Absolute used capacity = 99.53497 % ; Queue's Absolute max capacity =100.0 %

Si esto ocurre, termine los trabajos para liberar algunos recursos. O bien, agregue más nodos principales al clúster.

Además, puede desactivar las etiquetas YARN en Amazon EMR 5.x.

Los nodos principales están en mal estado

Si los nodos principales se quedan sin espacio en disco y el punto de montaje tiene una utilización del disco superior al 90 %, Amazon EMR considera que el nodo está en mal estado. Los contenedores nuevos no están programados en nodos en mal estado. Si esto ocurre, aparece el siguiente mensaje en los registros del controlador de la instancia principal. Los registros se encuentran en /emr/instance-controller/log.

Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space
is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]

Para corregir los nodos en mal estado, reduzca el uso del disco. Para ello, elimine registros de contenedores antiguos o registros de eventos de Spark. También puede escalar el almacenamiento de forma dinámica en función del uso del disco.

Un trabajo está consumiendo todos los recursos o los parámetros de Spark se han configurado más allá de los límites del clúster

La asignación dinámica de Spark está activada de forma predeterminada en Amazon EMR. Si un trabajo de Spark no está configurado correctamente, es posible que el trabajo consuma todos los recursos del clúster. Por ejemplo, aparece este error si el límite máximo de ejecutores (spark.dynamicAllocation.maxExecutors) no es lo suficientemente alto. En cuanto a los trabajos de Spark, ajuste las restricciones de memoria para evitar que un trabajo consuma todos los recursos del clúster.

La aceptación del trabajo falla si la memoria del ejecutor o la memoria del controlador superan los parámetros configurados de Yarn. Los parámetros configurados de Yarn son yarn.scheduler.maximum-allocation-mb y yarn.nodemanager.resource.memory-mb. Si esto ocurre, aparecerá un mensaje de error similar al siguiente:

22/01/03 20:05:05 INFO Client: Verifying our application has not  requested more than the maximum memory capability of the cluster (24576 
MB per container)
Exception in thread "main" java.lang.IllegalArgumentException: Required executor memory (49152),overhead (6144 MB), and PySpark memory (0 MB) is above the max threshold
 (24576 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.

Para resolverlo, haga lo siguiente:


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año