View a markdown version of this page

Utiliser la protection contre les interruptions de service pour protéger vos clusters Amazon EMR contre tout arrêt accidentel - Amazon EMR

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

Utiliser la protection contre les interruptions de service pour protéger vos clusters Amazon EMR contre tout arrêt accidentel

La protection contre les interruptions protège vos clusters contre les interruptions accidentelles, ce qui peut être particulièrement utile pour les clusters de longue durée traitant des charges de travail critiques. 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. Cela permet d'assurer que les instances EC2 ne sont pas résiliées par accident ou par erreur. 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. Cela est également vrai si vous utilisez les versions 7.1 et supérieures d'Amazon EMR et qu'une instance devient défectueuse et irrécupérable. 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

Le paramètre de protection contre les interruptions dans un cluster Amazon EMR correspond à DisableApiTermination attribut pour toutes les instances Amazon EC2 du cluster. Par exemple, si vous activez la protection contre la résiliation dans un cluster EMR, Amazon EMR définit automatiquement DisableApiTermination à true pour toutes les instances EC2 du cluster EMR. Il en va de même si vous désactivez la protection contre la résiliation. Amazon EMR définit automatiquement DisableApiTermination à false pour toutes les instances EC2 du cluster EMR. Si vous résiliez ou réduisez la taille d'un cluster depuis Amazon EMR et que les paramètres Amazon EC2 sont en conflit pour une instance EC2, Amazon EMR donne la priorité au paramètre Amazon EMR par rapport à DisableApiStop et DisableApiTermination paramètres dans Amazon EC2 et continue de mettre fin à l'instance EC2.

Par exemple, vous pouvez utiliser la console Amazon EC2 pour activer la protection de terminaison sur une instance Amazon EC2 dans un cluster EMR avec la protection de terminaison désactivée. Si vous fermez ou réduisez le cluster à l'aide de la console Amazon EMR, AWS CLI, ou l'API Amazon EMR, Amazon EMR remplace le DisableApiTermination paramètre, le définit sur false et met fin à l'instance ainsi qu'aux autres instances.

Vous pouvez également utiliser la console Amazon EC2 pour activer la protection d'arrêt sur une instance Amazon EC2 dans un cluster EMR avec la protection de terminaison désactivée. Si vous mettez fin au cluster ou si vous le réduisez, Amazon EMR définit DisableApiStop prend la valeur false dans Amazon EC2 et met fin à l'instance ainsi qu'aux autres instances.

Amazon EMR remplace le DisableApiStop réglage uniquement lorsque vous mettez fin à un cluster ou que vous le réduisez. Lorsque vous activez ou désactivez la protection contre les interruptions de service dans un cluster EMR, Amazon EMR ne modifie pas disableApiStop réglage pour l'une des instances EC2 du cluster EMR correspondant.

Important

Si vous créez une instance dans le cadre d'un cluster Amazon EMR avec protection contre les interruptions de service et que vous utilisez l'API Amazon EC2 ou AWS CLI commandes pour modifier l'instance afin que DisableApiTermination est false, puis l'API Amazon EC2 ou AWS CLI les commandes exécutent le TerminateInstances opération, l'instance Amazon EC2 s'arrête.

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 de santé est communiqué par le NodeManager service de contrôle de santé. Si un nœud signale UNHEALTHY, le contrôleur d'instance Amazon EMR ajoute le nœud à une liste de refus et ne lui alloue pas de conteneurs YARN tant qu'il ne redevient pas sain. En fonction de l'état de la protection contre les interruptions de service, du remplacement défectueux des nœuds et de la version finale d'Amazon EMR, Amazon EMR pourra soit remplacer l'instance défectueuse ou arrêter d'allouer des contrôleurs à l'instance.

Protection contre la résiliation et résiliation après l'exécution des étapes

Lorsque vous activez la résiliation après l'exécution d'une étape et également activez la protection de résiliation, Amazon EMR ignore la protection de 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 plus d’informations, consultez Soumettre un travail à un cluster Amazon EMR.

Si une étape échoue, elle est configurée avec ActionOnFailure réglé sur CANCEL_AND_WAIT, si la terminaison après l'exécution des étapes est activée, le cluster se termine 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 Résiliation après exécution de l'étape 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 les interruptions lorsque vous lancez un cluster à l'aide de la console, AWS CLI, ou l'API.

Pour les clusters à nœud unique, les paramètres de protection de terminaison par défaut sont les suivants :

  • Lancement d'un cluster par la console Amazon EMR — La protection contre la terminaison est handicapé par défaut.

  • Lancement d'un cluster par AWS CLI aws emr create-cluster—La protection contre la résiliation est handicapé sauf si --termination-protected est spécifié.

  • Lancement d'un cluster par l'API Amazon EMR RunJobFlow La protection commande-terminaison est handicapé à moins que le TerminationProtected la valeur booléenne est définie sur true.

Pour les clusters à haute disponibilité, les paramètres de protection de terminaison par défaut sont les suivants :

  • Lancement d'un cluster par la console Amazon EMR — La protection contre la résiliation est activé par défaut.

  • Lancement d'un cluster par AWS CLI aws emr create-cluster—La protection contre la résiliation est handicapé sauf si --termination-protected est spécifié.

  • Lancement d'un cluster par l'API Amazon EMR RunJobFlow La protection commande-terminaison est handicapé à moins que le TerminationProtected la valeur booléenne est définie sur true.

Console
Pour activer ou désactiver la protection contre la résiliation lorsque vous créez un cluster à l'aide de la console
  1. Connectez-vous au Console de gestion AWS, 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. En dessous Arrêt du cluster et remplacement des nœuds, assurez-vous que Utiliser la protection contre la résiliation est présélectionné, ou effacez la sélection pour la désactiver.

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

  6. Pour lancer cluster, choisissez Créer un cluster.

AWS CLI
Pour activer ou désactiver la protection contre les interruptions lorsque vous créez un cluster à l'aide du AWS CLI
  • Avec le AWS CLI, vous pouvez lancer un cluster avec la protection contre les terminaisons activée à l'aide du create-cluster commande avec --termination-protected paramètre. 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-7.14.0 \ --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 AWS CLI, voir 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.

Console
Pour activer ou désactiver la protection contre les interruptions pour un cluster en cours d'exécution à l'aide de la console
  1. Connectez-vous au Console de gestion AWS, 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.

AWS CLI
Pour activer ou désactiver la protection contre les terminaisons pour un cluster en cours d'exécution à l'aide du 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 contre les terminaisons sur le cluster avec 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