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

4분 분량
0

Amazon EMR 클러스터에서 Apache Spark 작업을 실행 중인데 코어 노드의 디스크 공간이 거의 없습니다.

해결 방법

어떤 코어 노드가 비정상인지 확인

하나 이상의 Amazon Elastic Block Store(Amazon EBS) 볼륨이 연결된 노드는 디스크 사용률이 90% 이상일 경우 비정상으로 간주됩니다. 디스크 사용률이 90%에 도달했을 수 있는 노드를 확인하려면 다음을 수행하십시오.

1.    Amazon CloudWatch 지표 MRUnhealthyNodes를 확인합니다. 이 지표는 EMR 클러스터의 비정상 노드 수를 나타냅니다.

참고: CloudWatch 경보를 생성하여 MRUnhealthyNodes 지표를 모니터링할 수 있습니다.

2.    프라이머리 노드에 연결하고 /emr/instance-controller/log/instance-controller.log에서 인스턴스 컨트롤러 로그에 액세스합니다. 인스턴스 컨트롤러 로그에서 InstanceJointStatusMap을 검색하여 비정상 노드를 식별합니다.

자세한 내용은 높은 디스크 사용률Amazon EMR에서 Spark의 ExecutorLostFailure “Slave lost” 오류를 해결하려면 어떻게 해야 하나요?에서 참조하십시오.

3.    코어 노드에 로그인한 후 다음 명령을 실행하여 마운트의 사용률이 높은지 확인합니다.

df -h

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

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

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

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

/mnt/hdfs 디렉터리의 사용률이 높으면 HDFS 사용량을 확인하고 로그 파일 등의 불필요한 파일을 제거하십시오. 보존 기간을 줄이면 HDFS에서 로그 파일을 자동으로 정리하는 데 도움이 됩니다.

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

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

HDFS를 사용하는 일반적인 원인은 /var/log 디렉터리입니다. /var/log 디렉터리에는 Spark 이벤트 로그 및 YARN 컨테이너 로그와 같은 로그 파일이 저장됩니다. 이러한 파일의 보존 기간을 변경하여 공간을 절약할 수 있습니다.

다음 예제 명령은 /var/log/spark 사용량을 표시합니다.

참고: /var/log/spark는 기본 Spark 이벤트 로그 디렉터리입니다.

hadoop fs -du -s -h /var/log/spark

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

Spark 작업 기록 파일은 기본적으로 /var/log/spark/apps에 있습니다. 파일 시스템 기록 클리너가 실행되면 Spark에서 7일 이상 지난 작업 기록 파일이 삭제됩니다. 기본 보존 기간을 단축하려면 다음과 같이 하십시오.

실행 중인 클러스터에서 다음을 수행합니다.

1.    SSH를 사용하여 프라이머리 노드에 연결합니다.

2.    /etc/spark/conf/spark-defaults.conf에서 다음 값을 추가하거나 업데이트하십시오. 다음 구성은 12시간마다 클리너를 실행합니다. 구성에서는 1일 이상 경과된 파일을 지웁니다. spark.history.fs.cleaner.internvalspark.history.fs.cleaner.maxAge 매개 변수에서 개별 사용 사례에 맞게 이 기간을 사용자 지정할 수 있습니다.

------
spark.history.fs.cleaner.enabled true
spark.history.fs.cleaner.interval 12h
spark.history.fs.cleaner.maxAge 1d
------

3.    Spark 히스토리 서버를 다시 시작합니다.

클러스터 시작 중:

다음 구성을 사용합니다. spark.history.fs.cleaner.internvalspark.history.fs.cleaner.maxAge 매개 변수에서 개별 사용 사례에 맞게 기간을 사용자 지정할 수 있습니다.

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

이러한 매개 변수에 대한 자세한 내용은 Spark 설명서의 모니터링 및 계측을 참조하십시오.

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

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

1.    SSH를 사용하여 프라이머리, 코어 또는 태스크 노드에 연결합니다.

2.    Amazon EMR 클러스터(프라이머리, 코어 및 태스크 노드)의 각 노드에서 /etc/hadoop/conf/yarn-site.xml 파일을 엽니다.

3.    모든 노드에서 yarn.log-aggregation.retain-seconds 속성의 값을 줄입니다.

4.    ResourceManager 대몬(daemon)을 다시 시작합니다. 자세한 내용은 Amazon EMR 및 애플리케이션 프로세스 보기 및 다시 시작을 참조하십시오.

클러스터를 재구성하여 보존 기간을 줄일 수도 있습니다. 자세한 내용은 실행 중인 클러스터에서 인스턴스 그룹 재구성을 참조하십시오.

/mnt/yarn 사용량 단축

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

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

코어 노드를 더 추가하여 HDFS 공간 문제를 완화합니다. 또한 HDFS 디렉토리 이외의 디렉터리가 가득 차면 코어 또는 태스크 노드를 추가합니다. 자세한 내용은 클러스터 리소스 확장을 참조하십시오.

기존 노드에서 EBS 볼륨을 확장하거나 동적 스케일링 스크립트를 사용할 수도 있습니다. 자세한 내용은 다음을 참조하십시오.


관련 정보

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

HDFS 구성

스토리지 및 파일 시스템 작업

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음