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.
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.