Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

先决条件

  • 您可以在公有 VPC 子网和私有 VPC 子网中启动 具有多个主节点的 EMR 集群。要在公有子网中启动 具有多个主节点的 EMR 集群,必须通过在控制台中选择自动分配 IPv4 或运行以下命令来启用此子网中的实例以接收公有 IP 地址。将 22XXXX01 替换为您的子网 ID。

    aws ec2 modify-subnet-attribute --subnet-id subnet-22XXXX01 --map-public-ip-on-launch

    注意

    不支持 EC2-Classic

  • 要在 具有多个主节点的 EMR 集群 上运行 Hive,您必须为 Hive 创建外部元数据仓。有关更多信息,请参阅为 Hive 配置外部元数据仓

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

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

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

注意

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

例 –使用默认 AMI 启动 具有多个主节点的 EMR 集群

aws emr create-cluster \ --name "ha-cluster" \ --release-label emr-5.27.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

例 –使用自定义 AMI 启动 具有多个主节点的 EMR 集群

aws emr create-cluster \ --name "custom-ami-ha-cluster" \ --release-label emr-5.27.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

例 –启动具有外部 Hive 元数据仓的 具有多个主节点的 EMR 集群

要在 具有多个主节点的 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.27.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 Name=Hive \ --configurations ./hiveConfiguration.json

终止具有多个主节点的 EMR 集群

要终止 具有多个主节点的 EMR 集群,必须在终止集群之前禁用终止保护,如以下示例所示。将 j-3KVTXXXXXX7UG 替换为您的集群 ID。

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