Integración de Amazon EMR con grupos de ubicación de EC2 - Amazon EMR

Integración de Amazon EMR con grupos de ubicación de EC2

Al lanzar un clúster de Amazon EMR con varios nodos principales en Amazon EC2, tiene la opción de utilizar estrategias de grupos de ubicación para especificar cómo desea que se implementen las instancias de nodos principales para protegerlas contra los errores de hardware.

Las estrategias de grupos de ubicación se admiten a partir de la versión 5.23.0 de Amazon EMR como opción para clústeres con varios nodos principales. Actualmente, la estrategia de grupo de ubicación solo admite los tipos de nodos principales y la estrategia SPREAD se aplica a esos nodos. La estrategia SPREAD coloca un pequeño grupo de instancias en un hardware subyacente independiente para evitar la pérdida de varios nodos principales en caso de que se produzca un error de hardware. Tenga en cuenta que una solicitud de lanzamiento de instancia podría presentar errores si no hay suficiente hardware único para cumplir con la solicitud. Para más información sobre las estrategias y limitaciones de ubicación de EC2, consulte Grupos de ubicación en la Guía del usuario de EC2 para instancias de Linux.

Existe un límite inicial de Amazon EC2 de 500 clústeres habilitados para las estrategias de grupos de ubicación que se pueden lanzar por región de AWS. Póngase en contacto con la asistencia técnica de AWS para solicitar un aumento del número de grupos de ubicación permitidos. Puede identificar los grupos de ubicación de EC2 que Amazon EMR crea mediante el seguimiento del par de clave-valor que Amazon EMR asocia a la estrategia de grupos de ubicación de Amazon EMR. Para más información acerca de las etiquetas de instancias de clúster de EC2, consulte Ver instancias del clúster en Amazon EC2.

Asociación de la política administrada del grupo de ubicación al rol de Amazon EMR

La estrategia de grupos de ubicación requiere una política administrada llamada AmazonElasticMapReducePlacementGroupPolicy, que permite a Amazon EMR crear, eliminar y describir grupos de ubicación en Amazon EC2. Debe asociar AmazonElasticMapReducePlacementGroupPolicy al rol de servicio de Amazon EMR antes de lanzar un clúster de Amazon EMR con varios nodos principales.

También puede asociar la política administrada AmazonEMRServicePolicy_v2 al rol de servicio de Amazon EMR en lugar de la política administrada del grupo de ubicación. AmazonEMRServicePolicy_v2 permite el mismo acceso a los grupos de ubicación en Amazon EC2 que AmazonElasticMapReducePlacementGroupPolicy. Para obtener más información, consulte Rol de servicio para Amazon EMR (rol de EMR).

La política administrada AmazonElasticMapReducePlacementGroupPolicy es el siguiente texto JSON creado y administrado por Amazon EMR.

nota

Dado que la política administrada AmazonElasticMapReducePlacementGroupPolicy se actualiza automáticamente, la política aquí mostrada podría estar obsoleta. Utilice la consola de administración de AWS para ver la política actual.

{ "Version":"2012-10-17", "Statement":[ { "Resource":"*", "Effect":"Allow", "Action":[ "ec2:DeletePlacementGroup", "ec2:DescribePlacementGroups" ] }, { "Resource":"arn:aws:ec2:*:*:placement-group/pg-*", "Effect":"Allow", "Action":[ "ec2:CreatePlacementGroup" ] } ] }

Lanzamiento de un clúster de Amazon EMR con varios nodos principales mediante una estrategia de grupos con ubicación

Para lanzar un clúster de Amazon EMR con varios nodos principales y con una estrategia de grupos con ubicación, asocie la política administrada de grupos con ubicación AmazonElasticMapReducePlacementGroupPolicy al rol de Amazon EMR. Para obtener más información, consulte Asociación de la política administrada del grupo de ubicación al rol de Amazon EMR.

Cada vez que utiliza este rol para iniciar un clúster de Amazon EMR con varios nodos principales, Amazon EMR intenta lanzar un clúster con la estrategia SPREAD aplicada a sus nodos principales. Si utiliza un rol que no tiene la política administrada de grupos con ubicación AmazonElasticMapReducePlacementGroupPolicy asociada a él, Amazon EMR intentará lanzar un clúster de Amazon EMR con varios nodos principales sin una estrategia de grupos con ubicación.

Si lanza un clúster de Amazon EMR con varios nodos principales y con el parámetro placement-group-configs mediante la API o la CLI de Amazon EMR, Amazon EMR solo lanza el clúster si el rol de Amazon EMR tiene asociada la política administrada de grupos con ubicación AmazonElasticMapReducePlacementGroupPolicy. Si el rol de Amazon EMR no tiene la política asociada, se produce un error en el inicio del clúster de Amazon EMR con varios nodos principales.

Amazon EMR API
ejemplo Ejemplo: Utilización de una estrategia de grupos con ubicación para lanzar un clúster de grupos de instancias con varios nodos principales desde la API de Amazon EMR

Cuando utilice la acción RunJobFlow para crear un clúster de Amazon EMR con varios nodos principales, defina la propiedad PlacementGroupConfigs en lo siguiente. Actualmente, el rol de instancia MASTER utiliza automáticamente SPREAD como estrategia de grupos de ubicación.

{ "Name":"ha-cluster", "PlacementGroupConfigs":[ { "InstanceRole":"MASTER" } ], "ReleaseLabel": emr-6.15.0, "Instances":{ "ec2SubnetId":"subnet-22XXXX01", "ec2KeyName":"ec2_key_pair_name", "InstanceGroups":[ { "InstanceCount":3, "InstanceRole":"MASTER", "InstanceType":"m5.xlarge" }, { "InstanceCount":4, "InstanceRole":"CORE", "InstanceType":"m5.xlarge" } ] }, "JobFlowRole":"EMR_EC2_DefaultRole", "ServiceRole":"EMR_DefaultRole" }
  • Sustituya ha-cluster por el nombre de su clúster de alta disponibilidad.

  • Sustituya subnet-22XXXX01 con su ID de subred.

  • Sustituya ec2_key_pair_name con el nombre de su par de claves de EC2 para este clúster. El par de claves de EC2 es opcional y solo se precisa si desea utilizar SSH para acceder a su clúster.

AWS CLI
ejemplo Ejemplo: Utilización de una estrategia de grupos con ubicación para lanzar un clúster de flotas de instancias con varios nodos principales desde la AWS Command Line Interface

Cuando utilice la acción RunJobFlow para crear un clúster de Amazon EMR con varios nodos principales, defina la propiedad PlacementGroupConfigs en lo siguiente. Actualmente, el rol de instancia MASTER utiliza automáticamente SPREAD como estrategia de grupos de ubicación.

aws emr create-cluster \ --name "ha-cluster" \ --placement-group-configs InstanceRole=MASTER \ --release-label emr-6.15.0 \ --instance-fleets '[ { "InstanceFleetType": "MASTER", "TargetOnDemandCapacity": 3, "TargetSpotCapacity": 0, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price" } }, "InstanceTypeConfigs": [ { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.xlarge" }, { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.2xlarge" }, { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.4xlarge" } ], "Name": "Master - 1" }, { "InstanceFleetType": "CORE", "TargetOnDemandCapacity": 5, "TargetSpotCapacity": 0, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price" } }, "InstanceTypeConfigs": [ { "WeightedCapacity": 1, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.xlarge" }, { "WeightedCapacity": 2, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.2xlarge" }, { "WeightedCapacity": 4, "BidPriceAsPercentageOfOnDemandPrice": 100, "InstanceType": "m5.4xlarge" } ], "Name": "Core - 2" } ]' \ --ec2-attributes '{ "KeyName": "ec2_key_pair_name", "InstanceProfile": "EMR_EC2_DefaultRole", "SubnetIds": [ "subnet-22XXXX01", "subnet-22XXXX02" ] }' \ --service-role EMR_DefaultRole \ --applications Name=Hadoop Name=Spark
  • Sustituya ha-cluster por el nombre de su clúster de alta disponibilidad.

  • Sustituya ec2_key_pair_name con el nombre de su par de claves de EC2 para este clúster. El par de claves de EC2 es opcional y solo se precisa si desea utilizar SSH para acceder a su clúster.

  • Sustituya subnet-22XXXX01 y subnet-22XXXX02 por sus ID de subred.

Lanzamiento de un clúster con varios nodos principales sin una estrategia de grupos de ubicación

Para que un clúster con varios nodos principales lance nodos principales sin la estrategia de grupos de ubicación, debe realizar una de las siguientes acciones:

  • Eliminar la política administrada AmazonElasticMapReducePlacementGroupPolicy del grupo de ubicación del rol de Amazon EMR o

  • Lanzar un clúster con varios nodos principales con el parámetro placement-group-configs mediante la API o la CLI de Amazon EMR y con NONE como estrategia de grupos de ubicación.

Amazon EMR API
ejemplo — Lanzamiento de un clúster con varios nodos principales sin una estrategia de grupos de ubicación mediante la API de Amazon EMR.

Cuando utilice la acción RunJobFlow para crear un clúster con varios nodos principales, defina la propiedad PlacementGroupConfigs en lo siguiente.

{ "Name":"ha-cluster", "PlacementGroupConfigs":[ { "InstanceRole":"MASTER", "PlacementStrategy":"NONE" } ], "ReleaseLabel":"emr-5.30.1", "Instances":{ "ec2SubnetId":"subnet-22XXXX01", "ec2KeyName":"ec2_key_pair_name", "InstanceGroups":[ { "InstanceCount":3, "InstanceRole":"MASTER", "InstanceType":"m5.xlarge" }, { "InstanceCount":4, "InstanceRole":"CORE", "InstanceType":"m5.xlarge" } ] }, "JobFlowRole":"EMR_EC2_DefaultRole", "ServiceRole":"EMR_DefaultRole" }
  • Sustituya ha-cluster por el nombre de su clúster de alta disponibilidad.

  • Sustituya subnet-22XXXX01 con su ID de subred.

  • Sustituya ec2_key_pair_name con el nombre de su par de claves de EC2 para este clúster. El par de claves de EC2 es opcional y solo se precisa si desea utilizar SSH para acceder a su clúster.

Amazon EMR CLI
ejemplo — Lanzamiento de un clúster con varios nodos principales sin una estrategia de grupos de ubicación mediante la CLI de Amazon EMR.

Cuando utilice la acción RunJobFlow para crear un clúster con varios nodos principales, defina la propiedad PlacementGroupConfigs en lo siguiente.

aws emr create-cluster \ --name "ha-cluster" \ --placement-group-configs InstanceRole=MASTER,PlacementStrategy=NONE \ --release-label emr-5.30.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
  • Sustituya ha-cluster por el nombre de su clúster de alta disponibilidad.

  • Sustituya subnet-22XXXX01 con su ID de subred.

  • Sustituya ec2_key_pair_name con el nombre de su par de claves de EC2 para este clúster. El par de claves de EC2 es opcional y solo se precisa si desea utilizar SSH para acceder a su clúster.

Comprobación de la configuración de la estrategia de grupos de ubicación asociada al clúster con varios nodos principales

Puede utilizar la API de descripción del clúster de Amazon EMR para ver la configuración de la estrategia de grupos de ubicación asociada al clúster con varios nodos principales.

aws emr describe-cluster --cluster-id "j-xxxxx" { "Cluster":{ "Id":"j-xxxxx", ... ... "PlacementGroups":[ { "InstanceRole":"MASTER", "PlacementStrategy":"SPREAD" } ] } }