Amazon EMR에 있는 Yarn 애플리케이션이 여전히 승인 상태인 이유는 무엇입니까?

4분 분량
0

Amazon EMR 작업이 승인 상태에서 멈추고 로그에 “WARN YarnScheduler: 초기 작업에서 어떤 리소스도 수락하지 않았습니다. 클러스터 UI를 확인하여 작업자가 등록되어 있고 리소스가 충분한지 확인하십시오”라고 표시됩니다.

간략한 설명

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

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

해결 방법

클러스터의 리소스가 부족하여 작업 요청을 처리할 수 없습니다.

1.    Resource Manager 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 파라미터가 클러스터 제한을 초과하여 구성되어 있습니다.

Spark 동적 할당은 Amazon EMR에서 기본적으로 켜져 있습니다. 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 공식
AWS 공식업데이트됨 일 년 전
댓글 없음