인스턴스 플릿에서 용량 예약 사용 - Amazon EMR

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

인스턴스 플릿에서 용량 예약 사용

용량 예약 옵션을 포함하는 온디맨드 인스턴스 플릿을 시작하려면 용량 예약 옵션을 사용하는 데 필요한 추가 서비스 역할 권한을 연결합니다. 용량 예약 옵션은 온디맨드 할당 전략과 함께 사용해야 하므로 할당 전략에 필요한 권한도 서비스 역할 및 관리형 정책에 포함해야 합니다. 자세한 정보는 할당 전략 권한을 참조하세요.

Amazon EMR은 열린 용량 예약과 목표 용량 예약을 모두 지원합니다. 다음 주제에서는 RunJobFlow 작업 또는 create-cluster 명령과 함께 온디맨드 용량 예약을 사용하여 인스턴스 플릿을 시작할 수 있는 인스턴스 플릿 구성을 보여줍니다.

최대한 열린 용량 예약 사용

클러스터의 온디맨드 인스턴스가 계정에서 사용할 수 있는 열린 용량 예약 속성(인스턴스 유형, 플랫폼, 테넌시 및 가용 영역)과 일치하면 용량 예약이 자동으로 적용됩니다. 하지만 용량 예약 사용은 보장되지 않습니다. 클러스터를 프로비저닝하기 위해 Amazon EMR은 시작 요청에 지정된 모든 인스턴스 풀을 평가하여 요청된 모든 코어 노드를 시작하기에 충분한 용량을 갖춘 최저 가격의 풀을 사용합니다. 인스턴스 풀과 일치하는 사용 가능한 열린 용량 예약이 자동으로 적용됩니다. 사용 가능한 열린 용량 예약이 인스턴스 풀과 일치하지 않는 경우 미사용 상태로 남습니다.

코어 노드가 프로비저닝되면 가용 영역이 선택되고 수정됩니다. Amazon EMR은 선택한 가용 영역에서 가장 저렴한 항목부터 시작해 모든 태스크 노드가 프로비저닝될 때까지 인스턴스 풀에 태스크 노드를 프로비저닝합니다. 인스턴스 풀과 일치하는 사용 가능한 열린 용량 예약이 자동으로 적용됩니다.

다음은 최대한 열린 용량 예약을 사용하기 위한 Amazon EMR 용량 할당 로직의 사용 사례입니다.

예제 1: 시작 요청의 최저 가격 인스턴스 풀에 사용 가능한 열린 용량 예약이 있는 경우

이 경우 Amazon EMR은 온디맨드 인스턴스를 사용하여 최저 가격의 인스턴스 풀에서 용량을 시작합니다. 해당 인스턴스 풀에서 사용 가능한 열린 용량 예약이 자동으로 사용됩니다.

온디맨드 전략 lowest-price
요청 용량 100
인스턴스 유형 c5.xlarge m5.xlarge r5.xlarge
사용 가능한 열린 용량 예약 150 100 100
온디맨드 가격 $ $$ $$$
프로비저닝된 인스턴스 100 - -
사용된 열린 용량 예약 100 - -
사용 가능한 열린 용량 예약 50 100 100

인스턴스 플릿이 시작된 후, describe-capacity-reservations를 실행하여 미사용 용량 예약이 얼마나 남았는지 확인할 수 있습니다.

예제 2: 시작 요청의 최저 가격 인스턴스 풀에 사용 가능한 열린 용량 예약이 없는 경우

이 경우 Amazon EMR은 온디맨드 인스턴스를 사용하여 최저 가격의 인스턴스 풀에서 용량을 시작합니다. 하지만 열린 용량 예약은 미사용 상태로 남아 있습니다.

온디맨드 전략 lowest-price
요청 용량 100
인스턴스 유형 c5.xlarge m5.xlarge r5.xlarge

사용 가능한 열린 용량 예약

- - 100
온디맨드 가격 $ $$ $$$
프로비저닝된 인스턴스 100 - -
사용된 열린 용량 예약 - - -
사용 가능한 열린 용량 예약 - - 100

최대한 열린 용량 예약을 사용하도록 인스턴스 플릿 구성

RunJobFlow 작업을 사용하여 인스턴스 플릿 기반 클러스터를 생성하는 경우 온디맨드 할당 전략을 lowest-price로 설정하고 용량 예약 옵션에서 CapacityReservationPreferenceopen으로 설정합니다. 또는 이 필드를 비워 두면 Amazon EMR이 온디맨드 인스턴스의 용량 예약 기본 설정을 open으로 기본 설정합니다.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "open" } } }

Amazon EMR CLI를 사용하여 열린 용량 예약을 사용하여 인스턴스 플릿 기반 클러스터를 생성할 수도 있습니다.

aws emr create-cluster \ --name 'open-ODCR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=open}}'}

여기서

  • open-ODCR-cluster는 열린 용량 예약을 사용하는 클러스터 이름으로 바뀝니다.

  • subnet-22XXXX01은 서브넷 ID로 바뀝니다.

먼저 열린 용량 예약을 사용합니다.

최저 가격 할당 전략을 재정의하고 Amazon EMR 클러스터를 프로비저닝하는 동안 먼저 사용 가능한 열린 용량 예약을 사용하도록 우선순위를 정할 수 있습니다. 이 경우 Amazon EMR은 시작 요청에 지정된 용량 예약을 포함하는 모든 인스턴스 풀을 재평가하여 요청된 모든 코어 노드를 시작하기에 충분한 용량을 갖춘 최저 가격의 풀을 사용합니다. 용량 예약을 사용하는 인스턴스 풀 중 요청된 코어 노드에 충분한 용량을갖춘 인스턴스 풀이 하나도 없는 경우 Amazon EMR은 이전 주제에서 설명한 최대한의 원칙으로 돌아갑니다. 즉, Amazon EMR은 시작 요청에 지정된 모든 인스턴스 풀을 재평가하여 요청된 모든 코어 노드를 시작하기에 충분한 용량을 갖춘 최저 가격의 풀을 사용합니다. 인스턴스 풀과 일치하는 사용 가능한 열린 용량 예약이 자동으로 적용됩니다. 사용 가능한 열린 용량 예약이 인스턴스 풀과 일치하지 않는 경우 미사용 상태로 남습니다.

코어 노드가 프로비저닝되면 가용 영역이 선택되고 수정됩니다. Amazon EMR은 선택한 가용 영역에서 가장 저렴한 항목부터 시작해 모든 태스크 노드가 프로비저닝될 때까지 용량 예약이 있는 인스턴스 풀에 태스크 노드를 프로비저닝합니다. Amazon EMR은 선택한 가용 영역의 각 인스턴스 풀에서 사용 가능한 오픈 용량 예약을 먼저 사용하고, 필요한 경우에만 최저 가격 전략을 사용하여 나머지 태스크 노드를 프로비저닝합니다.

다음은 열린 용량 예약을 먼저 사용하기 위한 Amazon EMR 용량 할당 로직의 사용 사례입니다.

예제 1: 시작 요청에서 사용 가능한 열린 용량 예약이 있는 인스턴스 풀에 코어 노드를 위한 충분한 용량이 있는 경우

이 경우 Amazon EMR은 인스턴스 풀 가격에 관계없이 사용 가능한 열린 용량 예약을 통해 인스턴스 풀의 용량을 시작합니다. 따라서 모든 코어 노드가 프로비저닝될 때까지 최대한 열린 용량 예약이 사용됩니다.

온디맨드 전략 lowest-price
요청 용량 100
사용 전략 use-capacity-reservations-first
인스턴스 유형 c5.xlarge m5.xlarge r5.xlarge
사용 가능한 열린 용량 예약 - - 150
온디맨드 요금 $ $$ $$$
프로비저닝된 인스턴스 - - 100
사용된 열린 용량 예약 - - 100
사용 가능한 열린 용량 예약 - - 50

예제 2: 시작 요청에서 사용 가능한 열린 용량 예약이 있는 인스턴스 풀에 코어 노드를 위한 충분한 용량이 없는 경우

이 경우 Amazon EMR은 용량 예약을 최대한 활용하면서 최저 가격 전략을 사용하여 코어 노드를 시작하는 방법으로 돌아갑니다.

온디맨드 전략 lowest-price
요청 용량 100
사용 전략 use-capacity-reservations-first
인스턴스 유형 c5.xlarge m5.xlarge r5.xlarge
사용 가능한 열린 용량 예약 10 50 50
온디맨드 요금 $ $$ $$$
프로비저닝된 인스턴스 100 - -
사용된 열린 용량 예약 10 - -
사용 가능한 열린 용량 예약 - 50 50

인스턴스 플릿이 시작된 후, describe-capacity-reservations를 실행하여 미사용 용량 예약이 얼마나 남았는지 확인할 수 있습니다.

먼저 열린 용량 예약을 사용하도록 인스턴스 플릿 구성

RunJobFlow 작업을 사용하여 인스턴스 플릿 기반 클러스터를 생성하는 경우 온디맨드 할당 전략을 lowest-price로 설정하고 CapacityReservationOptions에서 UsageStrategyuse-capacity-reservations-first로 설정합니다.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } } }

Amazon EMR CLI를 통해 먼저 용량 예약을 사용하여 인스턴스 플릿 기반 클러스터를 생성할 수도 있습니다.

aws emr create-cluster \ --name 'use-CR-first-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first}}'}

여기서

  • use-CR-first-cluster는 열린 용량 예약을 사용하는 클러스터 이름으로 바뀝니다.

  • subnet-22XXXX01은 서브넷 ID로 바뀝니다.

먼저 목표 용량 예약 사용

Amazon EMR 클러스터를 프로비저닝하는 경우 최저 가격 할당 전략을 재정의하고 먼저 사용 가능한 목표 용량 예약을 사용하도록 우선순위를 정할 수 있습니다. 이 경우 Amazon EMR은 시작 요청에 지정된 목표 용량 예약을 포함하는 모든 인스턴스 풀을 재평가하여 요청된 모든 코어 노드를 시작하기에 충분한 용량을 갖춘 최저 가격의 풀을 선택합니다. 목표 용량 예약을 사용하는 인스턴스 풀 중 코어 노드에 충분한 용량을갖춘 인스턴스 풀이 하나도 없는 경우 Amazon EMR은 앞서 설명한 최대한의 원칙으로 돌아갑니다. 즉, Amazon EMR은 시작 요청에 지정된 모든 인스턴스 풀을 재평가하여 요청된 모든 코어 노드를 시작하기에 충분한 용량을 갖춘 최저 가격의 풀을 선택합니다. 인스턴스 풀과 일치하는 사용 가능한 열린 용량 예약이 자동으로 적용됩니다. 하지만 목표 용량 예약은 미사용 상태로 남아 있습니다.

코어 노드가 프로비저닝되면 가용 영역이 선택되고 수정됩니다. Amazon EMR은 선택한 가용 영역에서 가장 저렴한 항목부터 시작해 모든 태스크 노드가 프로비저닝될 때까지 목표가 정해진 용량 예약이 있는 인스턴스 풀에 태스크 노드를 프로비저닝합니다. Amazon EMR은 선택한 가용 영역의 각 인스턴스 풀에서 사용 가능한 목표가 정해진 용량 예약을 먼저 사용하려고 합니다. 그러면 Amazon EMR은 필요한 경우에만 최저 가격 전략을 사용하여 나머지 태스크 노드를 프로비저닝합니다.

다음은 목표 용량 예약을 먼저 사용하기 위한 Amazon EMR 용량 할당 로직의 사용 사례입니다.

예제 1: 시작 요청에서 사용 가능한 목표 용량 예약이 있는 인스턴스 풀에 코어 노드를 위한 충분한 용량이 있는 경우

이 경우 Amazon EMR은 인스턴스 풀 가격에 관계없이 사용 가능한 목표 용량 예약을 통해 인스턴스 풀의 용량을 시작합니다. 따라서 모든 코어 노드가 프로비저닝될 때까지 최대한 목표 용량 예약이 사용됩니다.

온디맨드 전략 lowest-price
사용 전략 use-capacity-reservations-first
요청 용량 100
인스턴스 유형 c5.xlarge m5.xlarge r5.xlarge
사용 가능한 목표 용량 예약 - - 150
온디맨드 가격 $ $$ $$$
프로비저닝된 인스턴스 - - 100
사용된 목표 용량 예약 - - 100
사용 가능한 목표 용량 예약 - - 50
예제 2: 시작 요청에서 사용 가능한 목표 용량 예약이 있는 인스턴스 풀에 코어 노드를 위한 충분한 용량이 없는 경우
온디맨드 전략 lowest-price
요청 용량 100
사용 전략 use-capacity-reservations-first
인스턴스 유형 c5.xlarge m5.xlarge r5.xlarge
사용 가능한 목표 용량 예약 10 50 50
온디맨드 요금 $ $$ $$$
프로비저닝된 인스턴스 100 - -
사용된 목표 용량 예약 10 - -
사용 가능한 목표 용량 예약 - 50 50

인스턴스 플릿이 시작된 후, describe-capacity-reservations를 실행하여 미사용 용량 예약이 얼마나 남았는지 확인할 수 있습니다.

먼저 목표 용량 예약을 사용하도록 인스턴스 플릿 구성

RunJobFlow 작업을 사용하여 인스턴스 플릿 기반 클러스터를 생성하는 경우 온디맨드 할당 전략을 lowest-price로 설정하고 CapacityReservationOptions에서 UsageStrategyuse-capacity-reservations-first로, CapacityReservationOptions에서 CapacityReservationResourceGroupArn<your resource group ARN>으로 설정합니다. 자세한 내용은 Amazon EC2 사용 설명서의 용량 예약 사용을 참조하십시오.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup" } } }

여기에서 arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup은 리소스 그룹 ARN으로 바뀝니다.

Amazon EMR CLI를 사용하여 목표 용량 예약을 사용하여 인스턴스 플릿 기반 클러스터를 생성할 수도 있습니다.

aws emr create-cluster \ --name 'targeted-CR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,\ InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first,CapacityReservationResourceGroupArn=arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup}}'}

여기서

  • targeted-CR-cluster는 목표 용량 예약을 사용하는 클러스터의 이름으로 바꿉니다.

  • subnet-22XXXX01은 서브넷 ID로 바뀝니다.

  • arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup은 리소스 그룹 ARN으로 바뀝니다.

사용 가능한 열린 용량 예약의 사용 방지

Amazon EMR 클러스터를 시작할 때 열린 용량 예약이 예기치 않게 사용되는 것을 방지하려면 온디맨드 할당 전략을 lowest-price로, CapacityReservationOptionsCapacityReservationPreferencenone으로 설정합니다. 그렇지 않으면 Amazon EMR은 온디맨드 인스턴스의 용량 예약 기본 설정을 open으로 기본 설정하고, 최대한 사용 가능한 오픈 용량 예약을 사용하려고 합니다.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } } }

Amazon EMR CLI를 사용하여 열린 용량 예약을 사용하지 않고 인스턴스 플릿 기반 클러스터를 생성할 수도 있습니다.

aws emr create-cluster \ --name 'none-CR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=none}}'}

여기서

  • none-CR-cluster는 열린 용량 예약을 사용하지 않는 클러스터 이름으로 바뀝니다.

  • subnet-22XXXX01은 서브넷 ID로 바뀝니다.

용량 예약 사용 시나리오

다음 시나리오에서 용량 예약을 사용하면 이점을 얻을 수 있습니다.

시나리오 1: 용량 예약을 사용하여 장기 실행 클러스터 로테이션

장기 실행 클러스터를 로테이션할 때 프로비저닝하는 새 인스턴스의 인스턴스 유형 및 가용 영역에 대한 엄격한 요구 사항이 있을 수 있습니다. 용량 예약을 사용하면 용량 보장을 통해 중단 없이 클러스터 로테이션을 완료할 수 있습니다.

사용 가능한 용량 예약을 사용한 클러스터 로테이션
시나리오 2: 용량 예약을 사용하여 연속된 단기 클러스터 프로비저닝

용량 예약을 사용하여 개별 워크로드에 대해 연속 단기 클러스터 그룹을 프로비저닝함으로써 클러스터를 종료할 때 다음 클러스터가 용량 예약을 사용할 수 있습니다. 목표 용량 예약을 사용하여 의도한 클러스터만 용량 예약을 사용하도록 할 수 있습니다.

사용 가능한 용량 예약을 사용하는 단기 클러스터 프로비저닝