여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 시작 - Amazon EMR

여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 시작

이 주제에서는 여러 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작하기 위한 구성 세부 정보와 예제를 제공합니다.

참고

Amazon EMR은 복수의 프라이머리 노드가 있는 모든 클러스터에 대해 종료 보호를 자동으로 활성화하고 클러스터를 생성할 때 사용자가 제공하는 모든 자동 종료 설정을 재정의합니다. 여러 프라이머리 노드가 있는 클러스터를 종료하려면 먼저 클러스터 속성을 수정하여 종료 보호를 비활성화해야 합니다. 지침은 여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 종료 단원을 참조하십시오.

사전 조건

  • 퍼블릭 및 프라이빗 VPC 서브넷 모두에서 여러 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작할 수 있습니다. EC2-Classic은 지원되지 않습니다. 퍼블릭 서브넷에서 여러 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작하려면 콘솔에서 IPv4 자동 할당을 선택하거나 다음 명령을 실행하여 퍼블릭 IP 주소를 수신하도록 이 서브넷의 인스턴스를 활성화해야 합니다. 22XXXX01을 해당 서브넷 ID로 바꿉니다.

    aws ec2 modify-subnet-attribute --subnet-id subnet-22XXXX01 --map-public-ip-on-launch
  • 여러 프라이머리 노드가 있는 Amazon EMR 클러스터에서 Hive, Hue 또는 Oozie를 실행하려면 외부 메타스토어를 생성해야 합니다. 자세한 내용은 Hive용 외부 메타스토어 구성, Amazon RDS에서 원격 데이터베이스와 함께 Hue 사용 또는 Apache Ozie를 참조하세요.

  • 클러스터에서 Kerberos 인증을 사용하려면 외부 KDC를 구성해야 합니다. 자세한 내용은 Amazon EMR에서 Kerberos 구성을 참조하세요.

여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 시작

인스턴스 그룹 또는 인스턴스 플릿을 사용할 경우, 복수의 프라이머리 노드가 있는 클러스터를 시작할 수 있습니다. 복수의 프라이머리 노드가 포함된 인스턴스 그룹을 사용하는 경우에는 프라이머리 노드 인스턴스 그룹에 대해 인스턴스 수 값 3을 지정해야 합니다. 복수의 프라이머리 노드와 함께 인스턴스 플릿을 사용하는 경우에는 3TargetOnDemandCapacity, 프라이머리 인스턴스 플릿에 대한 0TargetSpotCapacity 및 프라이머리 플릿에 대해 구성하는 각 인스턴스 유형에 대한 1WeightedCapacity를 지정해야 합니다.

다음 예에서는 인스턴스 그룹과 인스턴스 플릿이 모두 포함된 기본 AMI 또는 사용자 지정 AMI를 사용하여 클러스터를 시작하는 방법을 보여줍니다.

참고

AWS CLI를 사용하여 여러 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작할 때 서브넷 ID를 지정해야 합니다. 다음 예에서 22XXXX0122XXXX02를 해당 서브넷 ID로 바꿉니다.

Default AMI, instance groups
예시 - 기본 AMI를 사용하여 여러 프라이머리 노드가 있는 Amazon EMR 인스턴스 그룹 클러스터 시작
aws emr create-cluster \ --name "ha-cluster" \ --release-label emr-6.15.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=3,InstanceType=m5.xlarge InstanceGroupType=CORE,InstanceCount=4,InstanceType=m5.xlarge \ --ec2-attributes KeyName=ec2_key_pair_name,InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-22XXXX01 \ --service-role EMR_DefaultRole \ --applications Name=Hadoop Name=Spark
Default AMI, instance fleets
예시 - 기본 AMI를 사용하여 여러 프라이머리 노드가 있는 Amazon EMR 인스턴스 플릿 클러스터 시작
aws emr create-cluster \ --name "ha-cluster" \ --release-label emr-6.15.0 \ --instance-fleets '[ { "InstanceFleetType": "MASTER", "TargetOnDemandCapacity": 3, "TargetSpotCapacity": 0, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price" } }, "InstanceTypeConfigs": [ { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.xlarge" }, { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.2xlarge" }, { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.4xlarge" } ], "Name": "Master - 1" }, { "InstanceFleetType": "CORE", "TargetOnDemandCapacity": 5, "TargetSpotCapacity": 0, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price" } }, "InstanceTypeConfigs": [ { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.xlarge" }, { "WeightedCapacity": 2, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.2xlarge" }, { "WeightedCapacity": 4, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.4xlarge" } ], "Name": "Core - 2" } ]' \ --ec2-attributes '{"InstanceProfile":"EMR_EC2_DefaultRole","SubnetIds":["subnet-22XXXX01", "subnet-22XXXX02"]}' \ --service-role EMR_DefaultRole \ --applications Name=Hadoop Name=Spark
Custom AMI, instance groups
예시 - 사용자 지정 AMI를 사용하여 여러 프라이머리 노드가 있는 Amazon EMR 인스턴스 그룹 클러스터 시작
aws emr create-cluster \ --name "custom-ami-ha-cluster" \ --release-label emr-6.15.0 \ --instance-groups InstanceGroupType=MASTER,InstanceCount=3,InstanceType=m5.xlarge InstanceGroupType=CORE,InstanceCount=4,InstanceType=m5.xlarge \ --ec2-attributes KeyName=ec2_key_pair_name,InstanceProfile=EMR_EC2_DefaultRole,SubnetId=subnet-22XXXX01 \ --service-role EMR_DefaultRole \ --applications Name=Hadoop Name=Spark \ --custom-ami-id ami-MyAmiID
Custom AMI, instance fleets
예시 - 사용자 지정 AMI를 사용하여 여러 프라이머리 노드가 있는 Amazon EMR 인스턴스 플릿 클러스터 시작
aws emr create-cluster \ --name "ha-cluster" \ --release-label emr-6.15.0 \ --instance-fleets '[ { "InstanceFleetType": "MASTER", "TargetOnDemandCapacity": 3, "TargetSpotCapacity": 0, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price" } }, "InstanceTypeConfigs": [ { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.xlarge" }, { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.2xlarge" }, { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.4xlarge" } ], "Name": "Master - 1" }, { "InstanceFleetType": "CORE", "TargetOnDemandCapacity": 5, "TargetSpotCapacity": 0, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price" } }, "InstanceTypeConfigs": [ { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.xlarge" }, { "WeightedCapacity": 2, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.2xlarge" }, { "WeightedCapacity": 4, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.4xlarge" } ], "Name": "Core - 2" } ]' \ --ec2-attributes '{"InstanceProfile":"EMR_EC2_DefaultRole","SubnetIds":["subnet-22XXXX01", "subnet-22XXXX02"]}' \ --service-role EMR_DefaultRole \ --applications Name=Hadoop Name=Spark \ --custom-ami-id ami-MyAmiID

여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 종료

여러 프라이머리 노드가 있는 Amazon EMR 클러스터를 종료하려면 클러스터를 종료하기 전에 다음 예제와 같이 종료 방지 기능을 비활성화해야 합니다. j-3KVTXXXXXX7UG를 클러스터 ID로 바꿉니다.

aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-termination-protected aws emr terminate-clusters --cluster-id j-3KVTXXXXXX7UG