Amazon ec2 在启动群集时,如何指定主节点的磁盘空间(卷大小)?

Amazon ec2 在启动群集时,如何指定主节点的磁盘空间(卷大小)?,amazon-ec2,amazon-emr,Amazon Ec2,Amazon Emr,此文档显示了基于实例大小的默认卷大小: 我的问题是如何在启动集群时指定更大的卷大小 目前,我正在群集启动并运行后从EMR页面手动更改它: 您可以指定volumspecificationJSON来完成此操作。我没有为主节点尝试此操作。我曾将其用于核心节点和任务节点,但我相信这个概念也可以扩展到主节点 VolumeSpecificationJSON中的字段是自解释的,因此我不在这里添加它们的解释。你可以在这里读 我正在添加一个代码片段,可以帮助您准确地使用此配置。 我在代码中使用标准的bot3库。

此文档显示了基于实例大小的默认卷大小:

我的问题是如何在启动集群时指定更大的卷大小

目前,我正在群集启动并运行后从EMR页面手动更改它:

您可以指定
volumspecification
JSON来完成此操作。我没有为主节点尝试此操作。我曾将其用于核心节点和任务节点,但我相信这个概念也可以扩展到主节点

VolumeSpecification
JSON中的字段是自解释的,因此我不在这里添加它们的解释。你可以在这里读

我正在添加一个代码片段,可以帮助您准确地使用此配置。 我在代码中使用标准的
bot3库
。我有一个生成EMR集群的lambda函数,但是有一个生成EMR的lambda函数是,不是必须的,,您可以选择自己的替代方案。 代码片段是:

from datetime import datetime
import boto3
'''
    This code snippet is used to create an EMR cluster.
'''

def create_emr_cluster(event, context):
    conn = boto3.client("emr")
    today = datetime.today().strftime('%Y-%m-%d')
    cluster_id = conn.run_job_flow(
        Name='Your_EMR_name',
        ServiceRole='EMR_DefaultRole',
        JobFlowRole='EMR_EC2_DefaultRole',
        VisibleToAllUsers=True,
        LogUri='s3://your-s3-path-where-you-want-cluster-logs/%s/' % today,
        ReleaseLabel='emr-5.17.0',
        ScaleDownBehavior='TERMINATE_AT_TASK_COMPLETION',
        Applications=[{'Name': 'Spark'},
                      {'Name': 'Hadoop'},
                      {'Name': 'Hive'},
                      {'Name': 'Hue'}]
        Instances={
            'KeepJobFlowAliveWhenNoSteps': False,
            'Ec2KeyName': 'your-key-name-here',
            'Ec2SubnetId': 'your-subnet-id',
            'InstanceFleets': [
                {'Name': 'Master Node',
                 'InstanceFleetType': 'MASTER',
                 'TargetOnDemandCapacity': 1,
                 'InstanceTypeConfigs': [{
                     'InstanceType': 'c4.xlarge'
                 }]
                 }, {
                    'Name': 'Core Node',
                    'InstanceFleetType': 'CORE',
                    'TargetOnDemandCapacity': 1,
                    'InstanceTypeConfigs': [{
                        'InstanceType': 'r5.2xlarge',
                        "EbsConfiguration": {
                            "EbsBlockDeviceConfigs": [
                                {
                                    "VolumeSpecification": {
                                        "SizeInGB": 64,
                                        "VolumeType": "gp2"
                                    },
                                    "VolumesPerInstance": 1
                                }
                            ]
                        }
                    }]
                }, {
                    'Name': 'Task Nodes',
                    'InstanceFleetType': 'TASK',
                    'TargetSpotCapacity': 100,
                    'InstanceTypeConfigs': [{
                        'InstanceType': 'r5.2xlarge',
                        'BidPriceAsPercentageOfOnDemandPrice': 50,
                        'WeightedCapacity': 16,
                        "EbsConfiguration": {
                            "EbsBlockDeviceConfigs": [
                                {
                                    "VolumeSpecification": {
                                        "SizeInGB": 32,
                                        "VolumeType": "gp2"
                                    },
                                    "VolumesPerInstance": 1
                                }
                            ]
                        }
                    }, {
                        'InstanceType': 'r5.4xlarge',
                        'BidPriceAsPercentageOfOnDemandPrice': 50,
                        'WeightedCapacity': 40,
                        "EbsConfiguration": {
                            "EbsBlockDeviceConfigs": [
                                {
                                    "VolumeSpecification": {
                                        "SizeInGB": 64,
                                        "VolumeType": "gp2"
                                    },
                                    "VolumesPerInstance": 1
                                }
                            ]
                        }
                    }]

                }]
        }
    )
    return cluster_id['JobFlowId']