내용으로 건너뛰기

Amazon EMR 클러스터의 코어 노드에 디스크 공간이 부족한 이유는 무엇입니까?

4분 분량
0

Amazon EMR 클러스터에서 Apache Spark 작업을 실행하려고 하는데 코어 노드의 디스크 공간이 거의 부족합니다.

해결 방법

비정상 코어 노드가 있는지 확인

하나 이상의 Amazon Elastic Block Store(Amazon EBS) 볼륨이 연결된 노드의 디스크 사용률이 90%를 초과하면 비정상으로 간주됩니다. 디스크 사용률이 90%에 도달한 노드를 확인하려면 다음 단계를 완료하십시오.

  1. MRUnhealthyNodes Amazon CloudWatch 지표를 확인합니다. 이 지표는 EMR 클러스터의 비정상 노드 수를 보여줍니다.
    참고: 또한 CloudWatch 경보를 생성하여 MRUnhealthyNodes 지표를 모니터링할 수도 있습니다.
  2. 프라이머리 노드에 연결하고 /emr/instance-controller/log/instance-controller.log에서 인스턴스 컨트롤러 로그에 액세스합니다.
  3. 인스턴스 컨트롤러 로그에서 InstanceJointStatusMap을 검색하여 어떤 노드가 비정상인지 파악합니다.
    자세한 내용은 비정상 노드로 인한 높은 디스크 사용률 섹션(Amazon EMR의 Spark에서 "ExecutorLostFailure: Slave lost" 오류를 해결하려면 어떻게 해야 합니까?)을 참조하십시오.
  4. 마운트의 사용률이 높은지 확인하려면 코어 노드에 로그인한 후 다음 명령을 실행합니다.
    df -h

불필요한 로컬 및 임시 Spark 애플리케이션 파일 제거

Spark 작업을 실행할 때 Spark 애플리케이션은 코어 노드의 남은 디스크 공간을 차지하는 로컬 파일을 생성합니다. 예를 들어 df -h 명령에서 /mnt가 90% 이상의 디스크 공간을 사용한다고 표시되는 경우 사용률이 높은 디렉터리 또는 파일을 확인하십시오.

코어 노드에서 다음 명령을 실행하여 디스크 공간을 가장 많이 사용하는 상위 10개 디렉터리를 확인합니다.

cd /mnt
sudo du -hsx * | sort -rh | head -10

/mnt/hdfs 디렉터리의 사용률이 높으면 Hadoop 분산 파일 시스템(HDFS) 사용량을 확인하고 로그 파일과 같은 불필요한 파일을 제거합니다. 특정 디렉터리의 공간 사용률을 확인하려면 다음 명령을 실행합니다.

hdfs dfsadmin -report
hadoop fs -du -s -h /path/to/dir

참고: /path/to/dir을 공간 사용률을 확인하려는 디렉터리의 경로로 바꾸십시오.

Spark 이벤트 및 YARN 컨테이너 로그의 보존 기간 단축

/var/log 디렉터리에는 Spark 이벤트 로그 및 YARN 컨테이너 로그와 같은 로그 파일이 저장됩니다. HDFS에서 로그 파일을 자동으로 지우려면 보존 기간을 줄이십시오.

Spark 작업 기록 파일의 기본 보존 기간 단축

기본적으로 Spark 작업 기록 파일은 /var/log/spark/apps에 있습니다. 파일 시스템 기록 클리너가 실행되면 Spark는 7일이 지난 작업 기록 파일을 삭제합니다.

실행 중인 클러스터의 기본 보존 기간을 줄이려면 다음 단계를 완료하십시오.

  1. SSH를 사용하여 프라이머리 노드에 연결합니다.
  2. /etc/spark/conf/spark-defaults.conf에서 다음 값을 추가하거나 업데이트합니다.
    ------spark.history.fs.cleaner.enabled true
    spark.history.fs.cleaner.interval 12h
    spark.history.fs.cleaner.maxAge 1d
    ------
    위 구성에서는 12시간마다 클리너를 실행합니다. 이 구성은 1일 이상 지난 파일을 지웁니다. spark.history.fs.cleaner.internvalspark.history.fs.cleaner.maxAge 파라미터에서 이 기간을 사용자 지정할 수 있습니다.
  3. Spark 기록 서버를 다시 시작합니다.

클러스터를 시작할 때 Spark 작업 기록 파일의 기본 보존 기간을 줄이려면 다음 구성을 사용하십시오.

{
    "Classification": "spark-defaults",
    "Properties": {
        "spark.history.fs.cleaner.enabled": "true",
        "spark.history.fs.cleaner.interval": "12h",
        "spark.history.fs.cleaner.maxAge": "1d"
    }
}

spark.history.fs.cleaner.intervalspark.history.fs.cleaner.maxAge 파라미터에서 기간을 사용자 지정할 수 있습니다.

이러한 파라미터에 대한 자세한 내용은 Apache Spark 웹 사이트에서 모니터링 및 계측을 참조하십시오.

YARN 컨테이너 로그의 기본 보존 기간 단축

Spark 애플리케이션 로그는 코어 노드의 /var/log/hadoop-yarn/apps에 있는 Spark 작업에 대한 YARN 컨테이너 로그입니다. Spark는 애플리케이션 실행이 완료되면 이러한 로그를 HDFS로 이동합니다. 기본적으로 YARN은 애플리케이션 로그를 HDFS에 48시간 동안 유지합니다. 보존 기간을 줄이려면 다음 단계를 완료하십시오.

  1. SSH를 사용하여 프라이머리, 코어 또는 태스크 노드에 연결합니다.
  2. EMR 클러스터의 각 노드(프라이머리, 코어 및 태스크 노드)에서 /etc/hadoop/conf/yarn-site.xml 파일을 엽니다.
  3. 모든 노드에서 yarn.log-aggregation.retain-seconds 속성의 값을 줄입니다.
  4. ResourceManager 대몬을 다시 시작합니다.

클러스터를 재구성하여 보존 기간을 줄일 수도 있습니다.

/mnt/yarn 사용량 줄이기

/mnt/yarn 디렉터리의 디스크 사용량이 많으면 사용자 캐시 보존을 조정하거나 노드의 EBS 볼륨을 확장합니다. 자세한 내용은 캐시가 Amazon EMR에서 디스크 공간을 너무 많이 사용하지 않도록 Hadoop 또는 Spark 작업의 사용자 캐시를 중지하려면 어떻게 해야 합니까?를 참조하십시오.

클러스터 크기 조정 또는 Amazon EMR 확장

HDFS 공간 문제를 피하려면 코어 노드 수를 확장합니다. 또한 HDFS 디렉터리 이외의 디렉터리가 꽉 차면 코어 또는 태스크 노드의 수를 확장합니다. 자세한 내용은 Amazon EMR 클러스터 스케일링을 사용하여 변화하는 워크로드에 맞춰 조정을 참조하십시오.

기존 노드에서 EBS 볼륨을 확장하거나 동적 스케일링 스크립트를 사용할 수도 있습니다. 자세한 내용은 Amazon EMR의 Apache Spark 작업에서 "no space left on device" 스테이지 실패를 해결하려면 어떻게 해야 합니까?를 참조하십시오.

관련 정보

Amazon EMR 클러스터 하드웨어 및 네트워킹 구성

HDFS 구성

Amazon EMR을 통한 스토리지 및 파일 시스템 작업

AWS 공식업데이트됨 2달 전
댓글 없음