내용으로 건너뛰기

Amazon EMR의 Yarn 애플리케이션이 여전히 수락됨 상태인 이유는 무엇입니까?

4분 분량
0

Amazon EMR 작업이 수락됨 상태에서 멈추고 로그에 "WARN YarnScheduler: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources"라는 메시지가 표시됩니다.

간략한 설명

클러스터에 작업 요청을 처리하는 데 필요한 리소스가 충분하지 않으면 EMR 작업이 수락됨 상태로 멈춥니다. 이 문제는 다음과 같은 이유로 발생할 수 있습니다.

  • YARNMemoryAvailablePercentage가 매우 낮고 많은 수의 컨테이너가 대기 중입니다.
  • 코어 노드의 리소스가 부족하여 애플리케이션이 애플리케이션 마스터를 시작할 수 없습니다. 이 문제는 Amazon EMR 5.19.0 이상에서 발생할 수 있습니다(Amazon EMR 6.x 시리즈 제외).
  • 코어 노드가 비정상입니다.
  • 하나의 EMR 작업이 모든 리소스를 소모하고 있습니다.

해결 방법

클러스터의 리소스가 부족하여 작업 요청을 수행할 수 없음

1.    리소스 관리자 UI에 연결하거나 임의의 노드에서 다음 명령을 사용하여 리소스를 확인합니다.

yarn top 10

2.    사용된 리소스전체 리소스와 거의 같은지 확인합니다. 또한 Amazon CloudWatch 지표에서 YARNMemoryAvailablePercentageMemoryAvailableMB를 확인할 수 있습니다.

4.    필요한 경우 클러스터에 용량을 추가합니다. EMR Managed Scaling 또는 오토 스케일링을 사용하여 리소스 사용률에 따라 용량을 자동으로 추가하거나 축소할 수 있습니다.

코어 노드의 리소스 부족

6.0 시리즈를 제외한 EMR 5.19.0 이상에서는 애플리케이션 마스터가 기본적으로 코어 노드에서 실행됩니다. EMR 6.x 시리즈에서는 애플리케이션 마스터가 코어 노드와 태스크 노드 모두에서 실행될 수 있습니다.

제출된 작업 수가 증가하고 코어 노드는 적기 때문에 코어 노드가 다른 애플리케이션 마스터 컨테이너를 할당할 수 없습니다. 따라서 태스크 노드에 충분한 메모리가 있어도 작업이 중단될 수 있습니다. 이런 경우 컨테이너 로그에 다음 메시지가 표시될 수 있습니다.

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 %

이런 경우 작업을 종료하여 일부 리소스를 확보하십시오. 또는 클러스터에 코어 노드를 더 추가하십시오.

또한 Amazon EMR 5.x에서 YARN 레이블을 끌 수 있습니다.

코어 노드가 비정상임

코어 노드의 디스크 공간이 부족하고 마운트 지점의 디스크 사용률이 90%를 넘는 경우 Amazon EMR은 노드를 비정상으로 간주합니다. 새 컨테이너는 비정상 노드에서 예약되지 않습니다. 이런 경우 기본 인스턴스의 컨트롤러 로그에 다음 메시지가 표시됩니다. 로그는 /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% ]

비정상 노드를 수정하려면 오래된 컨테이너 로그 또는 Spark 이벤트 로그를 제거하여 디스크 사용량을 줄이십시오. 디스크 사용률을 기반으로 스토리지 규모를 동적으로 조정할 수도 있습니다.

한 작업에 모든 리소스가 소모되거나 Spark 파라미터가 클러스터 제한을 초과하여 구성됨

Amazon EMR에서 Spark 동적 할당은 기본적으로 켜져 있습니다. Spark 작업이 제대로 구성되지 않은 경우 해당 작업은 클러스터의 리소스를 모두 소비할 수 있습니다. 예를 들어 최대 실행기(spark.dynamicAllocation.maxExecutors) 제한이 충분히 높지 않은 경우 이 오류가 발생합니다. Spark 작업의 경우 하나의 작업이 클러스터의 리소스를 모두 소비하지 않도록 메모리 제약 조건을 조정하십시오.

실행기 메모리 또는 드라이버 메모리가 Yarn에서 구성된 파라미터보다 많으면 작업 수락이 실패합니다. Yarn에서 구성된 파라미터는 yarn.scheduler.maximum-allocation-mbyarn.nodemanager.resource.memory-mb입니다. 이 문제가 발생하면 다음과 비슷한 오류 메시지가 표시됩니다.

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

이 문제를 해결하려면 다음을 수행하십시오.


AWS 공식업데이트됨 3년 전