Comment annuler une étape Amazon EMR ?

Dernière mise à jour : 12/10/2020

Je tente d'annuler une étape Amazon EMR. Lorsque j'exécute la commande cancel-steps, je reçois l'erreur suivante : « Cannot cancel the step. It is already RUNNING. » (Impossible d'annuler l'étape. L'étape est déjà EN COURS D'EXÉCUTION.)

Brève description

Cette erreur affecte les versions 5.27.x et antérieures d'Amazon EMR. Dans ces versions, la commande cancel-steps annule uniquement les étapes en attente. Pour annuler une étape en cours d'exécution, supprimez l'ID d'application (pour les étapes YARN) ou l'ID de processus (pour les étapes autres que YARN).

Dans les versions 5.28.0 et ultérieures d'Amazon EMR, vous pouvez utiliser cancel-steps pour annuler les étapes en attente et en cours. Pour plus d'informations, consultez la section Utilisation d'étapes à l'aide de l'interface de ligne de commande et de la console AWS.

Résolution

Utilisez l'une des méthodes suivantes pour annuler les étapes d'exécution dans les versions 5.27.x et antérieures d'Amazon EMR.

Annuler les applications YARN

1.    Connectez-vous au nœud maître à l'aide de SSH.

2.    Pour rechercher l'ID d'application de l'étape, exécutez la commande suivante afin de répertorier toutes les applications en cours d'exécutions.

yarn application -list

3.    Exécutez la commande suivante afin de supprimer l'application. Remplacez application_id par votre ID d'application, par exemple « application_1505786029486_002 ».

Remarque : cette commande supprime toutes les étapes en attente dans la file d'attente.

yarn application -kill application_id

Annuler les applications autres que YARN

1.    Connectez-vous au nœud maître à l'aide de SSH.

2.    Exécutez la commande suivante afin d'obtenir l'ID de processus (pid). Dans l'exemple suivant, remplacez step_id par l'identifiant de votre étape, par exemple s-Y9XXXXXXAPMD.

ps -ef |grep -i step_id

Dans l'exemple de sortie suivant, l'ID de processus est 2366 :

hadoop    2366  4664  0 16:20 ?        00:00:01 /etc/alternatives/jre/bin/java -Xmx1000m -server -XX:OnOutOfMemoryError=kill -9 %p -Dhadoop.log.dir=/mnt/var/log/hado
op/steps/s-2RNURIK9Z2JUH -Dhadoop.log.file=syslog -Dhadoop.home.dir=/usr/lib/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,DRFA -Djava.library.pat
h=:/usr/lib/hadoop-lzo/lib/native:/usr/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.io.tmpdir=/mnt/var/lib/hadoop/st
eps/s-2RNURIK9Z2JUH/tmp -Dhadoop.security.logger=INFO,NullAppender -Dsun.net.inetaddr.ttl=30 org.apache.hadoop.util.RunJar /var/lib/aws/emr/step-runner/hadoop-
jars/command-runner.jar bash -c envsubst < /home/hadoop/truffle_suffle.json.template

3.    Exécutez la commande suivante afin de supprimer le processus. Remplacez 2366 par l'identifiant de processus de votre étape.

Remarque : cette commande supprime toutes les étapes en attente dans la file d'attente.

kill -9 2366

L'état de l'étape passe de En cours d'exécution à Échec.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?