Configuration de parcs d'instances
Note
La configuration de flotte d'instances est disponible uniquement dans les versions 4.8.0 et ultérieures d'Amazon EMR, à l'exception des versions 5.0.0 et 5.0.3.
La configuration du parc d'instances pour les clusters Amazon EMR vous permet de sélectionner une grande variété d'options de provisionnement pour les instances Amazon EC2 et vous aide à développer une stratégie de ressources flexible et élastique pour chaque type de nœud de votre cluster.
Dans une configuration de parc d'instances, vous spécifiez une capacité cible pour les instances à la demande et les instances Spot au sein de chaque parc. Lorsque le cluster se lance, Amazon EMR met en service des instances jusqu'à ce que les cibles soient atteintes. Lorsqu'Amazon EC2 récupère une instance Spot dans un cluster en cours d'exécution en raison d'une augmentation de prix ou d'une défaillance d'instance, Amazon EMR tente de remplacer l'instance par l'un des types d'instance que vous spécifiez. Il est ainsi plus facile de récupérer de la capacité de lors d'un pic de tarification Spot.
Vous pouvez spécifier un maximum de cinq types d'instances Amazon EC2 par parc à utiliser par Amazon EMR pour atteindre les objectifs, ou un maximum de 30 types d'instances Amazon EC2 par parc lorsque vous créez un cluster à l'aide de l'AWS CLI ou de l'API Amazon EMR ou d'une stratégie d'allocation pour les instances Spot et à la demande.
Vous pouvez également sélectionner plusieurs sous-réseaux pour les différentes zones de disponibilité. Quand Amazon EMR lance le cluster, il recherche dans ces sous-réseaux les instances et les options d'achat que vous spécifiez. Si Amazon EMR détecte un événement AWS de grande envergure dans une ou plusieurs zones de disponibilité, Amazon EMR tente automatiquement d'acheminer le trafic hors des zones de disponibilité concernées et essaie de lancer de nouveaux clusters que vous créez dans des zones de disponibilité alternatives en fonction de vos sélections. Notez que la sélection de la zone de disponibilité du cluster s'effectue uniquement lors de la création du cluster. Les nœuds de cluster existants ne sont pas automatiquement relancés dans une nouvelle zone de disponibilité en cas de panne de la zone de disponibilité.
Considérations
Tenez compte des éléments suivants lorsque vous utilisez des parcs d'instances avec Amazon EMR.
-
Vous pouvez avoir un seul parc d'instances, par type de nœud (principal, de noyau, de tâche). Vous pouvez spécifier jusqu'à cinq types d'instances Amazon EC2 pour chaque parc de la AWS Management Console (ou un maximum de 30 types par parc d'instances lorsque vous créez un cluster à l'aide de l' AWS CLI ou de l'API Amazon EMR et d'un Stratégie d'allocation pour les parcs, par exemple).
-
Amazon EMR choisit un ou tous les types d'instance Amazon EC2 spécifiés pour allouer avec les options d'achat Spot et à la demande.
-
Vous pouvez établir des capacités cibles pour les instances Spot et à la demande pour le parc principal et le parc de tâches. Utilisez un vCPU ou une unité générique attribuée à chaque instance Amazon EC2 prise en compte dans les cibles. Amazon EMR met en service des instances jusqu'à ce que chaque capacité cible soit atteinte. Pour le parc principal, la cible est toujours un.
-
Vouz pouvez choisir un sous-réseau (zone de disponibilité) ou une plage. Si vous choisissez une fourchette, Amazon EMR fournit la capacité dans la zone de disponibilité la mieux adaptée.
-
Lorsque vous spécifiez une capacité cible pour instances Spot :
-
Pour chaque type d'instance, spécifiez un prix Spot maximum. Amazon EMR met en service les instances Spot si le prix Spot est inférieur au prix Spot maximum. Vous payez le prix Spot, et non le prix Spot maximum.
-
Pour chaque parc, définissez une période d'expiration pour la mise en service des instances Spot. Si Amazon EMR ne peut pas mettre en service la capacité Spot, vous pouvez résilier le cluster ou passer à l'allocation de capacité à la demande à la place. Cela s'applique uniquement au provisionnement des clusters, et non à leur redimensionnement. Si le délai d'expiration prend fin pendant le processus de redimensionnement du cluster, les demandes Spot non provisionnées seront annulées sans être transférées vers la capacité à la demande.
-
-
Pour chaque parc, vous pouvez définir l'une des stratégies d'allocation suivantes pour vos instances Spot : optimisation du rapport prix-capacité, optimisation de la capacité, prix le plus bas ou diversification sur tous les pools.
-
Pour chaque parc, vous pouvez appliquer une stratégie d'allocation au prix le plus bas pour vos instances à la demande ; vous ne pouvez pas personnaliser la stratégie d'allocation pour les instances à la demande.
-
Pour chaque parc avec
allocation strategy - lowest-price
à la demande, vous pouvez choisir d'appliquer des options de réserve de capacité. -
Vérifiez la taille de votre sous-réseau avant de lancer votre cluster. Lorsque vous approvisionnez un cluster avec un parc de tâches et qu'il n'y a pas suffisamment d'adresses IP disponibles dans le sous-réseau correspondant, le parc passe en état suspendu au lieu de résilier le cluster avec une erreur. Pour éviter ce problème, nous vous recommandons d'augmenter le nombre d'adresses IP dans vos sous-réseaux.
Options de parc d'instances
Suivez les instructions suivantes pour comprendre les options de parc d'instances.
Rubriques
Définition des capacités cibles
Spécifiez les capacités cibles que vous souhaitez pour le parc principal et le parc de tâches. Cela permet de déterminer le nombre d'instances à la demande et d'instances Spot mises en service par Amazon EMR. Lorsque vous spécifiez une instance, vous choisissez dans quelle mesure chaque instance compte dans la cible. Lorsqu'une instance à la demande est mise en service, elle est prise en compte dans la cible à la demande. Il en va de même pour les instances Spot. Contrairement aux parcs principaux et de tâches, le parc principal est toujours une seule instance. Ainsi, la capacité cible pour ce parc est toujours un seul.
Lorsque vous utilisez la console, les vCPU du type d'instance Amazon EC2 sont pris en compte pour les capacités cibles par défaut. Vous pouvez les remplacer par des Unités génériques, puis spécifier un nombre pour chaque type d'instance EC2. Lorsque vous utilisez la AWS CLI, vous attribuez manuellement des unités génériques à chaque type d'instance.
Important
Lorsque vous choisissez un type d'instance à l'aide de la commande AWS Management Console, le nombre de vCPU indiqué pour chaque type d'instance correspond au nombre de vcores YARN pour ce type d'instance, et non au nombre de vCPU EC2 pour ce type d'instance. Pour plus d'informations sur le nombre de vCPU pour chaque type d'instance, consultez Types d'instances Amazon EC2
Vous pouvez spécifier jusqu'à cinq types d'instance Amazon EC2 pour chaque parc. Si vous utilisez Stratégie d'allocation pour les parcs, par exemple et créez un cluster à l'aide de l'AWS CLI ou de l'API Amazon EMR, vous pouvez spécifier jusqu'à 30 types d'instances EC2 par parc d'instances. Amazon EMR choisit une combinaison de ces types d'instances EC2 pour atteindre vos capacités cibles. Amazon EMR cherche à atteindre complètement la capacité cible. Il est donc possible qu'un excédent se produise. Par exemple, si deux unités non satisfaites sont présentes, et si Amazon EMR peut uniquement mettre en service une instance avec un compte de cinq unités, l'instance est toujours mise en service, et la capacité cible est donc dépassée de trois unités.
Si vous réduisez la capacité cible pour redimensionner un cluster en cours d'exécution, Amazon EMR tente de compléter les tâches d'application et supprime des instances afin d'atteindre la nouvelle cible. Pour de plus amples informations, veuillez consulter Mise hors service lors de l'achèvement de la tâche.
Options de lancement
Pour les instances Spot, vous pouvez spécifier un Prix Spot maximum pour chaque type d'instance dans un parc d'instances. Vous pouvez définir ce prix sous la forme d'un pourcentage du prix à la demande ou sous la forme d'un montant spécifique en dollars. Amazon EMR met en service les instances Spot si le prix Spot actuel dans une zone de disponibilité est inférieur à votre prix Spot maximum. Vous payez le prix Spot, et non le prix Spot maximum.
Note
Les instances Spot de durée définie (également appelées blocs d'instances Spot) ne sont plus disponibles pour les nouveaux clients depuis le 1er juillet 2021. Pour les clients qui ont déjà utilisé cette fonctionnalité, nous continuerons à prendre en charge les instances Spot de durée définie jusqu'au 31 décembre 2022.
Disponible dans Amazon EMR 5.12.1 et versions ultérieures, vous avez la possibilité de lancer des parcs d'instances Spot et à la demande avec une allocation de capacité optimisée. Cette option de stratégie d'allocation peut être définie dans l'ancienne AWS Management Console ou à l'aide de l'API RunJobFlow
. Notez que vous ne pouvez pas personnaliser la stratégie d'allocation dans la nouvelle console. L'utilisation de l'option de stratégie d'allocation nécessite des autorisations de rôle de service supplémentaires. Si vous utilisez le rôle de service Amazon EMR par défaut et la politique gérée (EMR_DefaultRole et AmazonEMRServicePolicy_v2
) pour le cluster, les autorisations pour l'option de stratégie d'allocation sont déjà incluses. Si vous n'utilisez pas le rôle de service Amazon EMR et la politique gérée par défaut, vous devez les ajouter pour utiliser cette option. Consultez Rôle de service pour Amazon EMR (rôle EMR).
Pour plus d'informations sur les instances Spot, consultez Instances Spot dans le Guide de l'utilisateur Amazon EC2 pour instances Linux. Pour plus d'informations sur les instances à la demande, consultez la section Instances à la demande dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.
Si vous choisissez de lancer des parcs d'instances à la demande avec la stratégie d'allocation des prix les plus bas, vous avez la possibilité d'utiliser les réservations de capacité. Les options de réserve de capacité peuvent être définies à l'aide de l'API Amazon EMR RunJobFlow
. Les réservations de capacité nécessitent des autorisations de rôle de service supplémentaires que vous devez ajouter pour utiliser ces options. Consultez Autorisations de la stratégie d'allocation. Notez que vous ne pouvez pas personnaliser les réservations de capacité dans la nouvelle console.
Options de sous-réseau multiples (zones de disponibilité)
Lorsque vous utilisez plusieurs parcs d'instances, vous pouvez spécifier plusieurs sous-réseaux Amazon EC2 au sein d'un VPC, chacun correspondant à une zone de disponibilité différente. Si vous utilisez EC2-Classic, vous spécifiez les zones de disponibilité de manière explicite. Amazon EMR identifie la meilleure zone de disponibilité pour lancer des instances en fonction des spécifications de votre parc. Les instances sont toujours mises en service dans une seule zone de disponibilité. Vous pouvez sélectionner des sous-réseaux privés ou publics, mais vous ne pouvez pas combiner les deux et les sous-réseaux que vous spécifiez doivent se trouver au sein du même VPC.
Configuration de nœud principal
Étant donné que la flotte d'instances maître est uniquement une instance unique, sa configuration est légèrement différente des parcs d'instances principaux et de tâches. Vous sélectionnez uniquement un parc d'instances maîtres à la demande ou Spot car elle se compose d'une seule instance. Si vous utilisez la console pour créer la flotte d'instances, la capacité cible pour l'option d'achat que vous sélectionnez est définie sur 1. Si vous utilisez l'AWS CLI, définissez toujours TargetSpotCapacity
ou TargetOnDemandCapacity
sur 1, le cas échéant. Vous pouvez toujours choisir jusqu'à cinq types d'instances pour le parc d'instances principal (ou un maximum de 30 lorsque vous utilisez l'option de stratégie d'allocation pour les instances à la demande ou Spot). Cependant, contrairement aux parcs d'instances de noyau et de tâche, où Amazon EMR peut allouer plusieurs instances de différents types, Amazon EMR sélectionne un seul type d'instance à allouer pour le parc d'instances principal.
Stratégie d'allocation pour les parcs, par exemple
Avec les versions 5.12.1 et ultérieures d'Amazon EMR, vous pouvez utiliser l'option de stratégie d'allocation avec des instances à la demande et Spot pour chaque nœud de cluster. Lorsque vous créez un cluster à l'aide de l'AWS CLI, de l'API Amazon EMR ou de la console Amazon EMR avec une stratégie d'allocation, vous pouvez spécifier jusqu'à 30 types d'instances Amazon EC2 par parc. Avec la configuration par défaut du parc d'instances de cluster Amazon EMR, vous pouvez avoir jusqu'à 5 types d'instances par parc. Nous vous recommandons d'utiliser l'option de stratégie d'allocation pour accélérer le provisionnement des clusters, pour une allocation plus précise des instances Spot et pour réduire les interruptions des instances Spot.
Rubriques
Stratégie d'allocation avec les instances à la demande
Lorsque vous utilisez une stratégie d'allocation, vos Instances à la demande utilisent la stratégie du prix le plus bas. Cela lance d'abord les instances les moins chères. Lorsque vous lancez des instances à la demande, vous pouvez utiliser des réserves de capacité ouvertes ou ciblées dans vos comptes. Vous pouvez utiliser des réserves de capacité ouvertes pour les nœuds primaires, les nœuds du noyau et les nœuds de tâches. Vous pouvez rencontrer une capacité insuffisante avec les instances à la demande dotées d'une stratégie d'allocation pour les parcs d'instances. Nous vous recommandons de spécifier un plus grand nombre de types d'instances afin de diversifier et de réduire les risques d'insuffisance de capacité. Pour de plus amples informations, veuillez consulter Utilisation des réserves de capacité avec les parcs d'instances.
Stratégie d'allocation avec les instances Spot
Pour Instances Spot, vous pouvez choisir l'une des stratégies d'allocation suivantes :
price-capacity-optimized
(recommandé)-
La stratégie d'allocation optimisée en fonction du prix et de la capacité lance les instances Spot à partir des pools d'instances Spot qui ont la plus grande capacité disponible et le prix le plus bas par rapport au nombre d'instances en cours de lancement. Par conséquent, la stratégie d'optimisation prix-capacité a généralement plus de chances d'obtenir une capacité ponctuelle et permet de réduire les taux d'interruption.
capacity-optimized
-
La stratégie d'allocation optimisée en termes de capacité permet d'intégrer les instances Spot dans les pools les plus disponibles avec le moins de risques d'interruption à court terme. Il s'agit d'une bonne option pour les charges de travail dont le coût d'interruption peut être plus élevé en raison du redémarrage du travail. Il s'agit de la stratégie par défaut pour les versions 6.9.0 et antérieures d'Amazon EMR.
diversified
-
Grâce à sa stratégie d'allocation diversifiée, Amazon EC2 distribue des instances Spot dans tous les pools de capacité Spot.
lowest-price
-
La stratégie d'allocation au prix le plus bas lance les instances Spot à partir du pool le moins cher disposant de la capacité disponible. Si le groupe le moins coûteux ne dispose pas de capacité, les instances Spot proviennent du groupe le moins coûteux suivant qui a une capacité disponible. Si un groupe manque de capacité avant de répondre à votre demande, la flotte d'Amazon EC2 puise dans le groupe suivant dont le prix est le plus bas pour continuer à répondre à votre demande. Pour garantir que la capacité souhaitée est atteinte, vous pouvez recevoir des instances Spot de plusieurs groupes. Comme cette stratégie ne tient compte que du prix de l'instance et non de la disponibilité de la capacité, elle peut entraîner des taux d'interruption élevés.
Autorisations de la stratégie d'allocation
L'option de stratégie d'allocation nécessite plusieurs autorisations IAM qui sont automatiquement incluses dans le rôle de service Amazon EMR par défaut et dans la politique gérée par Amazon EMR (EMR_DefaultRole
et AmazonEMRServicePolicy_v2
). Si vous utilisez un rôle de service personnalisé ou une politique gérée pour votre cluster, vous devez ajouter ces autorisations avant de créer le cluster. Pour de plus amples informations, veuillez consulter Autorisations de la stratégie d'allocation.
Les réservations de capacité à la demande (ODCR) facultatives sont disponibles lorsque vous utilisez l'option de stratégie d'allocation à la demande. Les options de réservation de capacité vous permettent de définir une préférence pour utiliser d'abord la capacité réservée pour les clusters Amazon EMR. Vous pouvez l'utiliser pour vous assurer que vos charges de travail critiques utilisent la capacité que vous avez déjà réservée à l'aide d'ODCR ouverts ou ciblés. Pour les charges de travail non critiques, les préférences de réservation de capacité vous permettent de spécifier si la capacité réservée doit être consommée.
Les réserves de capacité ne peuvent être utilisées que par des instances qui correspondent à leurs attributs (type d'instance, plateforme et zone de disponibilité). Par défaut, les réservations de capacité ouverte sont automatiquement utilisées par Amazon EMR lors du provisionnement d'instances à la demande qui correspondent aux attributs de l'instance. Si aucune instance en cours d'exécution ne correspond aux attributs des réserves de capacité, celles-ci restent inutilisées jusqu'à ce que vous lanciez une instance correspondant à leurs attributs. Si vous ne voulez utiliser aucune réserve de capacité lors du lancement de votre cluster, vous devez définir la préférence de réserve de capacité sur none dans les options de lancement.
Cependant, vous pouvez également cibler une Réservation de capacité pour des charges de travail spécifiques. Cela vous permet de contrôler explicitement les instances autorisées à s'exécuter dans cette capacité réservée. Pour plus d'informations sur les réserves de capacité à la demande, consultez Utilisation des réserves de capacité avec les parcs d'instances.
Autorisations IAM requises pour une stratégie d'allocation
Votre Rôle de service pour Amazon EMR (rôle EMR) a besoin d'autorisations supplémentaires pour créer un cluster qui utilise l'option de stratégie d'allocation pour les parcs d'instances à la demande ou Spot.
Nous incluons automatiquement ces autorisations dans le rôle de service Amazon EMR par défaut EMR_DefaultRole et dans la politique gérée par Amazon EMR AmazonEMRServicePolicy_v2.
Si vous utilisez un rôle de service personnalisé ou une politique gérée pour votre cluster, vous devez ajouter les autorisations suivantes :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DeleteLaunchTemplate", "ec2:CreateLaunchTemplate", "ec2:DescribeLaunchTemplates", "ec2:CreateLaunchTemplateVersion", "ec2:CreateFleet" ], "Resource": "*" } }
Les autorisations de rôle de service suivantes sont requises pour créer un cluster qui utilise des réservations de capacité ouvertes ou ciblées. Vous devez inclure ces autorisations en plus des autorisations requises pour utiliser l'option de stratégie d'allocation.
Exemple Document de politique pour les réservations de capacité des rôles de service
Pour utiliser les réservations de capacité ouverte, vous devez inclure les autorisations supplémentaires suivantes.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions" ], "Resource": "*" } ] }
Pour utiliser les réservations de capacité ciblées, vous devez inclure les autorisations supplémentaires suivantes.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeCapacityReservations", "ec2:DescribeLaunchTemplateVersions", "ec2:DeleteLaunchTemplateVersions", "resource-groups:ListGroupResources" ], "Resource": "*" } ] }
Configurer des parcs d'instances pour votre cluster
Note
Nous avons repensé la console Amazon EMR pour la rendre plus facile à utiliser. Consultez Nouveautés de la console pour en savoir plus sur les différences entre les anciennes et les nouvelles expériences de console.
Exemples : Création d'un cluster avec la configuration de parcs d'instances
Les exemples suivants illustrent les commandes create-cluster
avec une variété d'options que vous pouvez combiner.
Note
Si vous n'avez pas encore créé le rôle de service Amazon EMR par défaut et le profil d'instance EC2, utilisez aws emr create-default-roles
pour les créer avant d'utiliser la commande create-cluster
.
Exemple : principal à la demande, base à la demande avec un type d'instance unique, VPC par défaut
aws emr create-cluster --release-label
emr-5.3.1
--service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}']
Exemple : Principal Spot, Spot de noyau avec un seul type d'instance, VPC par défaut.
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}'] \ InstanceFleetType=CORE,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
Exemple : principal à la demande, base mixte avec type d'instance unique, sous-réseau EC2 unique
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=2,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=2}']
Exemple : Principal à la demande, Spot de noyau avec plusieurs types d'instances pondérées, délai d'attente pour Spot, gamme de sous-réseaux EC2
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetSpotCapacity=11,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'}
Exemple : Principal à la demande, de noyau mixte et tâche avec plusieurs types d'instances pondérées, délai d'attente pour les instances Spot de noyau, plage de sous-réseaux EC2.
aws emr create-cluster --release-label emr-5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,SubnetIds=['subnet-ab12345c','subnet-de67890f'] \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,InstanceTypeConfigs=['{InstanceType=m5.xlarge}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=8,TargetSpotCapacity=6,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}',\ '{InstanceType=m4.2xlarge,BidPrice=0.9,WeightedCapacity=5}'],\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=120,TimeoutAction=SWITCH_TO_ON_DEMAND}'} \ InstanceFleetType=TASK,TargetOnDemandCapacity=3,TargetSpotCapacity=3,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,WeightedCapacity=3}']
Exemple : Principal Spot, pas de noyau ou tâche, configuration Amazon EBS, VPC par défaut.
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=60,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5,\ EbsConfiguration={EbsOptimized=true,EbsBlockDeviceConfigs=[{VolumeSpecification={VolumeType=gp2,\ SizeIn GB=100}},{VolumeSpecification={VolumeType=io1,SizeInGB=100,Iop s=100},VolumesPerInstance=4}]}}']
Exemple : plusieurs AMI personnalisées, plusieurs types d'instances, principale à la demande, cœur à la demande
aws emr create-cluster --release-label Amazon EMR 5.3.1 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets \ InstanceFleetType=MASTER,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}'] \ InstanceFleetType=CORE,TargetOnDemandCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456},{InstanceType=m6g.xlarge, CustomAmiId=ami-234567}']
Exemple : ajouter un nœud de tâche à un cluster en cours d'exécution avec plusieurs types d'instances et plusieurs AMI personnalisées
aws emr add-instance-fleet --cluster-id j-123456 --release-label Amazon EMR 5.3.1 \ --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleet \ InstanceFleetType=Task,TargetSpotCapacity=1,\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,CustomAmiId=ami-123456}',\ '{InstanceType=m6g.xlarge,CustomAmiId=ami-234567}']
Exemple : Utiliser un fichier de configuration JSON
Vous pouvez configurer des paramètres de parc d'instances dans un fichier JSON, puis référencer le fichier JSON en tant que seul paramètre pour les parcs d'instances. Par exemple, la commande suivante fait référence à un fichier de configuration JSON,
:my-fleet-config.json
aws emr create-cluster --release-label emr-5.30.0 --service-role EMR_DefaultRole \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole \ --instance-fleets file://
my-fleet-config.json
Le fichier my-fleet-config.json
spécifie les parcs d'instances principales, de noyau et de tâche, comme indiqué dans l'exemple suivant. Le parc d'instances principal utilise un prix Spot maximum (BidPrice
) sous la forme d'un pourcentage du prix à la demande, tandis que les parcs d'instances secondaires et primaires utilisent utilisent un prix Spot maximum (BidPriceAsPercentageofOnDemandPrice) sous la forme d'une chaîne en USD.
[ { "Name": "Masterfleet", "InstanceFleetType": "MASTER", "TargetSpotCapacity": 1, "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "SWITCH_TO_ON_DEMAND" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] }, { "Name": "Corefleet", "InstanceFleetType": "CORE", "TargetSpotCapacity": 1, "TargetOnDemandCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "UsageStrategy": "use-capacity-reservations-first", "CapacityReservationResourceGroupArn": "String" } }, "SpotSpecification": { "AllocationStrategy": "capacity-optimized", "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPriceAsPercentageOfOnDemandPrice": 100 } ] }, { "Name": "Taskfleet", "InstanceFleetType": "TASK", "TargetSpotCapacity": 1, "LaunchSpecifications": { "OnDemandSpecification": { "AllocationStrategy": "lowest-price", "CapacityReservationOptions": { "CapacityReservationPreference": "none" } }, "SpotSpecification": { "TimeoutDurationMinutes": 120, "TimeoutAction": "TERMINATE_CLUSTER" } }, "InstanceTypeConfigs": [ { "InstanceType": "m5.xlarge", "BidPrice": "0.89" } ] } ]
Modification des capacités cibles pour un parc d'instances
Utilisez la commande modify-instance-fleet
pour spécifier les nouvelles capacités cibles d'un parc d'instances. Vous devez spécifier l'ID de cluster et l'ID de parc d'instances. Utilisez la commande list-instance-fleets
pour extraire les ID de parc d'instances.
aws emr modify-instance-fleet --cluster-id
<cluster-id>
\ --instance-fleet \ InstanceFleetId='<instance-fleet-id>
',TargetOnDemandCapacity=1,TargetSpotCapacity=1
Ajout d'un parc d'instances de tâches à un cluster
Si un cluster n'a que des parcs d'instances maître et principaux, vous pouvez utiliser la commande add-instance-fleet
pour ajouter un parce d'instances de tâches. Vous pouvez l'utiliser pour ajouter des parcs d'instances de tâches.
aws emr add-instance-fleet --cluster-id
<cluster-id>
--instance-fleet \ InstanceFleetType=TASK,TargetSpotCapacity=1,\ LaunchSpecifications={SpotSpecification='{TimeoutDurationMinutes=20,TimeoutAction=TERMINATE_CLUSTER}'},\ InstanceTypeConfigs=['{InstanceType=m5.xlarge,BidPrice=0.5}']
Obtention des détails de configuration des parcs d'instances dans un cluster
Utilisez la commande list-instance-fleets
pour obtenir les détails de configuration des parcs d'instances dans un cluster. La commande utilise un ID de cluster en entrée. 'exemple suivant illustre une la commande et sa sortie pour un cluster qui contient un groupe d'instances de tâches maître et un groupe d'instances de tâches principal. Pour connaître la syntaxe complète de la réponse, consultez ListInstanceFleets dans la Référence d'API Amazon EMR.
list-instance-fleets --cluster-id
<cluster-id>
{ "InstanceFleets": [ { "Status": { "Timeline": { "ReadyDateTime": 1488759094.637, "CreationDateTime": 1488758719.817 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 6, "Name": "CORE", "InstanceFleetType": "CORE", "LaunchSpecifications": { "SpotSpecification": { "TimeoutDurationMinutes": 60, "TimeoutAction": "TERMINATE_CLUSTER" } }, "ProvisionedOnDemandCapacity": 2, "InstanceTypeSpecifications": [ { "BidPrice": "0.5", "InstanceType": "m5.xlarge", "WeightedCapacity": 2 } ], "Id": "if-1ABC2DEFGHIJ3" }, { "Status": { "Timeline": { "ReadyDateTime": 1488759058.598, "CreationDateTime": 1488758719.811 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "ProvisionedSpotCapacity": 0, "Name": "MASTER", "InstanceFleetType": "MASTER", "ProvisionedOnDemandCapacity": 1, "InstanceTypeSpecifications": [ { "BidPriceAsPercentageOfOnDemandPrice": 100.0, "InstanceType": "m5.xlarge", "WeightedCapacity": 1 } ], "Id": "if-2ABC4DEFGHIJ4" } ] }