Configuration de parcs d'instances - Amazon EMR

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.

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.

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.

New console
Pour créer un cluster avec des parcs d'instances à l'aide de la nouvelle console
  1. Connectez-vous à la AWS Management Console et ouvrez la console Amazon EMR à l'adresse https://console.aws.amazon.com/emr.

  2. Sous EMR sur EC2 dans le panneau de navigation de gauche, sélectionnez Clusters, puis Créer un cluster.

  3. Sous Configuration du cluster, choisissez Parcs d'instances.

  4. Pour chaque Groupe de nœuds, sélectionnez Ajouter un type d'instance et choisissez jusqu'à 5 types d'instances pour les parcs d'instances principales et de noyau et jusqu'à quinze types d'instances pour les parcs d'instances de tâches. Amazon EMR peut allouer n'importe quelle combinaison de ces types d'instance lorsqu'il lance le cluster.

  5. Sous chaque type de groupe de nœuds, choisissez le menu déroulant Actions en regard de chaque instance pour modifier ces paramètres :

    Ajoutez des volumes EBS.

    Spécifiez les volumes EBS à attacher au type d'instance après le provisionnement par Amazon EMR.

    Modifier la capacité pondérée

    Pour le groupe de nœuds principaux, remplacez cette valeur par un nombre d'unités adapté à vos applications. Le nombre de vCores YARN pour chaque type d'instance de parc est utilisé comme unité de capacité pondérée par défaut. Vous ne pouvez pas modifier la capacité pondérée du nœud primaire.

    Modification du prix Spot maximum

    Spécifiez un prix Spot maximum pour chaque type d'instances dans un parc 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. Si le prix Spot actuel dans une zone de disponibilité est inférieur à votre prix Spot maximum, Amazon EMR met en service des instances Spot. Vous payez le prix Spot, et non le prix Spot maximum.

  6. Vous pouvez éventuellement ajouter des groupes de sécurité pour vos nœuds, développez Groupes de sécurité EC2 (pare-feu) dans la section Mise en réseau et sélectionnez votre groupe de sécurité pour chaque type de nœud.

  7. Cochez éventuellement la case à côté de Appliquer la stratégie d'allocation si vous souhaitez utiliser l'option de stratégie d'allocation, puis sélectionnez la stratégie d'allocation que vous souhaitez spécifier pour les instances Spot. Vous ne devez pas sélectionner cette option si votre rôle de service Amazon EMR ne dispose pas des autorisations requises. Pour de plus amples informations, veuillez consulter Stratégie d'allocation pour les parcs, par exemple.

  8. Choisissez toutes les autres options qui s'appliquent à votre cluster.

  9. Pour lancer votre cluster, choisissez Créer le cluster.

Old console
Pour créer un cluster avec des parcs d'instances avec l'ancienne console
  1. Accédez à la nouvelle console Amazon EMR et sélectionnez Basculer vers l'ancienne console depuis le menu latéral. Pour plus d'informations sur ce qui vous attend lorsque vous passez à l'ancienne console, consultez la rubrique Utilisation de l'ancienne console.

  2. Choisissez Create Cluster (Créer un cluster).

  3. En haut de la fenêtre de console, choisissez Accéder aux options avancées, entrez les options de Configuration logicielle, puis cliquez sur Suivant.

  4. Sous Composition du cluster, sélectionnez Parcs d'instances. Lorsque vous sélectionnez l'option parcs d'instances, les options permettant de spécifier la Capacité cible des instances à la demande et Spot devraient apparaître dans le tableau des Nœuds et instances du cluster.

  5. Pour Réseau, saisissez une valeur. Si vous choisissez un VPC à côté de Réseau, choisissez un seul Sous-réseau EC2 ou utilisez CTRL + clic pour choisir plusieurs sous-réseaux Amazon EC2. Les sous-réseaux que vous sélectionnez doivent être du même type (public ou privé). Si vous en choisissez un seul, votre cluster se lance dans ce sous-réseau. Si vous choisissez un groupe, c'est le sous-réseau du groupe le mieux adapté qui est sélectionné lors du lancement du cluster.

    Note

    Votre compte et la région peuvent vous offrir la possibilité de choisir l'option Lancer dans EC2-Classic à côté de Réseau. Si vous choisissez cette option, choisissez une ou plusieurs Zones de disponibilité EC2 au lieu de Sous-réseaux EC2. Pour plus d'informations, consultez Amazon EC2 et Amazon VPC dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.

  6. Sous Stratégie d'allocation, cochez la case pour appliquer les stratégies d'allocation si vous souhaitez utiliser l'option de stratégie d'allocation. Pour de plus amples informations, veuillez consulter Stratégie d'allocation pour les parcs, par exemple.

  7. Pour chaque Type de nœud, si vous voulez modifier le nom par défaut d'un parc d'instances, cliquez sur l'icône en forme de crayon, puis saisissez un nom convivial. Si vous souhaitez supprimer le parc d'instances de Tâche, cliquez sur l'icône X sur le côté droit de la ligne de tâches.

  8. Choisissez Ajouter/supprimer des types d'instances au parc et choisissez jusqu'à cinq types d'instances dans la liste pour les parcs d'instances principales et principales ; ajoutez jusqu'à quinze types d'instances pour les parcs d'instances de tâches. Amazon EMR peut choisir de provisionner n'importe quelle combinaison de ces types d'instances lors du lancement du cluster.

  9. Pour chaque type d'instance principale et de tâche, choisissez la manière dont vous souhaitez définir la capacité pondérée (chaque instance compte pour X unités) pour cette instance. Le nombre de YARN VCores pour chaque type de parc d'instance est utilisé comme unité de capacité pondérée par défaut, mais vous pouvez modifier la valeur en n'importe quelle unité adaptée à vos applications.

  10. Sous Capacité cible, définissez le nombre total d'instances à la demande et Spot que vous souhaitez par parc. L'EMR garantit que les instances du parc fournissent les unités demandées pour la capacité cible à la demande et Spot. Si aucune unité à la demande ou Spot n'est spécifiée pour une parc, aucune capacité n'est allouée pour cette parc.

  11. Si un parc d'instances est configuré avec une capacité cible pour Spot, vous pouvez entrer votre prix Spot maximum en tant que % de la tarification à la demande, ou vous pouvez entrer un montant en dollars ($) en USD.

  12. Pour que les volumes EBS soient attachés au type d'instance lors de sa mise en service, choisissez le crayon à côté de Stockage sur EBS et indiquez les options de configuration EBS.

  13. Si vous avez établi un décompte instantané pour les Unités Spot, définissez les Options Spot avancées conformément aux directives suivantes :

    • Délai dépassé pour la mise en service – Ces paramètres permettent de contrôler ce que fait Amazon EMR lorsqu'il ne peut pas mettre en service des instances Spot au sein des Types d'instances du parc que vous spécifiez. Vous saisissez un délai d'expiration en minutes, puis choisissez de Mettre fin au cluster ou de Passer à une mise en service des instances à la demande. Si vous choisissez de passer à des instances à la demande, la capacité attribuée des instances à la demande compte pour la capacité cible des instances Spot, et Amazon EMR alloue des instances à la demande jusqu'à ce que la capacité cible des instances Spot soit atteinte.

  14. Choisissez Suivant, modifiez les autres paramètres du cluster, puis choisissez Suivant.

  15. Si vous avez choisi d'appliquer la nouvelle option de stratégie d'allocation, dans les paramètres des Options de sécurité, sélectionnez un Rôle EMR et un Profil d'instance EC2 contenant les autorisations requises pour l'option de stratégie d'allocation. Dans le cas contraire, la création du cluster échouera.

  16. Choisissez Create Cluster (Créer un cluster).

AWS CLI

Pour créer et lancer un cluster avec des parcs d'instances avec l'AWS CLI, suivez les instructions suivantes :

  • Pour créer et lancer un cluster avec des parcs d'instances, utilisez la commande create-cluster avec les paramètres --instance-fleet.

  • Pour afficher les détails de configuration sur les parcs d'instances dans un cluster, utilisez la commande list-instance-fleets.

  • Pour ajouter plusieurs AMI Amazon Linux personnalisées à un cluster que vous créez, utilisez l'option CustomAmiId associée à chaque spécification InstanceType. Vous pouvez configurer des nœuds de parc d'instances avec plusieurs types d'instances et plusieurs AMI personnalisées pour répondre à vos besoins. Consultez Exemples : Création d'un cluster avec la configuration de parcs d'instances.

  • Pour apporter des modifications à la capacité cible d'un parc d'instances, utilisez la commande modify-instance-fleet.

  • Pour ajouter un parc d'instances de tâches à un cluster qui n'en possède pas déjà, utilisez la commande add-instance-fleet.

  • Plusieurs AMI personnalisées peuvent être ajoutées au parc d'instances de tâches à l'aide de l'argument customAMIid associé à la commande add instance-fleet. Consultez Exemples : Création d'un cluster avec la configuration de parcs d'instances.

  • Pour utiliser l'option de stratégie d'allocation lors de la création d'un parc d'instances, mettez à jour le rôle de service pour inclure l'exemple de document de politique dans la section suivante.

  • Pour utiliser les options de réservation de capacité lors de la création d'un parc d'instances avec une stratégie d'allocation à la demande, mettez à jour le rôle de service pour inclure l'exemple de document de politique dans la section suivante.

  • Les parcs d'instances sont automatiquement incluses dans le rôle de service 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 par le client pour votre cluster, vous devez ajouter les nouvelles autorisations pour la stratégie d'allocation dans la section suivante.

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" } ] }