Uso de las reservas de capacidad con flotas de instancias en Amazon EMR - Amazon EMR

Uso de las reservas de capacidad con flotas de instancias en Amazon EMR

Para lanzar flotas de instancias bajo demanda con opciones de reserva de capacidad, asocie los permisos de rol de servicio adicionales necesarios para utilizar las opciones de reserva de capacidad. Dado que las opciones de reserva de capacidad deben utilizarse junto con la estrategia de asignación bajo demanda, también debe incluir los permisos necesarios para la estrategia de asignación en su rol de servicio y en su política administrada. Para obtener más información, consulte Permisos de estrategia de asignación.

Amazon EMR admite reservas de capacidad abiertas y específicas. En los temas siguientes se muestran las configuraciones de las flotas de instancias que puede utilizar con la acción RunJobFlow o el comando create-cluster para lanzar flotas de instancias mediante reservas de capacidad bajo demanda.

Uso de reservas de capacidad abiertas en la medida de lo posible

Si las instancias bajo demanda del clúster coinciden con los atributos de las reservas de capacidad abiertas (tipo de instancia, plataforma, tenencia y zona de disponibilidad) disponibles en su cuenta, las reservas de capacidad se aplican automáticamente. Sin embargo, no se garantiza que se utilicen sus reservas de capacidad. Para aprovisionar el clúster, Amazon EMR evalúa todos los grupos de instancias especificados en la solicitud de lanzamiento y utiliza el que tenga el precio más bajo y la capacidad suficiente para lanzar todos los nodos principales solicitados. Las reservas de capacidad abiertas disponibles que coincidan con el grupo de instancias se aplican automáticamente. Si las reservas de capacidad abiertas disponibles no coinciden con el grupo de instancias, no se utilizarán.

Una vez aprovisionados los nodos principales, se selecciona y se fija la zona de disponibilidad. Amazon EMR aprovisiona los nodos de tarea en grupos de instancias, empezando por los de menor precio, en la zona de disponibilidad seleccionada hasta que se aprovisionen todos los nodos de este tipo. Las reservas de capacidad abiertas disponibles que coincidan con los grupos de instancias se aplican automáticamente.

A continuación se incluyen casos de uso de la lógica de asignación de capacidad de Amazon EMR para utilizar reservas de capacidad abiertas en la medida de lo posible.

Ejemplo 1: el grupo de instancias con el precio más bajo de la solicitud de lanzamiento tiene reservas de capacidad abiertas disponibles

En este caso, Amazon EMR lanza la capacidad en el grupo de instancias de menor precio con instancias bajo demanda. Las reservas de capacidad abiertas disponibles del grupo de instancias se usan automáticamente.

On-Demand Strategy lowest-price
Requested Capacity 100
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available Open capacity reservations 150 100 100
On-Demand Price $ $$ $$$
Instancias aprovisionadas 100 - -
Reserva de capacidad abierta utilizada 100 - -
Reservas de capacidad abiertas disponibles 50 100 100

Después de lanzar la flota de instancias, puede ejecutar describe-capacity-reservations para ver cuántas reservas de capacidad sin utilizar quedan.

Ejemplo 2: el grupo de instancias con el precio más bajo de la solicitud de lanzamiento no tiene reservas de capacidad abiertas disponibles

En este caso, Amazon EMR lanza la capacidad en el grupo de instancias de menor precio con instancias bajo demanda. Sin embargo, sus reservas de capacidad abiertas no se utilizan.

On-Demand Strategy lowest-price
Requested Capacity 100
Instance Type c5.xlarge m5.xlarge r5.xlarge

Reservas de capacidad abiertas disponibles

- - 100
On-Demand Price $ $$ $$$
Instancias aprovisionadas 100 - -
Reserva de capacidad abierta utilizada - - -
Reservas de capacidad abiertas disponibles - - 100

Configuración de flotas de instancias para utilizar las reservas de capacidad abiertas en la medida de lo posible

Cuando utilice la acción RunJobFlow para crear un clúster basado en una flota de instancias, defina la estrategia de asignación bajo demanda en lowest-price y CapacityReservationPreference para las opciones de reserva de capacidad en open. Como alternativa, si deja este campo en blanco, Amazon EMR establece de forma predeterminada la preferencia de reserva de capacidad de la instancia bajo demanda en open.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "open" } } }

También puede usar la CLI de Amazon EMR para crear un clúster basado en una flota de instancias mediante reservas de capacidad abiertas.

aws emr create-cluster \ --name 'open-ODCR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=open}}'}

Donde,

  • open-ODCR-cluster se sustituye por el nombre del clúster que utiliza reservas de capacidad abiertas.

  • subnet-22XXXX01 se sustituye por el ID de la subred.

Uso de las reservas de capacidad abiertas en primer lugar

Puede optar por anular la estrategia de asignación de precios más bajos y priorizar el uso de las reservas de capacidad abiertas disponibles al aprovisionar un clúster de Amazon EMR. En este caso, Amazon EMR evalúa todos los grupos de instancias con reservas de capacidad especificadas en la solicitud de lanzamiento y utiliza el que tenga el precio más bajo y la capacidad suficiente para lanzar todos los nodos básicos solicitados. Si ninguno de los grupos de instancias con reservas de capacidad tiene capacidad suficiente para los nodos principales solicitados, Amazon EMR recurrirá al caso en el que se hace todo lo posible que se ha descrito en el tema anterior. Es decir, Amazon EMR reevalúa todos los grupos de instancias especificados en la solicitud de lanzamiento y utiliza el que tenga el precio más bajo y la capacidad suficiente para lanzar todos los nodos básicos solicitados. Las reservas de capacidad abiertas disponibles que coincidan con el grupo de instancias se aplican automáticamente. Si las reservas de capacidad abiertas disponibles no coinciden con el grupo de instancias, no se utilizarán.

Una vez aprovisionados los nodos principales, se selecciona y se fija la zona de disponibilidad. Amazon EMR aprovisiona los nodos de tarea en grupos de instancias con reservas de capacidad, empezando por los de menor precio, en la zona de disponibilidad seleccionada hasta que se aprovisionen todos los nodos de este tipo. Amazon EMR utiliza primero las reservas de capacidad abiertas disponibles en cada grupo de instancias de la zona de disponibilidad seleccionada y, solo si es necesario, utiliza la estrategia de menor precio para aprovisionar los nodos de tarea restantes.

A continuación se incluyen casos de uso de la lógica de asignación de capacidad de Amazon EMR para utilizar primero las reservas de capacidad abiertas.

Ejemplo 1: el grupo de instancias con reservas de capacidad abiertas disponibles en la solicitud de lanzamiento tiene capacidad suficiente para los nodos principales

En este caso, Amazon EMR lanza la capacidad en el grupo de instancias con las reservas de capacidad abiertas disponibles, independientemente del precio del grupo de instancias. Como resultado, las reservas de capacidad abiertas se utilizan siempre que es posible, hasta que se aprovisionen todos los nodos principales.

On-Demand Strategy lowest-price
Requested Capacity 100
Usage Strategy use-capacity-reservations-first
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available Open capacity reservations - - 150
On-Demand Price $ $$ $$$
Instancias aprovisionadas - - 100
Reserva de capacidad abierta utilizada - - 100
Reservas de capacidad abiertas disponibles - - 50

Ejemplo 2: el grupo de instancias con reservas de capacidad abiertas disponibles en la solicitud de lanzamiento no tiene capacidad suficiente para los nodos básicos

En este caso, Amazon EMR recurre al lanzamiento de nodos principales con la estrategia de menor precio y haciendo todo lo posible por utilizar las reservas de capacidad.

On-Demand Strategy lowest-price
Requested Capacity 100
Usage Strategy use-capacity-reservations-first
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available Open capacity reservations 10 50 50
On-Demand Price $ $$ $$$
Instancias aprovisionadas 100 - -
Reserva de capacidad abierta utilizada 10 - -
Reservas de capacidad abiertas disponibles - 50 50

Después de lanzar la flota de instancias, puede ejecutar describe-capacity-reservations para ver cuántas reservas de capacidad sin utilizar quedan.

Configuración de las flotas de instancias para que utilicen las reservas de capacidad abiertas en primer lugar

Cuando utilice la acción RunJobFlow para crear un clúster basado en una flota de instancias, defina la estrategia de asignación bajo demanda en lowest-price y UsageStrategy para CapacityReservationOptions en use-capacity-reservations-first.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first" } } }

También puede utilizar la CLI de Amazon EMR para crear un clúster basado en una flota de instancias mediante reservas de capacidad abiertas.

aws emr create-cluster \ --name 'use-CR-first-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first}}'}

Donde,

  • use-CR-first-cluster se sustituye por el nombre del clúster que utiliza reservas de capacidad abiertas.

  • subnet-22XXXX01 se sustituye por el ID de la subred.

Uso de reservas de capacidad específicas en primer lugar

Al aprovisionar un clúster de Amazon EMR, puede optar por anular la estrategia de asignación de precios más bajos y priorizar el uso de las reservas de capacidad específicas disponibles. En este caso, Amazon EMR evalúa todos los grupos de instancias con reservas de capacidad específicas en la solicitud de lanzamiento y elige el que tenga el precio más bajo y la capacidad suficiente para lanzar todos los nodos básicos solicitados. Si ninguno de los grupos de instancias con reservas de capacidad específicas tiene capacidad suficiente para los nodos principales, Amazon EMR recurrirá al caso en el que se hace todo lo posible que se ha descrito previamente. Es decir, Amazon EMR reevalúa todos los grupos de instancias especificados en la solicitud de lanzamiento y selecciona el que tenga el precio más bajo y la capacidad suficiente para lanzar todos los nodos básicos solicitados. Las reservas de capacidad abiertas disponibles que coincidan con el grupo de instancias se aplican automáticamente. Sin embargo, sus reservas de capacidad específicas no se utilizan.

Una vez aprovisionados los nodos principales, se selecciona y se fija la zona de disponibilidad. Amazon EMR aprovisiona los nodos de tarea en grupos de instancias con reservas de capacidad específicas, empezando por los de menor precio, en la zona de disponibilidad seleccionada hasta que se aprovisionen todos los nodos de este tipo. Amazon EMR intenta utilizar primero las reservas de capacidad específicas disponibles en cada grupo de instancias de la zona de disponibilidad seleccionada. Luego, solo si es necesario, Amazon EMR utiliza la estrategia de menor precio para aprovisionar los nodos de tarea restantes.

A continuación se indican casos de uso de la lógica de asignación de capacidad de Amazon EMR para utilizar primero las reservas de capacidad específicas.

Ejemplo 1: el grupo de instancias con reservas de capacidad específicas disponibles en la solicitud de lanzamiento tiene capacidad suficiente para los nodos principales

En este caso, Amazon EMR lanza la capacidad en el grupo de instancias con las reservas de capacidad específicas disponibles, independientemente del precio del grupo de instancias. Como resultado, las reservas de capacidad específicas se utilizan siempre que es posible, hasta que se aprovisionen todos los nodos básicos.

On-Demand Strategy lowest-price
Usage Strategy use-capacity-reservations-first
Requested Capacity 100
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available targeted capacity reservations - - 150
On-Demand Price $ $$ $$$
Instancias aprovisionadas - - 100
Reserva de capacidad específica utilizada - - 100
Reservas de capacidad específicas disponibles - - 50
ejemplo Ejemplo 2: el grupo de instancias con reservas de capacidad específicas disponibles en la solicitud de lanzamiento no tiene capacidad suficiente para los nodos básicos
On-Demand Strategy lowest-price
Requested Capacity 100
Usage Strategy use-capacity-reservations-first
Instance Type c5.xlarge m5.xlarge r5.xlarge
Available targeted capacity reservations 10 50 50
On-Demand Price $ $$ $$$
Instancias aprovisionadas 100 - -
Reservas de capacidad específicas utilizadas 10 - -
Reservas de capacidad específicas disponibles - 50 50

Después de lanzar la flota de instancias, puede ejecutar describe-capacity-reservations para ver cuántas reservas de capacidad sin utilizar quedan.

Configuración de flotas de instancias para que utilicen primero las reservas de capacidad específicas

Cuando utilice la acción RunJobFlow para crear un clúster basado en una flota de instancias, defina la estrategia de asignación bajo demanda en lowest-price, UsageStrategy para CapacityReservationOptions en use-capacity-reservations-first y CapacityReservationResourceGroupArn para CapacityReservationOptions en <your resource group ARN>. Para obtener más información, consulte Trabajo con reservas de capacidad en la Guía del usuario de Amazon EC2.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup" } } }

Donde arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup se sustituye por el ARN del grupo de recursos.

También puede utilizar la CLI de Amazon EMR para crear un clúster basado en una flota de instancias mediante reservas de capacidad específicas.

aws emr create-cluster \ --name 'targeted-CR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,\ InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={UsageStrategy=use-capacity-reservations-first,CapacityReservationResourceGroupArn=arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup}}'}

Donde,

  • targeted-CR-cluster se sustituye por el nombre del clúster que utiliza reservas de capacidad específicas.

  • subnet-22XXXX01 se sustituye por el ID de la subred.

  • arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup se sustituye por el ARN del grupo de recursos.

Evitar el uso de reservas de capacidad abiertas disponibles

Si quiere evitar utilizar inesperadamente alguna de sus reservas de capacidad abiertas al lanzar un clúster de Amazon EMR, defina la estrategia de asignación bajo demanda en lowest-price y CapacityReservationPreference para CapacityReservationOptions en none. De lo contrario, Amazon EMR establece de forma predeterminada la preferencia de reserva de capacidad de la instancia bajo demanda en open e intenta utilizar las reservas de capacidad abiertas disponibles en la medida de lo posible.

"LaunchSpecifications": {"OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } } }

También puede usar la CLI de Amazon EMR para crear un clúster basado en una flota de instancias sin utilizar reservas de capacidad abiertas.

aws emr create-cluster \ --name 'none-CR-cluster' \ --release-label emr-5.30.0 \ --service-role EMR_DefaultRole \ --ec2-attributes SubnetId=subnet-22XXXX01,InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=c4.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=100,InstanceTypeConfigs=['{InstanceType=c5.xlarge},{InstanceType=m5.xlarge},{InstanceType=r5.xlarge}'],\ LaunchSpecifications={OnDemandSpecification='{AllocationStrategy=lowest-price,CapacityReservationOptions={CapacityReservationPreference=none}}'}

Donde,

  • none-CR-cluster se sustituye por el nombre del clúster que no utiliza reservas de capacidad abiertas.

  • subnet-22XXXX01 se sustituye por el ID de la subred.

Escenarios de uso de reservas de capacidad

Puede beneficiarse del uso de reservas de capacidad en los siguientes escenarios.

Escenario 1: rotar un clúster de ejecución prolongada con reservas de capacidad

Al rotar un clúster de ejecución prolongada, es posible que tenga requisitos estrictos en cuanto a los tipos de instancias y las zonas de disponibilidad para las nuevas instancias que aprovisione. Con las reservas de capacidad, puede utilizar la garantía de capacidad para completar la rotación del clúster sin interrupciones.

Rotación de clústeres con las reservas de capacidad disponibles
Escenario 2: aprovisionar clústeres sucesivos de corta duración con reservas de capacidad

También puede utilizar las reservas de capacidad para aprovisionar un grupo de clústeres sucesivos de corta duración para cargas de trabajo individuales, de modo que, cuando termine un clúster, el siguiente pueda utilizar las reservas de capacidad. Puede utilizar reservas de capacidad específicas para garantizar que solo los clústeres previstos utilicen las reservas de capacidad.

Aprovisionamiento de clústeres de corta duración que utiliza las reservas de capacidad disponibles