Estoy intentando cancelar un paso de Amazon EMR. Cuando ejecuto el comando cancel-steps, obtengo el siguiente error: «No se puede cancelar el paso. Ya se está EJECUTANDO.»
Descripción breve
Este error afecta a las versiones 5.27.x y anteriores de Amazon EMR. En estas versiones, el comando cancel-steps cancela solo los pasos pendientes. Para cancelar un paso en ejecución, elimine el ID de la aplicación (para pasos YARN) o el ID del proceso (para pasos que no sean YARN).
En las versiones 5.28.0 y posteriores de Amazon EMR, puede utilizar cancel-steps para cancelar tanto los pasos pendientes como los que estén en ejecución. Para más información, consulte Trabajar con pasos utilizando la CLI y la consola de AWS.
Nota: Si se muestran errores al ejecutar comandos de AWS CLI, compruebe si está utilizando la versión más reciente de AWS CLI.
Solución
Utilice uno de los métodos siguientes para cancelar los pasos en ejecución en las versiones 5.27.x y anteriores de Amazon EMR.
Cancelar aplicaciones de YARN
1. Conéctese al nodo principal mediante SSH.
2. Para encontrar el ID de aplicación del paso, ejecute el siguiente comando para listar todas las aplicaciones en ejecución.
yarn application -list
3. Ejecute el siguiente comando para detener la aplicación. Sustituya application_id por el ID de su aplicación, por ejemplo "application_1505786029486_002".
Nota: Este comando interrumpe todos los pasos pendientes en la cola.
yarn application -kill application_id
Cancelar aplicaciones que no sean de YARN
1. Conéctese al nodo principal mediante SSH.
2. Ejecute el siguiente comando para obtener el ID del proceso (pid). En el siguiente ejemplo, sustituya step_id por su identificador de paso, por ejemplo s-Y9XXXXXXAPMD.
ps -ef |grep -i step_id
En el siguiente ejemplo de resultado, el ID del proceso es 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. Ejecute el siguiente comando para finalizar el proceso. Sustituya 2366 por el identificador de proceso de su paso.
Nota: Este comando interrumpe todos los pasos pendientes en la cola.
kill -9 2366
El estado del paso cambia de Ejecutando a Falló.
Información relacionada
Cancelar pasos