amazon ec2: ¿Cómo especifico el espacio en disco (tamaño del volumen) de un nodo maestro al activar un clúster?

CorePress2024-01-24  7

Esta documentación muestra los tamaños de volumen predeterminados según el tamaño de la instancia: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-storage.html

Mi pregunta es ¿cómo especifico que el tamaño del volumen sea mayor al iniciar el clúster?

Actualmente, lo estoy cambiando manualmente desde la página EMR después de que el clúster esté en funcionamiento:



------------------------------------

Puede especificar el JSON de especificación de volumen para realizar esto. No he probado esto para el nodo maestro. Lo había usado para el nodo central y el nodo de tareas, pero creo que este concepto también se puede extender al nodo maestro.

El campods dentro del JSON de especificación de volumen se explican por sí mismos, por lo que no agregaré su explicación aquí. Puedes leerlos aquí Explicación de la especificación de volumen

Estoy agregando un fragmento de código que puede ayudarle a utilizar exactamente esta configuración. Estoy usando la biblioteca boto3 estándar en mi código. Tengo una función lambda que genera el clúster EMR, pero tener una función lambda para generar EMR no es obligatorio y usted puede elegir su propia alternativa. El fragmento de código es:

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']



------------------------------------

Un clúster de Amazon EMR siempre consta de uno o tres nodos maestros. No puedes escalar el númerode nodos maestros después de configurar inicialmente el clúster. Solo puedes escalar los nodos principales y de tareas en un clúster

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare