Utilisation de la protection contre la résiliation - Amazon EMR

Utilisation de la protection contre la résiliation

Lorsque la protection contre la résiliation est activée sur un cluster de longue durée, vous pouvez toujours résilier le cluster, mais vous devez explicitement supprimer la protection contre la résiliation du cluster pour pouvoir l'arrêter. Cela permet d'assurer que les instances EC2 ne sont pas résiliées par accident ou par erreur. Cette protection contre la résiliation est particulièrement utile si votre cluster contient des données stockées sur des disques locaux que vous avez besoin de récupérer avant que ces instances soient résiliées. Vous pouvez activer la protection de la résiliation lorsque vous créez un cluster et vous pouvez modifier le paramètre sur un cluster en cours d'exécution.

Lorsque la protection de la résiliation est activée, l'action TerminateJobFlows dans l'API Amazon EMR ne fonctionne pas. Les utilisateurs ne peuvent pas résilier le cluster à l'aide de cette API ou de la commande terminate-clusters dans l'AWS CLI. L'API retourne une erreur et l'interface de ligne de commande se ferme avec un code de retour non nul. Lorsque vous utilisez la console Amazon EMR pour résilier un cluster, une étape supplémentaire vous est proposée pour désactiver la protection contre la résiliation.

Avertissement

La protection contre la résiliation ne garantit pas la conservation des données en cas d'erreur humaine ou de solution de contournement, par exemple, si une commande de redémarrage est émise depuis la ligne de commande alors que vous êtes connecté à l'instance via SSH, si une application ou un script exécuté sur l'instance émet une commande de redémarrage ou si l'API Amazon EC2 ou Amazon EMR est utilisée pour désactiver la protection contre la résiliation. Même lorsque la protection contre la résiliation est activée, les données enregistrées sur le stockage de l'instance, y compris les données HDFS, peuvent être perdues. Rédigez les données de sortie vers les sites Amazon S3 et créez des stratégies de sauvegarde adaptées à vos exigences de continuité d'activité.

La protection de la résiliation n'affecte pas votre capacité à dimensionner des ressources de cluster en utilisant l'une des actions suivantes :

Protection contre la résiliation et Amazon EC2

Un cluster Amazon EMR avec la protection de la résiliation activée comporte l'attribut disableAPITermination défini pour toutes les instances Amazon EC2 du cluster. Si une demande de résiliation provient d'Amazon EMR et des paramètres Amazon EMR et Amazon EC2 relatifs à un conflit d'instance, le paramètre Amazon EMR remplace le paramètre Amazon EC2. Par exemple, si vous utilisez la console pour activer la protection de résiliation sur une instance Amazon EC2 dans un cluster dont la protection de résiliation est désactivée, lorsque vous utilisez la console Amazon EMR, les commandes AWS CLI pour Amazon EMR, ou l'API Amazon EMR pour résilier le cluster, Amazon EMR définit DisableApiTermination sur false et résilie l'instance en même temps que les autres instances.

Important

Si une instance est créée dans le cadre d'un cluster Amazon EMR avec la protection de la résiliation, et l'API Amazon EC2 ou les commandes AWS CLI sont utilisées pour modifier l'instance afin que DisableApiTermination soit false, puis l'API Amazon EC2 ou les commandes AWS CLI exécutent l'action TerminateInstances, l'instance Amazon EC2 se résilie.

Protection contre la résiliation et nœuds YARN non sains

Amazon EMR vérifie périodiquement l'état Apache Hadoop YARN des nœuds principaux s'exécutant sur des instances Amazon EC2 de noyau et de tâche dans un cluster. L'état est signalé par le Service de vérification de l'état NodeManager. Si un nœud signale UNHEALTHY, le contrôleur d'instance Amazon EMR refuse le nœud et ne lui alloue pas de conteneurs YARN jusqu'à ce qu'il redevienne sain. La raison la plus commune pour des nœuds non sains s'explique par le fait que l'utilisation des disques dépasse 90 %. Pour plus d'informations sur l'identification des nœuds non sains et leur récupération, consultez Erreurs de ressource.

Si le nœud reste UNHEALTHY pendant plus de 45 minutes, Amazon EMR prend l'action suivante en fonction de l'état de la protection de la résiliation.

Protection de la résiliation Résultat

Activé (Recommandé)

Les instances principales Amazon EC2 restent dans un état de liste refusée et continuent d'être prises en compte dans la capacité du cluster. Vous pouvez vous connecter à une instance principale Amazon EC2 pour la configuration et la récupération des données, et redimensionner votre cluster pour ajouter de la capacité. Pour de plus amples informations, veuillez consulter Erreurs de ressource.

Les nœuds de tâches défectueux sont exemptés de la protection contre la résiliation et seront résiliés.

Désactivé

L'instance Amazon EC2 est résiliée. Amazon EMR alloue une nouvelle instance en fonction du nombre d'instances spécifié dans le groupe d'instances ou de la capacité cible pour les parcs d'instances. Si tous les nœuds principaux sont UNHEALTHY pendant plus de 45 minutes, le cluster se résilie avec un rapport d'état NO_SLAVES_LEFT.

Important

Les données HDFS peuvent être perdues si une instance de noyau est résiliée à cause d'un état non sain. Si le nœud a stocké des blocs qui n'ont pas été répliqués à d'autres nœuds, ces blocs sont perdus, ce qui peut entraîner une perte de données. Nous vous recommandons d'utiliser la protection de la résiliation afin de pouvoir vous connecter à des instances et récupérer les données si nécessaire.

Protection contre la résiliation et exécution des étapes

Lorsque vous activez l'exécution des étapes et que vous activez également la protection contre la résiliation, Amazon EMR ignore la protection contre la résiliation.

Lorsque vous soumettez des étapes à un cluster, vous pouvez définir la propriété ActionOnFailure pour déterminer ce qui se produit si l'étape ne peuvent pas terminer son exécution en raison d'une erreur. Les valeurs possibles pour ce paramètre sont TERMINATE_CLUSTER (TERMINATE_JOB_FLOW avec les versions antérieures), CANCEL_AND_WAIT, et CONTINUE. Pour de plus amples informations, veuillez consulter Soumission de travail à un cluster.

En cas d'échec d'une étape configurée avec ActionOnFailure défini sur CANCEL_AND_WAIT, si l'exécution des étapes est activée, le cluster est résilié sans exécuter les étapes suivantes.

Si une étape qui est configurée avec la ActionOnFailure valeur TERMINATE_CLUSTER échoue, utilisez la table de paramètres ci-dessous pour déterminer le résultat.

ActionOnFailure Exécution des étapes Protection de la résiliation Résultat

TERMINATE_CLUSTER

Activé

Désactivé

Le cluster se résilie

Activé

Activé

Le cluster se résilie

Désactivé

Activé

Le cluster continue

Désactivé

Désactivé

Le cluster se résilie

Protection contre la résiliation et instances Spot

La protection de la résiliation Amazon EMR n'empêche pas la résiliation d'une instance Spot Amazon EC2 lorsque le prix Spot dépasse le prix Spot maximum.

Configuration de la protection contre la résiliation lorsque vous lancez un cluster

Vous pouvez activer ou désactiver la protection contre l'arrêt lorsque vous lancez un cluster à l'aide de la console, de l'AWS CLI ou de l'API.

Par défaut, le paramètre de protection de la résiliation dépend de la façon dont vous lancez le cluster :

  • Console Amazon EMR (nouvelle) : la protection contre la résiliation est activée par défaut.

  • Options rapides de la console Amazon EMR (ancienne) : la protection contre la résiliation est désactivée par défaut.

  • Options avancées de la console Amazon EMR (ancienne) : la protection contre la résiliation est activée par défaut.

  • AWS CLI aws emr create-cluster – La protection de la résiliation est désactivée, sauf si --termination-protected a été spécifié.

  • La commande d'API Amazon EMR RunJobFlow – La protection de la résiliation est désactivée, sauf si la valeur booléenne TerminationProtected est définie sur true.

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 activer ou désactiver la protection de la résiliation lorsque vous créez un cluster à 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 volet de navigation de gauche, choisissez Clusters, puis Créer un cluster.

  3. Pour la version d'EMR, choisissez emr-6.6.0 ou une version ultérieure.

  4. Sous Résiliation du cluster, assurez-vous que l'option Utiliser la protection contre la résiliation est présélectionnée, ou désactivez la sélection pour la désactiver.

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

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

Old console
Pour activer ou désactiver la protection de la résiliation lorsque vous créez un cluster à l'aide de 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. Choisissez Accéder aux options avancées.

  4. Pour Step 3: General Cluster Settings (Étape 3 : Paramètres généraux de cluster), sous General Options (Options générales) veillez à ce que laProtection de la résiliation soit sélectionnée pour l'activer, ou effacer la sélection pour la désactiver.

  5. Choisissez d'autres paramètres selon les besoins de votre application, choisissez Next (Suivant), puis terminer la configuration de votre cluster.

AWS CLI
Pour activer ou désactiver la protection contre la résiliation lorsque vous créez un cluster à l'aide de l'option AWS CLI.
  • Avec l'AWS CLI, vous pouvez lancer un cluster avec la protection de la résiliation activée avec la commande create-cluster avec le paramètre --termination-protected. La protection de la résiliation est désactivée par défaut.

    L'exemple suivant crée un cluster avec la protection de la résiliation activée :

    Note

    Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

    aws emr create-cluster --name "TerminationProtectedCluster" --release-label emr-5.36.1 \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --termination-protected

    Pour plus d'informations sur l'utilisation des commandes Amazon EMR dans l'AWS CLI, consultez https://docs.aws.amazon.com/cli/latest/reference/emr.

Configuration de la protection contre la résiliation pour les clusters en cours d'exécution

Vous pouvez configurer la protection contre l'arrêt pour un cluster en cours d'exécution à l'aide de la console ou de l'AWS CLI.

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 activer ou désactiver la protection de la résiliation pour un cluster en cours d'exécution à 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 volet de navigation de gauche, choisissez Clusters, puis sélectionnez le cluster que vous souhaitez mettre à jour.

  3. Dans l'onglet Propriétés de la page des détails du cluster, recherchez Résiliation du cluster et sélectionnez Modifier.

  4. Cochez ou décochez la case Utiliser la protection contre la résiliation pour activer ou désactiver la fonctionnalité. Sélectionnez ensuite Enregistrer les modifications pour confirmer.

Old console
Pour activer ou désactiver la protection de la résiliation pour un cluster en cours d'exécution à l'aide de 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. Sur la page Clusters, choisissez le Nom de votre cluster.

  3. Dans l'onglet Summary (Récapitulatif), pour la Termination protection (Protection de la résiliation), choisissez Change (Modifier).

  4. Pour activer la protection de la résiliation, choisissez On (Activée). Pour désactiver la protection de la résiliation, choisissez Off (Désactivée). Ensuite, sélectionnez la coche verte pour confirmer.

AWS CLI
Pour activer ou désactiver la protection contre la résiliation pour un cluster en cours d'exécution, utilisez l'option AWS CLI.
  • Pour activer la protection de la résiliation sur un cluster en cours d'exécution à l'aide de l'AWS CLI, utilisez la commande modify-cluster-attributes avec le paramètre --termination-protected. Pour la désactiver, utilisez le paramètre --no-termination-protected.

    L'exemple suivant active la protection de la résiliation sur le cluster doté de l'ID j-3KVTXXXXXX7UG :

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --termination-protected

    L'exemple suivant désactive la protection de la résiliation sur le même cluster :

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-termination-protected