Amazon EMR Serverless에 서버리스 스토리지 사용 - Amazon EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EMR Serverless에 서버리스 스토리지 사용

Amazon EMR 릴리스 7.12 이상에서는 Apache Spark 작업을 실행할 때 서버리스 스토리지를 사용하여 로컬 디스크 프로비저닝을 제거하고 데이터 처리 비용을 줄이며 디스크 용량 제약으로 인한 작업 실패를 방지합니다. 서버리스 스토리지는 용량 구성 없이 작업에 대한 셔플, 디스크 유출 및 디스크 캐싱 작업을 자동으로 처리하고 중간 데이터를 무료로 저장합니다. Amazon EMR Serverless는 워크로드 수요에 따라 자동으로 확장되는 완전 관리형 서버리스 스토리지에 중간 데이터를 저장하고 Spark가 유휴 시 즉시 컴퓨팅 작업자를 해제하여 컴퓨팅 비용을 절감할 수 있습니다.

주요 이점

EMR Serverless용 서버리스 스토리지는 다음과 같은 이점을 제공합니다.

  • 제로 구성 스토리지 - 서버리스 스토리지를 사용하면 각 애플리케이션 또는 작업에 대해 로컬 디스크 유형과 크기를 구성할 필요가 없습니다. EMR Serverless는 용량 계획 없이 중간 데이터 작업을 자동으로 관리합니다.

  • 자동 조정을 통해 작업 실패 방지 - 스토리지 용량은 워크로드 수요에 따라 자동으로 조정되므로 디스크 용량 부족으로 인한 작업 실패를 방지합니다.

  • 데이터 처리 비용 절감 - 서버리스 스토리지는 두 가지 메커니즘을 통해 처리 비용을 절감합니다. 첫째, 중간 데이터 스토리지는 무료로 제공되며 컴퓨팅 및 메모리 리소스에 대해서만 비용을 지불하면 됩니다. 둘째, Spark의 동적 리소스 할당과 분리된 스토리지를 통해 Spark는 유휴 시 로컬 디스크에 중간 데이터를 보존하는 대신 작업자를 즉시 해제할 수 있습니다. 이렇게 하면 Spark 단계당 스케일 아웃 및 스케일 인이 더 빨라지므로 이후 단계에서 초기 단계보다 더 적은 작업자가 필요한 작업의 컴퓨팅 비용이 절감됩니다.

  • 작업 수준 격리를 통한 암호화된 스토리지 - 모든 중간 데이터는 전송 중 및 저장 시 엄격한 작업 수준 격리를 통해 암호화됩니다.

  • 세분화된 액세스 제어 지원 - 서버리스 스토리지는 AWS Lake Formation 통합을 통해 세분화된 액세스 제어를 지원합니다.

시작하기

Spark 워크플로에서 EMR Serverless용 서버리스 스토리지를 사용하려면 다음 단계를 참조하세요.

  1. EMR Serverless 애플리케이션 생성

    spark-defaults 분류에서 spark 속성을 spark.aws.serverlessStorage.enabled true로 설정하여 서버리스 스토리지가 활성화된 EMR Serverless 릴리스 7.12(또는 이상) 애플리케이션을 생성합니다.

    aws emr-serverless create-application \ --type "SPARK" \ --name my-application \ --release-label emr-7.12.0 \ --runtime-configuration '[{ "classification": "spark-defaults", "properties": { "spark.aws.serverlessStorage.enabled": "true" } }]' \ --region <AWS_REGION>
  2. Spark 작업 시작

    애플리케이션에서 작업 실행을 시작합니다. EMR Serverless용 서버리스 스토리지는 작업의 셔플과 같은 중간 데이터 작업을 자동으로 처리합니다.

    aws emr-serverless start-job-run \ --application-id <application-id> \ --execution-role-arn <job-role-arn> \ --job-driver '{ "sparkSubmit": { "entryPoint": "s3://<bucket>/script.py", "sparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=20g --conf spark.driver.cores=4 --conf spark.driver.memory=8g --conf spark.executor.instances=10" } }'

    애플리케이션 수준에서 활성화되지 않은 경우에도 작업 수준에서 EMR Serverless용 서버리스 스토리지를 활성화할 수 있습니다. 그러면 작업을 처리하기 위해 서버리스 스토리지로 활성화된 작업자 노드가 시작됩니다. 동일한 Spark 속성을 false로 설정하여 특정 작업에 대한 서버리스 스토리지를 비활성화spark.aws.serverlessStorage.enabled할 수도 있습니다.

    # Turn on serverless storage for EMR serverless for a specific job aws emr-serverless start-job-run \ --application-id <application-id> \ --execution-role-arn <job-role-arn> \ --job-driver '{ "sparkSubmit": { "entryPoint": "/usr/lib/spark/examples/jars/spark-examples.jar", "entryPointArguments": ["1"], "sparkSubmitParameters": "--class org.apache.spark.examples.SparkPi --conf spark.aws.serverlessStorage.enabled": "true" } }'
    참고

    기존 로컬 디스크 프로비저닝을 계속 사용하려면 spark.aws.serverlessStorage.enabled 구성을 생략하거나 false로 설정합니다.

고려 사항 및 제한 사항

  • 릴리스 버전 - 서버리스 스토리지는 Amazon EMR 릴리스 7.12 이상에서 지원됩니다.

  • 데이터 볼륨 제한 - 각 작업은 작업 실행당 최대 총 200GB의 중간 데이터를 읽고 쓸 수 있습니다. 이 제한을 초과하는 작업은 서버리스 스토리지 제한에 도달했음을 나타내는 오류 메시지와 함께 실패합니다.

  • 작업 실행 제한 시간 - 서버리스 스토리지는 최대 24시간의 실행 제한 시간이 있는 작업을 지원합니다. 실행 제한 시간을 늘리도록 구성된 작업은 오류 메시지와 함께 실패합니다.

  • 사전 초기화된 용량 - 사전 초기화된 용량 작업자는 서버리스 스토리지를 지원하지 않습니다. 사전 초기화된 용량을 구성하면 작업 수준에서 서버리스 스토리지를 명시적으로 비활성화하는 작업에서만 사용됩니다. 서버리스 스토리지가 활성화된 작업은 항상 온디맨드로 새 작업자를 프로비저닝하며 애플리케이션 수준의 구성에 관계없이 사전 초기화된 용량을 사용하지 않습니다.

  • 워크로드 유형 - 스트리밍 및 대화형 작업에는 서버리스 스토리지가 지원되지 않습니다.

  • 작업자 구성 - vCPUs가 1개 또는 2개인 작업자에는 서버리스 스토리지가 지원되지 않습니다.

지원됨 AWS 리전

EMR Serverless는 다음 리전에서 서버리스 스토리지를 지원합니다.

  • 미국 동부(버지니아 북부)

  • US West (Oregon)

  • 유럽(아일랜드)