Por que minhas aplicações Yarn no Amazon EMR ainda estão no estado Accepted (Aceito)?

5 minuto de leitura
0

Minhas tarefas do Amazon EMR estão travadas no estado Accepted (Aceito) e os logs mostram a mensagem “WARN YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources.” (AVISO YarnScheduler: a tarefa inicial não aceitou nenhum recurso; verifique a interface do usuário do cluster para garantir que os trabalhadores estejam registrados e tenham recursos suficientes.)

Breve descrição

As tarefas do EMR ficam travadas no estado Accepted (Aceito) se o cluster não tiver recursos suficientes para atender à solicitação da tarefa. Isso pode acontecer pelos seguintes motivos:

  • A YARNMemoryAvailablePercentage é muito baixa e muitos dos contêineres estão pendentes.
  • A aplicação não pode iniciar um processo mestre de aplicação devido a recursos insuficientes nos nós centrais. Isso pode ocorrer no Amazon EMR 5.19.0 e versões posteriores, excluindo a série Amazon EMR 6.x.
  • Os nós centrais não estão íntegros.
  • Uma tarefa do EMR está consumindo todos os recursos.

Resolução

O cluster não tem recursos suficientes para atender à solicitação da tarefa

1.    Conecte-se à interface do usuário do Resource Manager ou use o seguinte comando de qualquer nó para verificar os recursos:

yarn top 10

2.    Verifique se os Used Resources (Recursos usados) são quase equivalentes ao Total Resources (Total de recursos). Você também pode verificar as métricas do Amazon CloudWatch para YARNMemoryAvailablePercentage e MemoryAvailableMB.

4.    Se necessário, adicione mais capacidade ao cluster. Você pode usar a Escalabilidade gerenciada pelo EMR ou a escalabilidade automática para adicionar ou reduzir automaticamente a capacidade com base na utilização dos recursos.

Não há recursos suficientes nos nós centrais.

No EMR 5.19.0 e versões posteriores, excluindo a série 6.0, o processo mestre da aplicação é executado no nó central por padrão. Na série EMR 6.x, o processo mestre da aplicação pode ser executada nos nós central e de tarefa.

Devido ao aumento do número de tarefas enviadas e menos nós centrais, os nós centrais não podem alocar outro contêiner mestre da aplicação. Portanto, a tarefa pode ficar travada mesmo que os nós de tarefa tenham memória suficiente. Se isso ocorrer, você poderá ver a seguinte mensagem nos logs do contêiner:

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 %

Se isso ocorrer, encerre as tarefas para liberar alguns recursos. Como alternativa, adicione mais nós centrais ao cluster.

Além disso, você pode desativar os rótulos do YARN no Amazon EMR 5.x.

Os nós centrais não são íntegros

Se os nós centrais ficarem sem espaço em disco e o ponto de montagem tiver uma utilização de disco superior a 90%, o Amazon EMR considerará o nó como sendo não íntegro. Novos contêineres não são programados em nós não íntegros. Se isso ocorrer, a seguinte mensagem aparecerá nos logs do controlador da instância primária. Os logs estão localizados em /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 corrigir nós não íntegros, reduza o uso do disco removendo logs antigos de contêineres ou logs de eventos do Spark. Você também pode escalar dinamicamente o armazenamento com base na utilização do disco.

Uma tarefa está consumindo todos os recursos ou os parâmetros do Spark estão configurados além dos limites do cluster

A alocação dinâmica do Spark está ativada por padrão no Amazon EMR. Se uma tarefa do Spark não estiver configurada corretamente, ela poderá consumir todos os recursos do cluster. Por exemplo, você recebe esse erro se o limite máximo de executores (spark.dynamicAllocation.maxExecutors) não for alto o suficiente. Para tarefas do Spark, ajuste as restrições de memória para evitar que uma tarefa consuma todos os recursos do cluster.

A aceitação da tarefa falhará se a memória do executor ou a memória do driver forem maiores do que os parâmetros configurados do Yarn. Os parâmetros configurados do Yarn são yarn.scheduler.maximum-allocation-mb e yarn.nodemanager.resource.memory-mb. Se isso ocorrer, você verá uma mensagem de erro semelhante à seguinte:

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 resolver isso, faça o seguinte:


AWS OFICIAL
AWS OFICIALAtualizada há um ano