Amazon EMR 단계를 취소하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2020년 10월 12일
Amazon EMR 단계를 취소하려고 합니다. cancel-steps 명령을 실행하면 “단계를 취소할 수 없습니다. 이미 실행 중입니다(Cannot cancel the step. It is already RUNNING.)."라는 오류가 표시됩니다.
간략한 설명
이 오류는 Amazon EMR 버전 5.27.x 이하 버전에 영향을 미칩니다. 이 릴리스 버전에서 cancel-steps 명령은 대기 중인 단계만 취소합니다. 실행 중인 단계를 취소하려면 애플리케이션 ID(YARN 단계의 경우) 또는 프로세스 ID(YARN 이외 단계의 경우)를 삭제합니다.
Amazon EMR 버전 5.28.0 이상에서는 cancel-steps를 사용하여 대기 중인 단계와 실행 중인 단계를 모두 취소할 수 있습니다. 자세한 내용은 AWS CLI 및 콘솔을 사용한 단계 작업을 참조하세요.
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.
해결 방법
다음 방법 중 하나를 사용하여 Amazon EMR 버전 5.27.x 이하 버전에서 실행 단계를 취소합니다.
YARN 애플리케이션 취소
2. 다음 명령을 실행하여 실행 중인 모든 애플리케이션을 나열하고 단계의 애플리케이션 ID를 확인합니다.
yarn application -list
3. 다음 명령을 실행하여 애플리케이션을 종료합니다. application_id를 "application_1505786029486_002"와 같은 사용자의 애플리케이션 ID로 대체합니다.
참고: 이 명령은 대기열에 대기 중인 모든 단계를 종료합니다.
yarn application -kill application_id
YARN 이외 애플리케이션 취소
2. 다음 명령을 실행하여 프로세스 ID(pid)를 가져옵니다. 다음 예에서 step_id를 s-Y9XXXXXXAPMD와 같은 사용자 단계 식별자로 대체합니다.
ps -ef |grep -i step_id
다음 예제 출력에서 프로세스 ID는 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. 다음 명령을 실행하여 프로세스를 종료합니다. 2366을 사용자 단계의 프로세스 식별자로 대체합니다.
참고: 이 명령은 대기열에 대기 중인 모든 단계를 종료합니다.
kill -9 2366
단계의 상태가 [실행 중(Running)]에서 [실패(Failed)]로 바뀝니다.