기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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용 서버리스 스토리지를 사용하려면 다음 단계를 참조하세요.
-
EMR Serverless 애플리케이션 생성
spark-defaults 분류에서 spark 속성을
spark.aws.serverlessStorage.enabledtrue로 설정하여 서버리스 스토리지가 활성화된 EMR Serverless 릴리스 7.12(또는 이상) 애플리케이션을 생성합니다.aws emr-serverless create-application \ --type "SPARK" \ --namemy-application\ --release-label emr-7.12.0 \ --runtime-configuration '[{ "classification": "spark-defaults", "properties": { "spark.aws.serverlessStorage.enabled": "true" } }]' \ --region<AWS_REGION> -
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)
-
유럽(아일랜드)