EMR Serverless에서 애플리케이션 작업을 위한 사전 초기화된 용량
EMR Serverless는 드라이버와 작업자를 사전 초기화된 상태로 유지하고 몇 초 만에 응답할 수 있도록 지원하는 선택적 기능을 제공합니다. 이 경우 애플리케이션에 대한 작업자의 웜 풀을 효과적으로 생성합니다. 이 기능을 사전 초기화된 용량이라고 합니다. 이 기능을 구성하려면 애플리케이션의 initialCapacity
파라미터를 사전 초기화할 작업자 수로 설정할 수 있습니다. 사전 초기화된 작업자 용량을 사용하여 작업이 즉시 시작됩니다. 반복 애플리케이션 및 시간에 민감한 작업을 구현하려는 경우에 적합합니다.
사전 초기화된 용량을 통해 작업 및 세션을 몇 초 안에 시작할 수 있도록 작업자의 웜 풀을 준비합니다. 애플리케이션이 유휴 상태일 때도 프로비저닝된 사전 초기화된 작업자에 대한 비용을 지불하게 되므로, 빠른 시작 시간의 이점을 누릴 수 있는 사용 사례에 대해 이 기능을 활성화하고 리소스의 최적 사용률을 위해 크기를 조정하는 것이 좋습니다. 유휴 시 EMR Serverless 애플리케이션이 자동 종료됩니다. 예기치 않은 요금을 방지하기 위해 사전 초기화된 작업자를 사용하는 경우 이 기능을 켜두는 것이 좋습니다.
작업을 제출하는 경우 initialCapacity
의 작업자를 사용할 수 있는 경우 작업은 해당 리소스를 사용하여 실행을 시작합니다. 이러한 작업자가 이미 다른 작업에서 사용 중이거나 initialCapacity
에서 사용할 수 있는 것보다 작업에 더 많은 리소스가 필요한 경우 애플리케이션은 추가 작업자를 요청하고 가져옵니다(해당 애플리케이션에 설정된 리소스의 최대 제한 지원). 작업이 실행을 완료하면 작업이 사용한 작업자를 해제하고 애플리케이션에 사용할 수 있는 리소스 수가 initialCapacity
로 반환됩니다. 애플리케이션은 작업이 실행을 완료한 후에도 리소스의 initialCapacity
를 유지 관리합니다. 작업을 더 이상 실행할 필요가 없으면 애플리케이션은 initialCapacity
를 초과하는 여분의 리소스를 해제합니다.
사전 초기화된 용량을 사용할 수 있으며, 애플리케이션이 시작되면 이 용량을 바로 사용할 수 있습니다. 애플리케이션이 중지되면 사전 초기화된 용량이 비활성화됩니다. 요청된 사전 초기화된 용량이 생성되고 해당 용량을 사용할 준비가 된 경우에만 애플리케이션이 STARTED
상태로 전환됩니다. 애플리케이션이 STARTED
상태인 전체 시간 동안 EMR Serverless는 사전 초기화된 용량을 작업 또는 대화형 워크로드에서 사용 중이거나 사용 가능하도록 있도록 유지합니다. 이 기능은 해제되거나 실패한 컨테이너의 용량을 복원합니다. 이 경우 InitialCapacity
파라미터가 지정하는 작업자 수가 유지 관리됩니다. 사전 초기화된 용량이 없는 애플리케이션의 상태는 CREATED
에서 STARTED
로 즉시 변경될 수 있습니다.
특정 기간 사용하지 않는 경우 사전 초기화된 용량을 해제하도록 애플리케이션을 구성할 수 있습니다. 기본값은 15분입니다. 새 작업을 제출하면 중지된 애플리케이션이 자동 시작됩니다. 애플리케이션을 생성하는 경우 이러한 자동 시작 및 중지 구성을 설정하거나 애플리케이션이 CREATED
또는 STOPPED
상태인 경우에 변경할 수 있습니다.
InitialCapacity
수를 변경하고 각 작업자에 대해 CPU, 메모리 및 디스크와 같은 컴퓨팅 구성을 지정할 수 있습니다. 부분 수정은 불가능하므로 값을 변경할 때 모든 컴퓨팅 구성을 지정해야 합니다. 애플리케이션이 CREATED
또는 STOPPED
상태인 경우에만 구성을 변경할 수 있습니다.
참고
애플리케이션의 리소스 사용을 최적화하려면 컨테이너 크기를 사전 초기화된 용량 작업자 크기에 맞게 조정하는 것이 좋습니다. 예를 들어 Spark 실행기 크기를 2개 CPU로 구성하고 메모리를 8GB로 구성하지만 사전 초기화된 용량 작업자 크기가 16GB의 메모리를 사용하는 4CPU인 경우 Spark 실행기는 이 작업에 할당될 때 작업자 리소스 중 절반만 사용합니다.
Spark 및 Hive의 사전 초기화된 용량 사용자 지정
특정 빅 데이터 프레임워크에서 실행되는 워크로드에 대해 사전 초기화된 용량을 추가로 사용자 지정할 수 있습니다. 예를 들어 Apache Spark에서 워크로드가 실행되는 경우 드라이버로 시작하는 작업자 수와 실행기로 시작하는 작업자 수를 지정할 수 있습니다. 마찬가지로 Apache Hive를 사용하는 경우 Hive 드라이버로 시작하는 작업자 수와 Tez 작업을 실행해야 하는 작업자 수를 지정할 수 있습니다.
사전 초기화된 용량으로 Apache Hive를 실행하는 애플리케이션 구성
다음 API 요청은 Amazon EMR 릴리스 emr-6.6.0을 기반으로 Apache Hive를 실행하는 애플리케이션을 생성합니다. 애플리케이션은 각각 vCPU 2개와 메모리 4GB를 포함하는 사전 초기화된 Hive 드라이버 5개와 각각 vCPU 4개와 메모리 8GB를 포함하는 사전 초기화된 Tez 태스크 작업자 50개로 시작합니다. 이 애플리케이션에서 Hive 쿼리가 실행되면 먼저 사전 초기화된 작업자를 사용하고 즉시 실행을 시작합니다. 사전 초기화된 모든 작업자가 사용 중이고 더 많은 Hive 작업이 제출된 경우 애플리케이션은 총 400개의 vCPU 및 1,024GB 메모리로 확장할 수 있습니다. 선택적으로 DRIVER
또는 TEZ_TASK
작업자의 용량을 생략할 수 있습니다.
aws emr-serverless create-application \ --type "HIVE" \ --name
my-application-name
\ --release-label emr-6.6.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB" } }, "TEZ_TASK": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'
사전 초기화된 용량으로 Apache Spark를 실행하는 애플리케이션 구성
다음 API 요청은 Amazon EMR 릴리스 6.6.0을 기반으로 Apache Spark 3.2.0을 실행하는 애플리케이션을 생성합니다. 애플리케이션은 각각 vCPU 2개와 메모리 4GB를 포함하는 사전 초기화된 Spark 드라이버 5개와 각각 vCPU 4개와 메모리 8GB를 포함하는 사전 초기화된 실행기 50개로 시작합니다. 이 애플리케이션에서 Spark 작업이 실행되면 먼저 사전 초기화된 작업자를 사용하고 즉시 실행을 시작합니다. 사전 초기화된 모든 작업자가 사용 중이고 더 많은 Spark 작업이 제출된 경우 애플리케이션은 총 400개의 vCPU 및 1,024GB 메모리로 확장할 수 있습니다. DRIVER
또는 EXECUTOR
의 용량을 선택적으로 생략할 수 있습니다.
참고
Spark는 기본값이 10%인 구성 가능한 메모리 오버헤드를 드라이버 및 실행기에 요청된 메모리에 추가합니다. 작업에서 사전 초기화된 작업자를 사용하려면 초기 용량 메모리 구성이 작업 및 오버헤드에서 요청하는 메모리보다 커야 합니다.
aws emr-serverless create-application \ --type "SPARK" \ --name
my-application-name
\ --release-label emr-6.6.0 \ --initial-capacity '{ "DRIVER": { "workerCount": 5, "workerConfiguration": { "cpu": "2vCPU", "memory": "4GB" } }, "EXECUTOR": { "workerCount": 50, "workerConfiguration": { "cpu": "4vCPU", "memory": "8GB" } } }' \ --maximum-capacity '{ "cpu": "400vCPU", "memory": "1024GB" }'