启动具有多个主节点的 Amazon EMR 集群 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

注意

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

先决条件

  • 您可以同时在公有 VPC 子网和私有 VPC 子网中启动具有多个主节点的 Amazon EMR 集群。不支持 EC2-Classic。要在公有子网中启动具有多个主节点的 Amazon EMR 集群,必须通过在控制台中选择 Auto-assign IPv4(自动分配 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 Oozie

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

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

启动具有多个主节点的 Amazon EMR 集群时,必须为主节点实例组指定实例计数值 3。以下示例演示了如何使用默认 AMI 或自定义 AMI 启动集群。

注意

使用 Amazon CLI 启动具有多个主节点的 Amazon EMR 集群时,必须指定子网 ID。在以下示例中将 22XXXX01 替换为您的子网 ID。

例 – 使用默认 AMI 启动具有多个主节点的 Amazon EMR 集群
aws emr create-cluster \ --name "ha-cluster" \ --release-label emr-5.36.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
例 – 使用自定义 AMI 启动具有多个主节点的 Amazon EMR 集群
aws emr create-cluster \ --name "custom-ami-ha-cluster" \ --release-label emr-5.36.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 \ --custom-ami-id ami-MyAmiID
例 – 通过外部 Hive 元存储启动具有多个主节点的 Amazon EMR 集群

要在具有多个主节点的 Amazon EMR 集群上运行 Hive,您必须为 Hive 指定外部元存储,如下例所示。

  1. 创建一个包含 Hive 元数据仓凭证的临时 hiveConfiguration.json 文件。

    [ { "Classification": "hive-site", "Properties": { "javax.jdo.option.ConnectionURL": "jdbc:mysql:\/\/hostname:3306\/hive?createDatabaseIfNotExist=true", "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver", "javax.jdo.option.ConnectionUserName": "username", "javax.jdo.option.ConnectionPassword": "password" } } ]
  2. 启动具有 Hive 元数据仓的集群。

    aws emr create-cluster \ --name "ha-cluster-with-hive-metastore" \ --release-label emr-5.36.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 Name=Hive \ --configurations ./hiveConfiguration.json

终止具有多个主节点的 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