Amazon EMR의 "Exit status: -100. Diagnostics: Container released on a *lost* node" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 12월 9일

Amazon EMR 작업이 다음과 같은 오류 메시지와 함께 실패합니다.

ExecutorLostFailure (executor 12 exited caused by one of the running tasks) Reason: Container marked as failed: container_1572839353552_0008_01_000002 on host: ip-xx-xxx-xx-xx Exit status: -100. Diagnostics: Container released on a *lost* node

이 오류는 무엇을 의미하며, 어떻게 해결해야 합니까?

간략한 설명

이 오류는 일반적으로 높은 디스크 공간 사용률로 인해 코어 또는 작업 로드가 종료되거나 장시간의 높은 CPU 사용률과 가용 메모리 부족으로 인해 노드가 응답하지 않을 때 발생합니다. 이 문서에서는 디스크 공간 문제에 초점을 맞춥니다.

코어 또는 작업 노드 디스크(예: /mnt 또는 /mnt1)의 디스크 사용량이 90%를 초과하면 해당 디스크는 비정상으로 간주됩니다. 노드 디스크의 25% 미만이 정상인 경우, YARN ResourceManager가 적절히 노드를 폐기합니다. 이 문제를 해결하려면 더 많은 Amazon Elastic Block Store(Amazon EBS) 용량을 EMR 클러스터에 추가합니다. 새 클러스터를 시작할 때나 실행 중인 클러스터를 수정하여 이 작업을 수행할 수 있습니다.

해결 방법

근본 원인 확인

오류의 원인을 확인하려면 다음 EMR 클러스터를 위한 Amazon CloudWatch 지표를 참조하십시오.

  • MR 비정상 노드: 이 지표에 비정상 노드가 표시되면 이 문제의 원인은 디스크 용량 부족입니다.
  • MR 손실 노드: 이 지표에 손실 노드가 표시되면 하드웨어 고장으로 인해 노드가 손실되었거나 CPU 또는 메모리 사용률이 높아 노드에 연결할 수 없다는 것을 나타냅니다.

다음 옵션 중 하나를 사용하여 디스크 용량 부족으로 인해 손실된 노드 오류를 해결할 수 있습니다.

새 클러스터: 더 많은 EBS 용량 추가

EMR 클러스터를 시작할 때 더 많은 EBS 용량을 추가하려면 더 큰 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 유형을 선택합니다. 더 큰 EC2 인스턴스에는 더 많은 EBS 스토리지 용량이 포함됩니다. 자세한 내용은 인스턴스용 기본 EBS 스토리지를 참조하십시오. (선택한 인스턴스 유형과 관계없이 클러스터를 생성할 때 볼륨 크기를 수정하거나 더 많은 볼륨을 추가할 수 있습니다.)

새 클러스터 또는 실행 중인 클러스터: 더 많은 코어 또는 작업 노드 추가

실행 중인 클러스터: 더 많은 EBS 볼륨 추가

실행 중인 클러스터에 더 많은 EBS 볼륨 연결:

1.    더 큰 EBS 볼륨으로 문제가 해결되지 않으면 코어와 작업 노드에 더 많은 EBS 볼륨을 연결합니다.

2.    연결된 볼륨을 포맷하고 마운트합니다. 올바른 디스크 번호를 사용해야 합니다(예: /data가 아니라 /mnt1 또는 /mnt2).

3.    SSH를 사용하여 노드에 연결합니다.

4.    /etc/hadoop/conf/yarn-site.xmlyarn.nodemanager.local-dirs 속성 내에 /mnt1/yarn 경로를 추가합니다. 예제:

<property>
    <name>yarn.nodemanager.local-dirs</name>
    <value>/mnt/yarn,/mnt1/yarn</value>
</property>

5.    NodeManager 서비스를 다시 시작합니다.

sudo stop hadoop-yarn-nodemanager
sudo start hadoop-yarn-nodemanager

6.    종료 방지 기능을 활성화합니다.

디스크 공간 문제가 여전히 해결되지 않은 경우 다음 방법을 시도해보십시오.

  • 불필요한 파일을 제거합니다.
  • 디스크 사용량 임계값을 90%에서 99%로 늘립니다. 이 방법을 사용하려면 모든 노드에서 yarn-default.xmlyarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage 속성을 수정합니다. 그런 다음, hadoop-yarn-nodemanager 서비스를 다시 시작합니다.