Utilisation des réserves de capacité avec les parcs d'instances - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation des réserves de capacité avec les parcs d'instances

Pour lancer des parcs d'instances à la demande avec des options de réservation de capacité, associez les autorisations de rôle de service supplémentaires requises pour utiliser les options de réservation de capacité. Étant donné que les options de réservation de capacité doivent être utilisées conjointement avec la stratégie d'allocation à la demande, vous devez également inclure les autorisations requises pour la stratégie d'allocation dans votre rôle de service et votre politique gérée. Pour plus d’informations, consultez Autorisations de la stratégie d'allocation.

Amazon EMR prend en charge les réservations de capacité ouvertes et ciblées. Les rubriques suivantes présentent les configurations de parcs d'instances que vous pouvez utiliser avec l'action RunJobFlow ou la commande create-cluster pour lancer des parcs d'instances à l'aide de réserves de capacité à la demande.

Utilisez les réservations de capacité ouverte au mieux

Si les instances à la demande du cluster correspondent aux attributs des réserves de capacité ouvertes (type d'instance, plateforme, location et zone de disponibilité) disponibles dans votre compte, les réserves de capacité sont appliquées automatiquement. Cependant, il n'est pas garanti que vos réservations de capacité seront utilisées. Pour le provisionnement du cluster, Amazon EMR évalue tous les pools d'instances spécifiés dans la demande de lancement et utilise celui dont le prix le plus bas possède une capacité suffisante pour lancer tous les nœuds principaux demandés. Les réserves de capacité ouvertes disponibles qui correspondent au groupe d'instances sont appliquées automatiquement. Si les réserves de capacité ouvertes disponibles ne correspondent pas au groupe d'instances, elles restent inutilisées.

Une fois les nœuds principaux alloués, la zone de disponibilité est sélectionnée et fixée. Amazon EMR approvisionne les nœuds de tâches dans des pools d'instances, en commençant par les nœuds les moins chers, dans la zone de disponibilité sélectionnée jusqu'à ce que tous les nœuds de tâches soient provisionnés. Les réservations de capacité ouverte disponibles qui correspondent aux pools d'instances sont appliquées automatiquement.

Vous trouverez ci-dessous des exemples d'utilisation de la logique d'allocation de capacité Amazon EMR pour utiliser au mieux les réservations de capacité ouverte.

Exemple 1 : le groupe d'instances au prix le plus bas indiqué dans la demande de lancement dispose de réserves de capacité ouvertes

Dans ce cas, Amazon EMR lance la capacité dans le groupe d'instances le moins cher avec des instances à la demande. Vos réservations de capacité ouverte disponibles dans ce groupe d'instances sont utilisées automatiquement.

Stratégie à la demande lowest-price (prix le plus bas)
Capacité demandée 100
Type d'instance c5.xlarge m5.xlarge r5.xlarge
Réserves de capacité ouvertes disponibles 150 100 100
Prix à la demande $ $$ $$$
Instances allouées 100 - -
Réserves de capacité ouvertes utilisées 100 - -
Réserves de capacité ouvertes disponibles 50 100 100

Une fois le parc d'instances lancé, vous pouvez exécuter describe-capacity-reservations pour voir combien de réserves de capacité inutilisées restent.

Exemple 2 : le groupe d'instances au prix le plus bas indiqué dans la demande de lancement ne dispose pas de réserves de capacité ouvertes disponibles

Dans ce cas, Amazon EMR lance la capacité dans le groupe d'instances le moins cher avec des instances à la demande. Cependant, vos réservations de capacité ouverte restent inutilisées.

Stratégie à la demande lowest-price (prix le plus bas)
Capacité demandée 100
Type d'instance c5.xlarge m5.xlarge r5.xlarge

Réserves de capacité ouvertes disponibles

- - 100
Prix à la demande $ $$ $$$
Instances allouées 100 - -
Réserves de capacité ouvertes utilisées - - -
Réserves de capacité ouvertes disponibles - - 100

Configurer les parcs d'instances pour utiliser au mieux les réserves de capacité ouverte

Lorsque vous utilisez l'action RunJobFlow pour créer un cluster basé sur un parc d'instances, définissez la stratégie d'allocation à la demande sur lowest-price et CapacityReservationPreference pour les options de réserve de capacité sur open. Sinon, si vous laissez ce champ vide, Amazon EMR définit par défaut la préférence de réserve de capacité de l'instance à la demande sur open.

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

Vous pouvez également utiliser la CLI Amazon EMR pour créer un cluster basé sur un parc d'instances à l'aide de réservations de capacité ouverte.

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

Où,

  • open-ODCR-cluster est remplacé par le nom du cluster utilisant des réserves de capacité ouvertes.

  • subnet-22XXXX01 est remplacé par l'ID du sous-réseau.

Utilisez d'abord les réservations de capacité ouverte

Vous pouvez choisir d'annuler la stratégie d'allocation du prix le plus bas et de prioriser l'utilisation des réservations de capacité ouverte disponibles en premier lors de la mise en service d'un cluster Amazon EMR. Dans ce cas, Amazon EMR évalue tous les pools d'instances dont les réservations de capacité sont spécifiées dans la demande de lancement et utilise celui dont le prix le plus bas possède une capacité suffisante pour lancer tous les nœuds principaux demandés. Si aucun des pools d'instances avec des réservations de capacité ne dispose d'une capacité suffisante pour les nœuds principaux demandés, Amazon EMR revient au scénario de « meilleur effort » décrit dans la rubrique précédente. C'est-à-dire qu'Amazon EMR réévalue tous les pools d'instances spécifiés dans la demande de lancement et utilise celui dont le prix le plus bas possède une capacité suffisante pour lancer tous les nœuds principaux demandés. Les réserves de capacité ouvertes disponibles qui correspondent au groupe d'instances sont appliquées automatiquement. Si les réserves de capacité ouvertes disponibles ne correspondent pas au groupe d'instances, elles restent inutilisées.

Une fois les nœuds principaux alloués, la zone de disponibilité est sélectionnée et fixée. Amazon EMR approvisionne les nœuds de tâches dans des pools d'instances avec des réservations de capacité, en commençant par les nœuds les moins chers, dans la zone de disponibilité sélectionnée jusqu'à ce que tous les nœuds de tâches soient approvisionnés. Amazon EMR utilise d'abord les réservations de capacité ouverte disponibles sur chaque groupe d'instances de la zone de disponibilité sélectionnée, et uniquement si nécessaire, utilise la stratégie du prix le plus bas pour approvisionner les nœuds de tâches restants.

Vous trouverez ci-dessous des exemples d'utilisation de la logique d'allocation de capacité Amazon EMR pour utiliser d'abord les réservations de capacité ouverte.

Exemple 1 : le groupe d'instances avec des réserves de capacité ouvertes disponibles dans la demande de lancement dispose d'une capacité suffisante pour les nœuds principaux

Dans ce cas, Amazon EMR lance la capacité dans le groupe d'instances avec les réservations de capacité ouverte disponibles, quel que soit le prix du groupe d'instances. Par conséquent, vos réservations de capacité ouverte sont utilisées dans la mesure du possible, jusqu'à ce que tous les nœuds principaux soient approvisionnés.

Stratégie à la demande lowest-price (prix le plus bas)
Capacité demandée 100
Stratégie d'utilisation use-capacity-reservations-first
Type d'instance c5.xlarge m5.xlarge r5.xlarge
Réserves de capacité ouvertes disponibles - - 150
Prix à la demande $ $$ $$$
Instances allouées - - 100
Réserves de capacité ouvertes utilisées - - 100
Réserves de capacité ouvertes disponibles - - 50

Exemple 2 : le groupe d'instances avec des réserves de capacité ouvertes disponibles dans la demande de lancement ne dispose pas d'une capacité suffisante pour les nœuds principaux

Dans ce cas, Amazon EMR se contente de lancer des nœuds principaux en utilisant la stratégie du prix le plus bas tout en s'efforçant d'utiliser les réservations de capacité.

Stratégie à la demande lowest-price (prix le plus bas)
Capacité demandée 100
Stratégie d'utilisation use-capacity-reservations-first
Type d'instance c5.xlarge m5.xlarge r5.xlarge
Réserves de capacité ouvertes disponibles 10 50 50
Prix à la demande $ $$ $$$
Instances allouées 100 - -
Réserves de capacité ouvertes utilisées 10 - -
Réservations de capacité ouverte disponibles - 50 50

Une fois le parc d'instances lancé, vous pouvez exécuter describe-capacity-reservations pour voir combien de réserves de capacité inutilisées restent.

Configurer les parcs d'instances pour utiliser d'abord les réserves de capacité ouvertes

Lorsque vous utilisez l'action RunJobFlow pour créer un cluster basé sur un parc d'instances, définissez la stratégie d'allocation à la demande sur lowest-price et UsageStrategy pour CapacityReservationOptions sur use-capacity-reservations-first.

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

Vous pouvez également utiliser la CLI Amazon EMR pour créer un cluster basé sur un parc d'instances en utilisant d'abord les réservations de capacité.

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

Où,

  • use-CR-first-cluster est remplacé par le nom du cluster utilisant des réserves de capacité ouvertes.

  • subnet-22XXXX01 est remplacé par l'ID du sous-réseau.

Utilisez d'abord des réservations de capacité ciblées

Lorsque vous mettez en service un cluster Amazon EMR, vous pouvez choisir d'annuler la stratégie d'allocation du prix le plus bas et de prioriser l'utilisation des réservations de capacité ciblées disponibles en premier. Dans ce cas, Amazon EMR évalue tous les pools d'instances avec des réservations de capacité ciblées spécifiées dans la demande de lancement et choisit celle dont le prix le plus bas possède une capacité suffisante pour lancer tous les nœuds principaux demandés. Si aucun des pools d'instances avec des réservations de capacité ciblées ne dispose d'une capacité suffisante pour les nœuds principaux, Amazon EMR revient au scénario de meilleur effort décrit précédemment. C'est-à-dire qu'Amazon EMR réévalue tous les pools d'instances spécifiés dans la demande de lancement et sélectionne celui dont le prix le plus bas possède une capacité suffisante pour lancer tous les nœuds principaux demandés. Les réservations de capacité ouverte disponibles qui correspondent au groupe d'instances sont appliquées automatiquement. Cependant, les réservations de capacité ciblées restent inutilisées.

Une fois les nœuds principaux alloués, la zone de disponibilité est sélectionnée et fixée. Amazon EMR approvisionne les nœuds de tâches dans des pools d'instances avec des réservations de capacité ciblées, en commençant par les nœuds les moins chers, dans la zone de disponibilité sélectionnée jusqu'à ce que tous les nœuds de tâches soient approvisionnés. Amazon EMR essaie d'abord d'utiliser les réservations de capacité ciblées disponibles sur chaque groupe d'instances de la zone de disponibilité sélectionnée. Ensuite, uniquement si nécessaire, Amazon EMR utilise la stratégie du prix le plus bas pour approvisionner les nœuds de tâches restants.

Vous trouverez ci-dessous des exemples d'utilisation de la logique d'allocation de capacité Amazon EMR pour utiliser d'abord des réservations de capacité ciblées.

Exemple 1 : le groupe d'instances pour lequel des réserves de capacité ciblées sont disponibles dans la demande de lancement dispose d'une capacité suffisante pour les nœuds principaux

Dans ce cas, Amazon EMR lance de la capacité dans le groupe d'instances avec des réservations de capacité ciblées disponibles, quel que soit le prix du groupe d'instances. Par conséquent, vos réservations de capacité ciblées sont utilisées dans la mesure du possible jusqu'à ce que tous les nœuds principaux soient approvisionnés.

Stratégie à la demande lowest-price (prix le plus bas)
Stratégie d'utilisation use-capacity-reservations-first
Capacité demandée 100
Type d'instance c5.xlarge m5.xlarge r5.xlarge
Réserves de capacité ciblées disponibles - - 150
Prix à la demande $ $$ $$$
Instances allouées - - 100
Réservation de capacité ciblée utilisée - - 100
Réserves de capacité ciblées disponibles - - 50
Exemple 2 : le groupe d'instances pour lequel des réservations de capacité ciblées sont disponibles dans la demande de lancement ne dispose pas d'une capacité suffisante pour les nœuds principaux
Stratégie à la demande lowest-price (prix le plus bas)
Capacité demandée 100
Stratégie d'utilisation use-capacity-reservations-first
Type d'instance c5.xlarge m5.xlarge r5.xlarge
Réserves de capacité ciblées disponibles 10 50 50
Prix à la demande $ $$ $$$
Instances allouées 100 - -
Réserves de capacité ciblées utilisées 10 - -
Réserves de capacité ciblées disponibles - 50 50

Une fois le parc d'instances lancé, vous pouvez exécuter describe-capacity-reservations pour voir combien de réserves de capacité inutilisées restent.

Configurer les parcs d'instances pour utiliser d'abord les réserves de capacité ciblées

Lorsque vous utilisez l'action RunJobFlow pour créer un cluster basé sur un parc d'instances, définissez la stratégie d'allocation à la demande sur lowest-price, UsageStrategy pour CapacityReservationOptions sur use-capacity-reservations-first, et CapacityReservationResourceGroupArn pourCapacityReservationOptions sur <your resource group ARN>. Pour plus d'informations, consultez la section Travailler avec les réservations de capacité dans le guide de l'utilisateur Amazon EC2.

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

arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup est remplacé par l'ARN de votre groupe de ressources.

Vous pouvez également utiliser l'interface de ligne de commande Amazon EMR pour créer un cluster basé sur un parc d'instances à l'aide de réservations de capacité ciblées.

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

Où,

  • targeted-CR-cluster est remplacé par le nom de votre cluster à l'aide de réserves de capacité ciblées.

  • subnet-22XXXX01 est remplacé par l'ID du sous-réseau.

  • arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup est remplacé par l'ARN de votre groupe de ressources.

Évitez d'utiliser les réservations de capacité libre disponibles

Si vous souhaitez éviter d'utiliser de manière inattendue l'une de vos réserves de capacité ouverte lors du lancement d'un cluster Amazon EMR, définissez la stratégie d'allocation à la demande sur lowest-price et CapacityReservationPreference pour CapacityReservationOptions sur none. Dans le cas contraire, Amazon EMR définit par défaut la préférence de réserve de capacité de l'instance à la demande sur open et essaie d'utiliser au mieux les réserves de capacité ouverte disponibles.

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

Vous pouvez également utiliser la CLI Amazon EMR pour créer un cluster basé sur un parc d'instances sans utiliser de réservations de capacité ouverte.

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

Où,

  • none-CR-cluster est remplacé par le nom de votre cluster qui n'utilise aucune réserve de capacité ouverte.

  • subnet-22XXXX01 est remplacé par l'ID du sous-réseau.

Scénarios d'utilisation des réservations de capacité

Vous pouvez bénéficier de l'utilisation des réservations de capacité dans les scénarios suivants.

Scénario 1 : rotation d'un cluster de longue durée à l'aide de réservations de capacité

Lors de la rotation d'un cluster de longue durée, vous pouvez avoir des exigences strictes concernant les types d'instances et les zones de disponibilité pour les nouvelles instances que vous mettez en service. Avec les réservations de capacité, vous pouvez utiliser l'assurance de capacité pour effectuer la rotation du cluster sans interruption.

Rotation des clusters en fonction des réservations de capacité disponibles
Scénario 2 : provisionner des clusters de courte durée successifs à l'aide de réservations de capacité

Vous pouvez également utiliser les réservations de capacité pour provisionner un groupe de clusters successifs de courte durée pour des charges de travail individuelles, de sorte que lorsque vous mettez fin à un cluster, le cluster suivant puisse utiliser les réservations de capacité. Vous pouvez utiliser des réservations de capacité ciblées pour vous assurer que seuls les clusters prévus utilisent les réservations de capacité.

Provisionnement de clusters de courte durée utilisant les réservations de capacité disponibles