

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

# 여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 시작
<a name="emr-plan-ha-launch"></a>

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

**참고**  
Amazon EMR은 복수의 프라이머리 노드가 있는 모든 클러스터에 대해 종료 보호를 자동으로 활성화하고 클러스터를 생성할 때 사용자가 제공하는 모든 자동 종료 설정을 재정의합니다. 여러 프라이머리 노드가 있는 클러스터를 종료하려면 먼저 클러스터 속성을 수정하여 종료 보호를 비활성화해야 합니다. 지침은 [여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 종료](#emr-plan-ha-launch-terminate) 섹션을 참조하세요.

## 사전 조건
<a name="emr-plan-ha-launch-config"></a>
+ 퍼블릭 및 프라이빗 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용 외부 메타스토어 구성](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-metastore-external-hive.html), [Amazon RDS에서 원격 데이터베이스와 함께 Hue 사용](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/hue-rds.html) 또는 [Apache Ozie](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-oozie.html)를 참조하세요.
+ 클러스터에서 Kerberos 인증을 사용하려면 외부 KDC를 구성해야 합니다. 자세한 내용은 [Amazon EMR에서 Kerberos 구성](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-kerberos-configure.html)을 참조하세요.

## 여러 프라이머리 노드를 포함하는 Amazon EMR 클러스터 시작
<a name="emr-plan-ha-launch-examples"></a>

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

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

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

------
#### [ Default AMI, instance groups ]

**Example 예시 - 기본 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 ]

**Example 예시 - 기본 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 ]

**Example 예시 - 사용자 지정 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 ]

**Example 예시 - 사용자 지정 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 클러스터 종료
<a name="emr-plan-ha-launch-terminate"></a>

여러 프라이머리 노드가 있는 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
```