기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR 클러스터에 대한 균일한 인스턴스 그룹 구성
인스턴스 그룹 구성을 사용하는 경우 각 노드 유형(마스터, 코어 또는 작업)은 인스턴스에 대해 동일한 인스턴스 유형 및 구매 옵션으로 구성됩니다(온디맨드 또는 스팟). 인스턴스 그룹 생성 시 이러한 설정을 지정합니다. 나중에 변경할 수 없습니다. 하지만 동일한 유형 및 구매 옵션의 인스턴스를 코어 및 작업 인스턴스 그룹에 추가할 수 있습니다. 또한 인스턴스를 제거할 수도 있습니다.
클러스터의 온디맨드 인스턴스가 계정에서 사용할 수 있는 열린 용량 예약 속성(인스턴스 유형, 플랫폼, 테넌시 및 가용 영역)과 일치하면 용량 예약이 자동으로 적용됩니다. 프라이머리, 코어 및 태스크 노드에 대해 열린 용량 예약을 사용할 수 있습니다. 하지만 인스턴스 그룹을 사용하여 클러스터를 프로비저닝할 때 목표 용량 예약을 사용할 수 없으며, 속성이 일치하는 열린 용량 예약으로 시작하지 않도록 인스턴스를 막을 수도 없습니다. 목표 용량 예약을 사용하거나 인스턴스가 열린 용량 예약으로 시작되지 않도록 하려면 대신 인스턴스 플릿을 사용합니다. 자세한 내용은 Amazon EMR의 인스턴스 플릿에서 용량 예약 사용 단원을 참조하십시오.
클러스터를 생성한 후 다른 인스턴스 유형을 추가하려면 추가 작업 인스턴스 그룹을 추가하면 됩니다. 각 인스턴스 그룹에 대하여 다른 인스턴스 유형과 구매 옵션을 선택할 수 있습니다. 자세한 내용은 Amazon EMR 클러스터 조정을 사용하여 워크로드 변경에 맞게 조정 단원을 참조하십시오.
인스턴스를 시작할 때 온디맨드 인스턴스의 용량 예약 기본 설정은 기본적으로 open
으로 설정되며, 이를 통해 속성(인스턴스 유형, 플랫폼, 가용 영역)이 일치하는 모든 열린 용량 예약에서 실행됩니다. 온디맨드 용량 예약에 대한 자세한 내용은 Amazon EMR의 인스턴스 플릿에서 용량 예약 사용 섹션을 참조하세요.
이 단원에서는 균일한 인스턴스 그룹으로 클러스터를 만드는 방법에 대해 설명합니다. 인스턴스 수동 추가/제거 또는 자동 조정을 통한 기존 인스턴스 그룹 수정에 대한 자세한 내용은 Amazon EMR 클러스터 관리 단원을 참조하십시오.
콘솔을 사용하여 균일한 인스턴스 그룹 구성
AWS CLI 를 사용하여 균일한 인스턴스 그룹으로 클러스터 생성
AWS CLI를 사용하여 클러스터의 인스턴스 그룹 구성을 지정하려면 --instance-groups
파라미터와 함께 create-cluster
명령을 사용합니다. 인스턴스 그룹에 BidPrice
인수를 지정하지 않은 경우 Amazon EMR은 온디맨드 인스턴스 옵션을 가정합니다. 온디맨드 인스턴스 및 다양한 클러스터 옵션을 사용하여 균일한 인스턴스 그룹을 시작하는 create-cluster
명령의 예제를 보려면 명령줄에 aws emr create-cluster help
를 입력하거나 AWS CLI 명령 참조에서 create-cluster를 참조하세요.
를 사용하여 스팟 인스턴스 AWS CLI 를 사용하는 클러스터에서 균일한 인스턴스 그룹을 생성할 수 있습니다. 제공된 스팟 가격은 가용 영역에 따라 달라집니다. CLI 또는 API를 사용하는 경우 --ec2-attributes
파라미터의 SubnetID
인수 또는 AvailabilityZone
인수(EC2-classic 네트워크를 사용하는 경우)를 사용하여 가용 영역을 지정할 수 있습니다. 선택한 가용 영역이나 서브넷이 클러스터에 적용되므로 모든 인스턴스 그룹에 사용됩니다. 가용 영역이나 서브넷을 명시적으로 지정하지 않는 경우 Amazon EMR이 클러스터를 시작할 때 최저 스팟 가격으로 가용 영역을 선택합니다.
다음 예제에서는 모두 스팟 인스턴스를 사용하는 프라이머리, 코어 및 두 태스크 인스턴스 그룹을 생성하는 create-cluster
명령을 보여줍니다. myKey
를 Amazon EC2 키 페어 이름으로 바꿉니다.
참고
가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.
aws emr create-cluster --name "
MySpotCluster
" \ --release-labelemr-7.7.0
\ --use-default-roles \ --ec2-attributes KeyName=myKey
\ --instance-groups \ InstanceGroupType=MASTER
,InstanceType=m5.xlarge
,InstanceCount=1
,BidPrice=0.25
\ InstanceGroupType=CORE
,InstanceType=m5.xlarge
,InstanceCount=2
,BidPrice=0.03
\ InstanceGroupType=TASK
,InstanceType=m5.xlarge
,InstanceCount=4
,BidPrice=0.03
\ InstanceGroupType=TASK
,InstanceType=m5.xlarge
,InstanceCount=2
,BidPrice=0.04
CLI를 사용하여 인스턴스 그룹의 각 인스턴스 유형에 대해 고유한 사용자 지정 AMI를 지정하는 균일한 인스턴스 그룹 클러스터를 생성할 수 있습니다. 이렇게 하면 동일한 인스턴스 그룹에서 서로 다른 인스턴스 아키텍처를 사용할 수 있습니다. 각 인스턴스 유형은 아키텍처가 일치하는 사용자 지정 AMI를 사용해야 합니다. 예를 들어 x86_64 아키텍처 사용자 지정 AMI를 사용하여 m5.xlarge 인스턴스 유형을 구성하고, 대응하는 AWS AARCH64
(ARM) 아키텍처 사용자 지정 AMI를 사용하여 m6g.xlarge 인스턴스 유형을 구성할 수 있습니다.
다음 예제에서는 각각 고유한 사용자 지정 AMI를 사용하여 두 개의 인스턴스 유형으로 생성된 균일한 인스턴스 그룹 클러스터를 보여줍니다. 사용자 지정 AMI는 클러스터 수준이 아닌 인스턴스 유형 수준에서만 지정됩니다. 인스턴스 유형 AMI와 클러스터 수준의 AMI 간 충돌(이 충돌로 인해 클러스터가 시작되지 않음)을 방지하기 위해서입니다.
aws emr create-cluster --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-groups \ InstanceGroupType=MASTER,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456 \ InstanceGroupType=CORE,InstanceType=m6g.xlarge,InstanceCount=1,CustomAmiId=ami-234567
실행 중인 클러스터에 추가하는 인스턴스 그룹에 다중 사용자 지정 AMI를 추가할 수 있습니다. 다음 예제와 같이 add-instance-groups
명령과 함께 CustomAmiId
인수를 사용할 수 있습니다.
aws emr add-instance-groups --cluster-id j-123456 \ --instance-groups \ InstanceGroupType=Task,InstanceType=m5.xlarge,InstanceCount=1,CustomAmiId=ami-123456
Java SDK를 사용하여 인스턴스 그룹 생성
클러스터에 대해 인스턴스 그룹의 구성을 지정하는 InstanceGroupConfig
개체를 인스턴스화할 수 있습니다. 스팟 인스턴스를 사용하려면 withBidPrice
개체에 대해 withMarket
및 InstanceGroupConfig
속성을 설정합니다. 다음 코드는 스팟 인스턴스를 실행하는 프라이머리, 코어 및 태스크 인스턴스 그룹을 정의하는 방법을 보여줍니다.
InstanceGroupConfig instanceGroupConfigMaster = new InstanceGroupConfig() .withInstanceCount(1) .withInstanceRole("MASTER") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.25"); InstanceGroupConfig instanceGroupConfigCore = new InstanceGroupConfig() .withInstanceCount(4) .withInstanceRole("CORE") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.03"); InstanceGroupConfig instanceGroupConfigTask = new InstanceGroupConfig() .withInstanceCount(2) .withInstanceRole("TASK") .withInstanceType("m4.large") .withMarket("SPOT") .withBidPrice("0.10");