启动具有多个主节点 (master node) 的 Amazon EMR 集群
本主题提供了启动具有多个主节点 (master node) 的 EMR 集群的配置详细信息和示例。
Amazon EMR 会为具有多个主节点的所有集群自动启用终止保护,并覆盖您在创建集群时应用的所有自动终止设置。要关闭具有多个主节点的集群,您必须先修改集群属性,才能禁用终止保护。有关说明,请参阅终止具有多个主节点 (master node) 的 Amazon EMR 集群。
先决条件
您可以同时在公有 VPC 子网和私有 VPC 子网中启动具有多个主节点的 EMR 集群。不支持 EC2-Classic。要在公有子网中启动具有多个主节点的 EMR 集群,必须通过在控制台中选择 Auto-assign IPv4 (自动分配 IPv4) 或运行以下命令来启用此子网中的实例,以接收公有 IP 地址。将
22XXXX01
替换为您的子网 ID。aws ec2 modify-subnet-attribute --subnet-id subnet-
22XXXX01
--map-public-ip-on-launch要在具有多个主节点的 EMR 集群上运行 Hive、Hue 或 Oozie,您必须创建外部元存储。有关更多信息,请参阅为 Hive 配置外部元存储、在 Amazon RDS 中将 Hue 与远程数据库结合使用或者 Apache Oozie。
要在集群中使用 Kerberos 身份验证,您必须配置外部 KDC。有关更多信息,请参阅在 Amazon Amazon EMR 上配置 Kerberos。
启动具有多个主节点 (master node) 的 Amazon EMR 集群
启动具有多个主节点 (master node) 的 EMR 集群时,必须为主节点 (master node) 实例组指定实例计数值 3。以下示例演示了如何使用默认 AMI 或自定义 AMI 启动集群。
使用 Amazon CLI 启动具有多个主节点的 EMR 集群时,必须指定子网 ID。在以下示例中将 22XXXX01
替换为您的子网 ID。
例 – 使用默认 AMI 启动具有多个主节点的 EMR 集群
aws emr create-cluster \ --name "ha-cluster" \ --release-label emr-5.36.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.36.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 指定外部元存储,如以下示例所示。
创建一个包含 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" } } ]
启动具有 Hive 元数据仓的集群。
aws emr create-cluster \ --name "ha-cluster-with-hive-metastore" \ --release-label emr-5.36.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
终止具有多个主节点 (master node) 的 Amazon EMR 集群
要终止具有多个主节点 (master node) 的 EMR 集群,必须在终止集群之前禁用终止保护,如以下示例所示。将 j-3KVTXXXXXX7UG
替换为您的集群 ID。
aws emr modify-cluster-attributes --cluster-id
j-3KVTXXXXXX7UG
--no-termination-protected aws emr terminate-clusters --cluster-idj-3KVTXXXXXX7UG