启动具有多个主节点的 Amazon EMR 集群 - Amazon EMR

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

启动具有多个主节点的 Amazon EMR 集群

本主题提供启动具有多个主节点的 Amazon EMR 集群的配置详细信息和示例。

注意

Amazon EMR 会自动为具有多个主节点的所有集群启用终止保护,并覆盖您在创建集群时提供的任何自动终止设置。要关闭具有多个主节点的集群,您必须先修改集群属性,才能禁用终止保护。有关说明,请参阅 终止具有多个主节点的 Amazon EMR 集群

先决条件

  • 您可以在公有子网和私有VPC子网中启动包含多个主节点的 Amazon EMR 集群。EC2-不支持经典版。要启动在公有子网中包含多个主节点的 Amazon EMR 集群,您必须通过在控制台中选择自动分配或运行以下命令来允许该子网IPv4中的实例接收公有 IP 地址。Replace(替换) 22XXXX01 使用您的子网 ID。

    aws ec2 modify-subnet-attribute --subnet-id subnet-22XXXX01 --map-public-ip-on-launch
  • 要在具有多个主节点的亚马逊EMR集群上运行 Hive、Hue 或 Oozie,您必须创建一个外部元数据仓。有关更多信息,请参阅为 Hive 配置外部元数据库、在 Ama RDS zon 中将 H ue 与远程数据库配合使用或 A p ache Oozie。

  • 要在集群中使用 Kerberos 身份验证,必须配置外部身份验证。KDC有关更多信息,请参阅在亚马逊上配置 Kerberos。EMR

启动具有多个主节点的 Amazon EMR 集群

使用实例组或实例集时,您可以启动具有多个主节点的集群。使用具有多个主节点的实例组时,必须为主节点实例组指定实例计数值 3。使用具有多个主节点的实例集时,必须为主实例集将 TargetOnDemandCapacity 指定为 3,将 TargetSpotCapacity 指定为 0,并为您为主实例集配置的每种实例类型将 WeightedCapacity 指定为 1

以下示例演示如何使用默认集群AMI或自定义AMI实例组和实例队列启动集群:

注意

当您使用启动包含多个主节点的 Amazon EMR 集群时,必须指定子网 ID AWS CLI。Replace(替换) 22XXXX01 以及 22XXXX02 在以下示例中使用您的子网 ID。

Default AMI, instance groups
例 示例-使用默认模式启动包含多个主节点的 Amazon EMR 实例组集群 AMI
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
例 示例-使用默认模式启动包含多个主节点的 Amazon EMR 实例队列集群 AMI
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
例 示例-使用自定义启动具有多个主节点的 Amazon EMR 实例组集群 AMI
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
例 示例-使用自定义启动包含多个主节点的 Amazon EMR 实例队列集群 AMI
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 集群,您必须在终止集群之前禁用终止保护,如下例所示。Replace(替换) j-3KVTXXXXXX7UG 使用您的集群 ID。

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