캐시가 Amazon EMR에서 디스크 공간을 너무 많이 사용하지 않도록 하둡 또는 Spark 작업의 사용자 캐시를 중지하려면 어떻게 해야 하나요?

3분 분량
0

내 Apache Hadoop 또는 Apache Spark 작업의 사용자 캐시는 파티션의 모든 디스크 공간을 사용합니다. Amazon EMR 작업이 실패하거나 HDFS NameNode 서비스가 안전 모드에 있습니다.

간단한 설명

Amazon EMR 클러스터에서 YARN은 작업이 /mnt/yarn/usercache에 캐시 데이터를 쓸 수 있도록 구성됩니다. 많은 양의 데이터를 처리하거나 여러 동시 작업을 실행하는 경우 /mnt 파일 시스템이 가득 찰 수 있습니다. 이로 인해 일부 노드에서 노드 관리자가 실패하고 작업이 멈추거나 실패합니다.

이 문제를 해결하려면 다음 방법 중 하나를 사용하세요.

  • 장기 실행 또는 스트리밍 작업이 없는 경우 YARN NodeManager에 대한 사용자 캐시 보존 설정을 조정합니다.
  • 장기 실행 또는 스트리밍 작업이 있는 경우 Amazon Elastic Block Store(Amazon EBS) 볼륨을 확장합니다.

해결 방법

NodeManager의 사용자 캐시 보존 설정을 조정합니다

다음 속성은 캐시 정리 설정을 정의합니다.

  • yarn.nodemanager.localizer.cache.cleanup.interval-ms: 캐시 정리 간격입니다. 기본값은 600,000밀리초입니다. 이 간격 후에 캐시 크기가 yarn.nodemanager.localizer.cache.target-size-mb의 설정 값을 초과하면 실행 중인 컨테이너에서 사용하지 않는 파일이 삭제됩니다.
  • **yarn.nodemanager.localizer.cache.target-size-mb:**캐시에 허용된 최대 디스크 공간입니다. 기본값은 10,240MB입니다. 캐시 디스크 크기가 이 값을 초과하면 실행 중인 컨테이너에서 사용하지 않는 파일은 yarn.nodemanager.localizer.cache.cleanup.interval-ms에 설정된 간격에 따라 삭제됩니다.

클러스터에서 정리 간격 및 최대 디스크 공간 크기를 설정하려면 다음 단계를 완료하세요.

  1. 각 코어 및 태스크 노드에서 /etc/hadoop/conf/yarn-site.xml를 엽니다.

  2. 각 코어 및 태스크 노드에 대해 yarn.nodemanager.localizer.cache.cleanup.intervalyarn.nodemanager.localizer.cache.target-size-mb의 값을 줄입니다.

    예를 들면 다음과 같습니다.

    sudo vim /etc/hadoop/conf/yarn-site.xmlyarn.nodemanager.localizer.cache.cleanup.interval-ms 400000
    yarn.nodemanager.localizer.cache.target-size-mb 5120
  3. 각 코어 및 태스크 노드에서 다음 명령을 실행하여 NodeManager를 다시 시작합니다.
    EMR 5.29 및 이전 버전

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

    EMR 5.30.0 이상

    sudo stop hadoop-yarn-nodemanager.service  
    sudo systemctl start hadoop-yarn-nodemanager.service
  4. 시작 시 새 클러스터에서 정리 간격 및 최대 디스크 공간 크기를 설정하려면 다음과 유사한 구성 개체를 추가합니다.

    [
        {
          "Classification": "yarn-site",
         "Properties": {
           "yarn.nodemanager.localizer.cache.cleanup.interval-ms": "400000",
           "yarn.nodemanager.localizer.cache.target-size-mb": "5120"
          }
        }
    ]
    

    실행 중인 컨테이너에서는 삭제 서비스가 완료되지 않습니다. 즉, 사용자 캐시 보존 설정을 조정한 후에도 데이터가 다음 경로로 계속 유출되어 파일 시스템을 채울 수 있습니다.

    {'yarn.nodemanager.local-dirs'}/usercache/user/appcache/application_id ,

EMR 클러스터 노드의 EBS 볼륨 확장

실행 중인 EMR 클러스터에서 스토리지를 확장하려면 Amazon EMR 클러스터에서 스토리지를 동적으로 스케일 업을 참조하세요.

새 EMR 클러스터에서 스토리지를 확장하려면 EMR 클러스터를 생성할 때 더 큰 볼륨 크기를 지정합니다. 기존 클러스터에 노드를 추가할 때도 이 작업을 수행할 수 있습니다.

  • 아마존 EMR 버전 5.22.0 이상: EBS 스토리지의 기본 용량은 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스의 크기에 따라 증가합니다. 각 인스턴스 유형의 기본 스토리지 용량 및 볼륨 수에 대한 자세한 내용은 인스턴스의 기본 Amazon EBS 스토리지 섹션을 참조하세요.
  • **아마존 EMR 버전 5.21 이하:**기본 EBS 볼륨 크기는 32GB입니다. 27GB는 ** /mnt ** 파티션용으로 예약되어 있습니다. HDFS, YARN, 사용자 캐시 및 모든 애플리케이션은 /mnt 파티션을 사용합니다. 필요에 따라 EBS 볼륨의 크기를 늘립니다. /mnt1, /mnt2 등으로 마운트된 여러 EBS 볼륨을 지정할 수도 있습니다.

Spark 스트리밍 작업의 경우 데이터가 더 이상 필요하지 않은 후 **RDD.unpersist()**를 수행할 수도 있습니다. 또는 Scala에서는 System.gc() 또는 Python에서는 **sc._jvm.System.gc()**를 명시적으로 호출하여 JVM 가비지 수집을 시작하고 중간 셔플 파일을 제거합니다.

AWS 공식
AWS 공식업데이트됨 3달 전