기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR과 EC2 배치 그룹 통합
Amazon EC2에서 Amazon EMR의 여러 프라이머리 노드 클러스터를 시작하는 경우 배치 그룹 전략을 사용하여 하드웨어 장애로부터 보호하기 위해 프라이머리 노드 인스턴스를 배포하는 방법을 지정할 수 있습니다.
배치 그룹 전략은 여러 프라이머리 노드 클러스터의 옵션으로 Amazon EMR 버전 5.23.0부터 지원됩니다. 현재 배치 그룹 전략에서는 프라이머리 노드 유형만 지원되며 해당 프라이머리 노드에는 SPREAD
전략이 적용됩니다. SPREAD
전략은 하드웨어 장애 발생 시 여러 프라이머리 노드의 손실을 방지하기 위해 별도의 기본 하드웨어에 작은 그룹의 인스턴스를 배치합니다. 요청을 이행하기에 충분한 고유 하드웨어가 없으면 인스턴스 시작 요청에 실패할 수 있습니다. EC2 배치 전략 및 제한 사항에 대한 자세한 내용은 EC2 Linux 인스턴스용 사용 설명서에서 배치 그룹을 참조하세요.
Amazon EC2에는 AWS 리전별로 시작할 수 있는 배치 그룹 전략 지원 클러스터 500개로 초기 제한이 있습니다. AWS 지원팀에 문의하여 허용되는 배치 그룹 수 증가를 요청합니다. Amazon EMR이 Amazon EMR 배치 그룹 전략에 연결하는 키-값 페어를 추적하여 Amazon EMR이 생성하는 EC2 배치 그룹을 식별할 수 있습니다. EC2 클러스터 인스턴스 유형에 대한 자세한 내용은 Amazon EC2에서 클러스터 인스턴스 보기 섹션을 참조하세요.
배치 그룹 관리형 정책을 Amazon EMR 역할에 연결
배치 그룹 전략에는 Amazon EMR이 Amazon EC2에 배치 그룹을 생성, 삭제 및 설명할 수 있도록 허용하는 관리형 정책(AmazonElasticMapReducePlacementGroupPolicy
)이 필요합니다. 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작하기 전에 Amazon EMR의 서비스 역할에 AmazonElasticMapReducePlacementGroupPolicy
를 연결해야 합니다.
배치 그룹 관리형 정책 대신 Amazon EMR 서비스 역할에 AmazonEMRServicePolicy_v2
관리형 정책을 연결할 수도 있습니다. AmazonEMRServicePolicy_v2
에서는 동일한 Amazon EC2의 배치 그룹에 대해 AmazonElasticMapReducePlacementGroupPolicy
와 동일한 액세스를 허용합니다. 자세한 내용은 Amazon EMR의 서비스 역할(EMR 역할) 단원을 참조하십시오.
AmazonElasticMapReducePlacementGroupPolicy
관리형 정책은 Amazon EMR에서 생성 및 관리하는 다음과 같은 JSON 텍스트입니다.
AmazonElasticMapReducePlacementGroupPolicy
관리형 정책은 자동으로 업데이트되므로 여기 표시된 정책은 최신 상태가 아닐 수 있습니다. AWS 관리 콘솔을 사용하여 현재 정책을 봅니다.
- JSON
-
-
{
"Version":"2012-10-17",
"Statement":[
{
"Resource":"*",
"Effect":"Allow",
"Action":[
"ec2:DeletePlacementGroup",
"ec2:DescribePlacementGroups"
]
},
{
"Resource":"arn:aws:ec2:*:*:placement-group/pg-*",
"Effect":"Allow",
"Action":[
"ec2:CreatePlacementGroup"
]
}
]
}
배치 그룹 전략을 사용하여 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터 시작
배치 그룹 전략을 사용하여 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작하려면 배치 그룹 관리형 정책 AmazonElasticMapReducePlacementGroupPolicy
를 Amazon EMR 역할에 연결합니다. 자세한 내용은 배치 그룹 관리형 정책을 Amazon EMR 역할에 연결 단원을 참조하십시오.
이 역할을 사용하여 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작할 때마다 Amazon EMR은 프라이머리 노드에 SPREAD
전략을 적용하여 클러스터를 시작하려고 시도합니다. 배치 그룹 관리형 정책 AmazonElasticMapReducePlacementGroupPolicy
이 연결되지 않은 역할을 사용하는 경우 Amazon EMR은 배치 그룹 전략 없이 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작하려고 합니다.
Amazon EMR API 또는 CLI를 사용하여 placement-group-configs
파라미터가 포함된 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 시작하는 경우, Amazon EMR 역할에 배치 그룹 관리형 정책 AmazonElasticMapReducePlacementGroupPolicy
가 연결된 경우에만 Amazon EMR이 클러스터를 시작합니다. Amazon EMRrole에 정책이 연결되어 있지 않은 경우 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터가 시작되지 않습니다.
- Amazon EMR API
-
예 – 배치 그룹 전략을 사용하여 Amazon EMR API에서 제공되는 여러 프라이머리 노드가 있는 인스턴스 그룹 클러스터를 시작합니다.
RunJobflow 작업을 사용하여 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 생성하는 경우 PlacementGroupConfigs
속성을 다음과 같이 설정합니다. 현재 MASTER
인스턴스 역할은 자동으로 배치 그룹 전략으로 SPREAD
를 사용합니다.
{
"Name":"ha-cluster",
"PlacementGroupConfigs":[
{
"InstanceRole":"MASTER"
}
],
"ReleaseLabel": emr-6.15.0,
"Instances":{
"ec2SubnetId":"subnet-22XXXX01",
"ec2KeyName":"ec2_key_pair_name",
"InstanceGroups":[
{
"InstanceCount":3,
"InstanceRole":"MASTER",
"InstanceType":"m5.xlarge"
},
{
"InstanceCount":4,
"InstanceRole":"CORE",
"InstanceType":"m5.xlarge"
}
]
},
"JobFlowRole":"EMR_EC2_DefaultRole",
"ServiceRole":"EMR_DefaultRole"
}
-
ha-cluster
를 고가용성 클러스터 이름으로 바꿉니다.
-
subnet-22XXXX01
을 사용자 서브넷 ID로 바꿉니다.
-
ec2_key_pair_name
을 이 클러스터의 EC2 키 페어 이름으로 바꿉니다. EC2 키 페어는 선택 사항이고 SSH를 사용하여 클러스터에 액세스하려는 경우에만 필수입니다.
- AWS CLI
-
예 – 배치 그룹 전략을 사용하여 AWS Command Line Interface에서 제공되는 여러 프라이머리 노드가 있는 인스턴스 플릿 클러스터를 시작합니다.
RunJobflow 작업을 사용하여 복수의 프라이머리 노드가 있는 Amazon EMR 클러스터를 생성하는 경우 PlacementGroupConfigs
속성을 다음과 같이 설정합니다. 현재 MASTER
인스턴스 역할은 자동으로 배치 그룹 전략으로 SPREAD
를 사용합니다.
aws emr create-cluster \
--name "ha-cluster" \
--placement-group-configs InstanceRole=MASTER \
--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 '{
"KeyName": "ec2_key_pair_name",
"InstanceProfile": "EMR_EC2_DefaultRole",
"SubnetIds": [
"subnet-22XXXX01",
"subnet-22XXXX02"
]
}' \
--service-role EMR_DefaultRole \
--applications Name=Hadoop Name=Spark
-
ha-cluster
를 고가용성 클러스터 이름으로 바꿉니다.
-
ec2_key_pair_name
을 이 클러스터의 EC2 키 페어 이름으로 바꿉니다. EC2 키 페어는 선택 사항이고 SSH를 사용하여 클러스터에 액세스하려는 경우에만 필수입니다.
-
subnet-22XXXX01
및 subnet-22XXXX02
를 서브넷 ID로 교체합니다.
배치 그룹 전략 없이 여러 프라이머리 노드가 있는 클러스터 시작
여러 프라이머리 노드가 있는 클러스터에서 배치 그룹 전략 없이 프라이머리 노드를 시작하려면 다음 중 하나를 수행해야 합니다.
- Amazon EMR API
-
예 - Amazon EMRAPI를 사용하여 배치 그룹 전략 없이 여러 프라이머리 노드가 있는 클러스터 시작.
RunJobflow 작업을 사용하여 여러 프라이머리 노드가 있는 클러스터를 생성하는 경우 PlacementGroupConfigs
속성을 다음과 같이 설정합니다.
{
"Name":"ha-cluster",
"PlacementGroupConfigs":[
{
"InstanceRole":"MASTER",
"PlacementStrategy":"NONE"
}
],
"ReleaseLabel":"emr-5.30.1",
"Instances":{
"ec2SubnetId":"subnet-22XXXX01",
"ec2KeyName":"ec2_key_pair_name",
"InstanceGroups":[
{
"InstanceCount":3,
"InstanceRole":"MASTER",
"InstanceType":"m5.xlarge"
},
{
"InstanceCount":4,
"InstanceRole":"CORE",
"InstanceType":"m5.xlarge"
}
]
},
"JobFlowRole":"EMR_EC2_DefaultRole",
"ServiceRole":"EMR_DefaultRole"
}
-
ha-cluster
를 고가용성 클러스터 이름으로 바꿉니다.
-
subnet-22XXXX01
을 사용자 서브넷 ID로 바꿉니다.
-
ec2_key_pair_name
을 이 클러스터의 EC2 키 페어 이름으로 바꿉니다. EC2 키 페어는 선택 사항이고 SSH를 사용하여 클러스터에 액세스하려는 경우에만 필수입니다.
- Amazon EMR CLI
-
예 - Amazon EMRCLI를 사용하여 배치 그룹 전략 없이 여러 프라이머리 노드가 있는 클러스터 시작.
RunJobflow 작업을 사용하여 여러 프라이머리 노드가 있는 클러스터를 생성하는 경우 PlacementGroupConfigs
속성을 다음과 같이 설정합니다.
aws emr create-cluster \
--name "ha-cluster" \
--placement-group-configs InstanceRole=MASTER,PlacementStrategy=NONE \
--release-label emr-5.30.1 \
--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
-
ha-cluster
를 고가용성 클러스터 이름으로 바꿉니다.
-
subnet-22XXXX01
을 사용자 서브넷 ID로 바꿉니다.
-
ec2_key_pair_name
을 이 클러스터의 EC2 키 페어 이름으로 바꿉니다. EC2 키 페어는 선택 사항이고 SSH를 사용하여 클러스터에 액세스하려는 경우에만 필수입니다.
여러 프라이머리 노드가 있는 클러스터에 연결된 배치 그룹 전략 구성 확인
Amazon EMR 클러스터 설명 API를 사용하여 여러 프라이머리 노드가 있는 클러스터에 연결된 배치 그룹 전략 구성을 확인할 수 있습니다.
aws emr describe-cluster --cluster-id "j-xxxxx"
{
"Cluster":{
"Id":"j-xxxxx",
...
...
"PlacementGroups":[
{
"InstanceRole":"MASTER",
"PlacementStrategy":"SPREAD"
}
]
}
}