Redimensionnement manuel d'un cluster en cours d'exécution
Vous pouvez ajouter et supprimer des instances dans les groupes d'instances principaux et de tâches, et des flottes d'instances dans un cluster en cours d'exécution à l'aide de la AWS Management Console, de l'interface AWS CLI ou de l'API Amazon EMR. Si un cluster utilise des groupes d'instances, vous devez modifier explicitement le nombre d'instances. Si le cluster utilise des parcs d'instances, vous pouvez modifier les unités cibles pour les instances à la demande et les instances Spot. Le parc d'instances ajoute et supprime ensuite des instances afin de répondre à la nouvelle cible. Pour de plus amples informations, veuillez consulter Options de parc d'instances. Des applications peuvent utiliser les instances Amazon EC2 nouvellement allouées pour héberger des nœuds dès qu'elles deviennent disponibles. Lorsque les instances sont supprimées, Amazon EMR met fin aux tâches sans interrompre les autres, et prévient la perte de données. Pour de plus amples informations, veuillez consulter Mise hors service lors de l'achèvement de la tâche.
Redimensionnement d'un cluster à l'aide de la console
Vous pouvez utiliser la console Amazon EMR pour redimensionner un cluster en cours d'exécution.
Note
Nous avons repensé la console Amazon EMR pour en faciliter l'utilisation. Consultez Nouveautés de la console pour en savoir plus sur les différences entre l'ancienne et la nouvelle expérience console.
Lorsque vous modifiez le nombre de nœuds, le Statut du groupe d'instances est mis à jour. Lorsque la modification est terminée, le Statut est En cours d'exécution.
Redimensionner un cluster à l'aide de AWS CLI
Vous pouvez utiliser l'AWS CLI pour redimensionner un cluster en cours d'exécution. Vous pouvez augmenter ou diminuer le nombre de nœuds de tâches, et vous pouvez augmenter le nombre de nœuds principaux dans un cluster en cours d'exécution. Il est également possible d'arrêter une instance dans le groupe d'instances principal à l'aide de l'interface AWS CLI ou de l'API. Cela doit être effectué avec précautions. L'arrêt d'une instance dans le groupe d'instances principal entraîne un risque de perte de données, et l'instance n'est pas automatiquement remplacée.
Outre le redimensionnement des groupes principaux et de tâches, vous pouvez ajouter un ou plusieurs groupes d'instances de tâches à un cluster en cours d'exécution à l'aide de l'interface AWS CLI.
Redimensionner un cluster en modifiant le nombre d'instances à l'aide de l'interface AWS CLI
Vous pouvez ajouter des instances au groupe principal ou au groupe de tâches, et vous pouvez supprimer des instances du groupe de tâches à l'aide de la sous-commande modify-instance-groups
de l'interface AWS CLI avec le paramètre InstanceCount
. Pour ajouter des instances aux groupes principaux ou de tâches, augmentez la valeur InstanceCount
. Pour réduire le nombre d'instances dans le groupe de tâches, diminuez la valeur InstanceCount
. La mise à zéro du nombre d'instances du groupe de tâches supprime toutes les instances mais pas le groupe d'instances.
-
Pour augmenter le nombre d'instances du groupe d'instances de tâches de 3 à 4, tapez la commande suivante et remplacez
ig-31JXXXXXXBTO
par l'ID du groupe d'instances.aws emr modify-instance-groups --instance-groups InstanceGroupId=
ig-31JXXXXXXBTO
,InstanceCount=4
Pour récupérer le
InstanceGroupId
, utilisez la sous-commandedescribe-cluster
. Le résultat est un objet JSON appeléCluster
qui contient l'ID de chaque groupe d'instances. Pour utiliser cette commande, vous avez besoin de l'ID du cluster (que vous pouvez récupérer à l'aide de la commandeaws emr list-clusters
ou de la console). Pour récupérer l'ID de groupe d'instances, tapez la commande suivante et remplacezj-2AXXXXXXGAPLF
par l'ID du cluster.aws emr describe-cluster --cluster-id
j-2AXXXXXXGAPLF
Dans l'interface AWS CLI, vous pouvez également arrêter une instance dans le groupe d'instances principal à l'aide de la sous-commande
--modify-instance-groups
.Avertissement
La spécification de
EC2InstanceIdsToTerminate
doit s'effectuer avec précaution. Les instances sont résiliées immédiatement, quel que soit le statut des applications qui s'y exécutent, et l'instance n'est pas automatiquement remplacée. Cela est vrai quelle que soit la configuration Comportement de dimensionnement à la baisse du cluster. Une telle résiliation d'une instance peut entraîner une perte des données et un comportement du cluster imprévisible.Pour arrêter une instance spécifique, vous avez besoin de l'ID du groupe d'instances (retourné par la sous-commande
aws emr describe-cluster --cluster-id
) et de l'ID d'instance (renvoyé par la sous-commandeaws emr list-instances --cluster-id
). Tapez la commande suivante, remplacezig-6RXXXXXX07SA
par l'ID du groupe d'instances et remplacezi-f9XXXXf2
par l'ID d'instance.aws emr modify-instance-groups --instance-groups InstanceGroupId=
ig-6RXXXXXX07SA
,EC2InstanceIdsToTerminate=i-f9XXXXf2
Pour plus d'informations sur l'utilisation des commandes Amazon EMR dans l'interface AWS CLI, consultez https://docs.aws.amazon.com/cli/latest/reference/emr.
Redimensionner un cluster en ajoutant des groupes d'instances de tâches à l'aide de l'interface AWS CLI
Dans l'interface AWS CLI, vous pouvez ajouter entre 1 et 48 groupes d'instances de tâches à un cluster avec la sous-commande --add-instance-groups
. Les groupes d'instances de tâches peuvent uniquement être ajoutés à un cluster contenant un groupe d'instances primaire et un groupe d'instances principal. Lorsque vous utilisez l'interface AWS CLI, vous pouvez ajouter jusqu'à cinq groupes d'instances de tâches chaque fois que vous utilisez la sous-commande --add-instance-groups
.
-
Pour ajouter un groupe d'instances de tâches unique à un cluster, tapez la commande suivante et remplacez
j-JXBXXXXXX37R
par l'ID du cluster.aws emr add-instance-groups --cluster-id
j-JXBXXXXXX37R
--instance-groups InstanceCount=6
,InstanceGroupType=task
,InstanceType=m5.xlarge
-
Pour ajouter plusieurs groupes d'instances de tâches à un cluster, tapez la commande suivante et remplacez
j-JXBXXXXXX37R
par l'ID du cluster. Vous pouvez ajouter jusqu'à cinq groupes d'instances de tâches dans une seule commande.aws emr add-instance-groups --cluster-id
j-JXBXXXXXX37R
--instance-groups InstanceCount=6
,InstanceGroupType=task
,InstanceType=m5.xlarge
InstanceCount=10
,InstanceGroupType=task
,InstanceType=m5.xlarge
Pour plus d'informations sur l'utilisation des commandes Amazon EMR dans l'interface AWS CLI, consultez https://docs.aws.amazon.com/cli/latest/reference/emr.
Interruption d'un redimensionnement
Avec Amazon EMR version 4.1.0 ou ultérieure, vous pouvez émettre un redimensionnement au milieu d'une opération de redimensionnement existante. En outre, vous pouvez arrêter une demande de redimensionnement déjà soumise ou soumettre une nouvelle demande pour remplacer une demande précédente sans attendre qu'elle se termine. Vous pouvez également arrêter un redimensionnement existant à partir de la console ou à l'aide de l'appel d'API ModifyInstanceGroups
avec le nombre actuel comme nombre cible du cluster.
La capture d'écran suivante illustre un groupe d'instances de tâches qui est en cours de redimensionnement, mais qui peut être arrêté en choisissant Arrêter.
Interrompre un redimensionnement à l'aide de l'interface AWS CLI
Vous pouvez utiliser l'interface AWS CLI pour arrêter un redimensionnement à l'aide de la sous-commande modify-instance-groups
. Supposez vous avez six instances dans votre groupe d'instances et que vous voulez passer à 10 instances. Vous décidez plus tard d'annuler cette demande :
-
Demande initiale :
aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-
myInstanceGroupId
,InstanceCount=10Seconde demande visant à arrêter la première demande :
aws emr modify-instance-groups --instance-groups InstanceGroupId=ig-
myInstanceGroupId
,InstanceCount=6
Note
Comme ce processus est asynchrone, vous pouvez voir les nombres d'instances changer en fonction des demandes d'API précédentes avant que les demandes suivantes soient honorées. Dans le cas d'une réduction, si vous avez du travail en cours d'exécution sur les nœuds, il est possible que le groupe d'instances ne soit pas réduit tant que les nœuds n'ont pas terminé leur travail.
État Interrompu
Un groupe d'instances passe à l'état interrompu s'il rencontre trop d'erreurs en essayant de démarrer les nouveaux nœuds du cluster. Par exemple, si les nouveaux nœuds échouent lors de la réalisation d'actions d'amorçage, le groupe d'instances passe à l'état INTERROMPU au lieu de mettre en service en permanence de nouveaux nœuds. Une fois que vous avez résolu le problème sous-jacent, réinitialisez le nombre voulu de nœuds sur le groupe d'instances du cluster, puis le groupe d'instances reprend l'allocation des nœuds. La modification d'un groupe d'instances indique à Amazon EMR d'essayer de mettre de nouveau en service des nœuds. Aucun nœud en cours d'exécution n'est redémarré ou arrêté.
Dans l'AWS CLI, la sous-commande list-instances
retourne toutes les instances et leurs états, comme la sous-commande describe-cluster
. Si Amazon EMR détecte un défaut avec un groupe d'instances, il change l'état du groupe en spécifiant SUSPENDED
.
Remettre un cluster dans un état SUSPENDU à l'aide de l'interface AWS CLI
Tapez la sous-commande describe-cluster
avec le paramètre --cluster-id
afin d'afficher l'état des instances figurant dans votre cluster.
-
Pour afficher des informations sur toutes les instances et les groupes d'instances d'un cluster, tapez la commande suivante et remplacez
j-3KVXXXXXXY7UG
par l'ID du cluster.aws emr describe-cluster --cluster-id
j-3KVXXXXXXY7UG
Les données de sortie affichent des informations sur vos groupes d'instances et l'état de ces instances :
{ "Cluster": { "Status": { "Timeline": { "ReadyDateTime": 1413187781.245, "CreationDateTime": 1413187405.356 }, "State": "WAITING", "StateChangeReason": { "Message": "Waiting after step completed" } }, "Ec2InstanceAttributes": { "Ec2AvailabilityZone": "us-west-2b" }, "Name": "Development Cluster", "Tags": [], "TerminationProtected": false, "RunningAmiVersion": "3.2.1", "NormalizedInstanceHours": 16, "InstanceGroups": [ { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1413187775.749, "CreationDateTime": 1413187405.357 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "MASTER", "InstanceGroupType": "MASTER", "InstanceType": "m5.xlarge", "Id": "ig-3ETXXXXXXFYV8", "Market": "ON_DEMAND", "RunningInstanceCount": 1 }, { "RequestedInstanceCount": 1, "Status": { "Timeline": { "ReadyDateTime": 1413187781.301, "CreationDateTime": 1413187405.357 }, "State": "RUNNING", "StateChangeReason": { "Message": "" } }, "Name": "CORE", "InstanceGroupType": "CORE", "InstanceType": "m5.xlarge", "Id": "ig-3SUXXXXXXQ9ZM", "Market": "ON_DEMAND", "RunningInstanceCount": 1 } ... }
Pour afficher les informations concernant un groupe d'instances particulier, tapez la sous-commande
list-instances
avec les paramètres--cluster-id
et--instance-group-types
. Vous pouvez consulter des informations pour les groupes primaires, principaux et de tâches.aws emr list-instances --cluster-id
j-3KVXXXXXXY7UG
--instance-group-types"CORE"
Utilisez la sous-commande
modify-instance-groups
avec le paramètre--instance-groups
pour réinitialiser un cluster dans l'étatSUSPENDED
. L'ID du groupe d'instances est renvoyé par la sous-commandedescribe-cluster
.aws emr modify-instance-groups --instance-groups InstanceGroupId=
ig-3SUXXXXXXQ9ZM
,InstanceCount=3
Considérations relatives à la réduction de la taille du cluster
Si vous choisissez de réduire la taille d'un cluster en cours d'exécution, tenez compte du comportement et des meilleures pratiques d'Amazon EMR suivantes :
-
Pour réduire l'impact sur les tâches en cours, Amazon EMR sélectionne intelligemment les instances à supprimer. Pour plus d'informations sur le comportement de réduction des clusters, consultez Mise hors service lors de l'achèvement de la tâche dans le Guide de gestion Amazon EMR.
-
Lorsque vous réduisez la taille d'un cluster, Amazon EMR copie les données des instances qu'il supprime vers les instances restantes. Assurez-vous que la capacité de stockage de ces données est suffisante dans les instances qui restent dans le groupe.
-
Amazon EMR tente de mettre hors service HDFS sur les instances du groupe. Avant de réduire la taille d'un cluster, nous vous recommandons de minimiser les E/S d'écriture HDFS.
-
Pour un contrôle plus précis lorsque vous réduisez la taille d'un cluster, vous pouvez afficher le cluster dans la console et accéder à l'onglet Instances. Sélectionnez l'ID du groupe d'instances que vous souhaitez redimensionner. Utilisez ensuite l'option Terminer pour les instances spécifiques que vous souhaitez supprimer.