Perché le mie applicazioni YARN in Amazon EMR sono ancora nello stato Accettato?

5 minuti di lettura
0

I miei processi Amazon EMR sono bloccati nello stato Accettato e i log mostrano “WARN YarnScheduler: il processo iniziale non ha accettato alcuna risorsa; verifica l'interfaccia utente del cluster per assicurarti che i lavoratori siano registrati e dispongano di risorse sufficienti”.

Breve descrizione

I processi EMR rimangono bloccati nello stato Accettato se il cluster non dispone di risorse sufficienti per soddisfare la richiesta di processo. Questo può accadere per i seguenti motivi:

  • Il YarnMemoryAvailablePercentage è molto basso e molti container sono in sospeso.
  • L'applicazione non può avviare uno schema di applicazione a causa di risorse insufficienti sui nodi principali. Ciò può verificarsi su Amazon EMR 5.19.0 e versioni successive, esclusa la serie Amazon EMR 6.x.
  • I nodi principali non sono integri.
  • Un processo EMR consuma tutte le risorse.

Risoluzione

Il cluster non dispone di risorse sufficienti per soddisfare la richiesta di processo

1.    Connettiti all'interfaccia utente di Resource Manager oppure usa il seguente comando da qualsiasi nodo per verificare le risorse:

yarn top 10

2.    Verifica se le risorse utilizzate sono quasi equivalenti alle risorse totali. Puoi anche verificare le metriche di Amazon CloudWatch per YarnMemoryAvailablePercentage e MemoryAvailableMB.

4.    Se necessario, aggiungi più capacità al cluster. È possibile utilizzare EMR Managed Scaling o la scalabilità automatica per aggiungere o ridurre automaticamente la capacità in base all'utilizzo delle risorse.

Le risorse sui nodi principali sono insufficienti.

In EMR 5.19.0 e versioni successive, esclusa la serie 6.0, lo schema di applicazione viene eseguito sul nodo principale per impostazione predefinita. Nella serie EMR 6.x, lo schema di applicazione può essere eseguito sia sui nodi principali che sui nodi attività.

A causa dell'aumento del numero di processi inviati e del minor numero di nodi principali, questi ultimi non possono assegnare un altro container principale dell'applicazione. Quindi il processo potrebbe bloccarsi anche se i nodi attività dispongono di memoria sufficiente. In questo caso, potresti visualizzare il seguente messaggio nei log del container:

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 %

In tal caso, termina i processi per liberare alcune risorse. Oppure aggiungi altri nodi principali al cluster.

Inoltre, puoi disattivare le etichette YARN in Amazon EMR 5.x.

I nodi principali non sono integri

Se i nodi principali esauriscono lo spazio su disco e il punto di montaggio ha un utilizzo del disco superiore al 90%, Amazon EMR considera il nodo non integro. I nuovi container non sono pianificati su nodi non integri. In tal caso, nei log del controller dell'istanza primaria viene visualizzato il seguente messaggio. I log si trovano in /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% ]

Per correggere i nodi non integri, riduci l'utilizzo del disco rimuovendo i vecchi log del container o i log degli eventi Spark. È inoltre possibile scalare dinamicamente l’archiviazione in base all'utilizzo del disco.

Un processo consuma tutte le risorse oppure i parametri Spark sono configurati oltre i limiti del cluster

L'allocazione dinamica Spark è attivata per impostazione predefinita in Amazon EMR. Se un processo Spark non è configurato correttamente, potrebbe consumare tutte le risorse del cluster. Ad esempio, visualizzi questo errore se il limite massimo di esecutori (spark.dynamicalLocation.maxExecutors) non è sufficientemente alto. Per i processi Spark, ottimizza i vincoli di memoria per evitare che un processo consumi tutte le risorse del cluster.

L'accettazione del processo non riesce, se la memoria dell'esecutore o la memoria del driver sono superiori ai parametri configurati da YARN. I parametri configurati da YARN sono yarn.scheduler.maximum-allocation-mb e yarn.nodemanager.resource.memory-mb. In questo caso, viene visualizzato un messaggio di errore simile al seguente:

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'.

Per risolvere l'errore, effettua le seguenti operazioni:


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa