

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 启动具有多个主节点的 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 子网和私有 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 Oozie](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`。使用具有多个主节点的*实例集*时，必须为主实例集将 `TargetOnDemandCapacity` 指定为 `3`，将 `TargetSpotCapacity` 指定为 `0`，并为您为主实例集配置的每种实例类型将 `WeightedCapacity` 指定为 `1`。

 以下示例演示了如何使用默认 AMI 或同时包含实例组和实例集的自定义 AMI 启动集群。

**注意**  
使用 AWS CLI启动具有多个主节点的 Amazon EMR 集群时，必须指定子网 ID。在以下示例中*22XXXX02 *，将*22XXXX01*和替换为您的子网 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 集群，必须在终止集群之前禁用终止保护，如下例所示。使用您的集群 ID 替换 *j-3KVTXXXXXX7UG*。

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