기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
유예 기간이 있는 EMR Serverless 작업 실행 취소
데이터 처리 시스템에서 갑작스러운 종료는 리소스 낭비, 불완전한 작업 및 잠재적 데이터 불일치로 이어질 수 있습니다. Amazon EMR Serverless를 사용하면 작업 실행을 취소할 때 유예 기간을 지정할 수 있습니다. 이 기능을 사용하면 작업 종료 전에 진행 중인 작업을 적절하게 정리하고 완료할 수 있습니다.
작업 실행을 취소할 때 최종 종료 전에 작업이 정리 작업을 수행할 수 있는 shutdownGracePeriodInSeconds
파라미터를 사용하여 유예 기간(초)을 지정할 수 있습니다. 동작과 기본 설정은 배치 작업과 스트리밍 작업마다 다릅니다.
배치 작업의 유예 기간
배치 작업의 경우 EMR Serverless를 사용하면 유예 기간 동안 실행되는 사용자 지정 정리 작업을 구현할 수 있습니다. 이러한 정리 작업을 애플리케이션 코드의 JVM 종료 후크의 일부로 등록할 수 있습니다.
기본 동작
종료의 기본 동작은 유예 기간이 없는 것입니다. 다음 두 가지 작업으로 구성됩니다.
즉시 종료
리소스는 즉시 릴리스됩니다.
구성 옵션
정상적으로 종료되는 설정을 지정할 수 있습니다.
유효한 종료 유예 기간 범위: 15~1,800초(선택 사항)
즉시 종료(유예 기간 없음): 0초
정상적인 종료 활성화
배치 작업에 대한 정상적인 종료를 구현하려면 다음 단계를 따르세요.
-
사용자 지정 종료 로직이 포함된 애플리케이션 코드에 종료 후크를 추가합니다.
-
위에 추가된 후크가 실행될 시간을 허용하도록 작업을 취소할 때 유예 기간을 지정합니다.
예제
# Default (immediate termination) aws emr-serverless cancel-job-run \ --application-id
APPLICATION_ID
\ --job-run-idJOB_RUN_ID
# With 5-minute grace period aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 300
스트리밍 작업의 유예 기간
계산에 외부 데이터 소스에서 읽거나 쓰는 작업이 포함되는 Spark 구조화 스트리밍에서는 갑작스러운 종료로 인해 원치 않는 결과가 발생할 수 있습니다. 스트리밍 작업은 마이크로 배치에서 데이터를 처리하고 이러한 작업을 중간에 중단하면 후속 시도에서 중복 처리가 발생할 수 있습니다. 이는 이전 마이크로 배치의 최신 체크포인트가 기록되지 않아 스트리밍 작업이 다시 시작될 때 동일한 데이터가 다시 처리될 때 발생합니다. 이러한 중복 처리는 컴퓨팅 리소스를 낭비할 뿐만 아니라 비즈니스 운영에도 영향을 미칠 수 있으므로 갑작스러운 종료를 방지하는 것이 중요합니다.
EMR Serverless는 스트리밍 쿼리 리스너를 통한 정상적인 종료를 기본적으로 지원합니다. 이렇게 하면 작업 종료 전에 진행 중인 마이크로 배치를 적절하게 완료할 수 있습니다. 서비스는 스트리밍 애플리케이션의 마이크로 배치 간에 정상적인 종료를 자동으로 관리하여 현재 마이크로 배치가 처리를 완료하고 체크포인트가 올바르게 작성되며 종료 프로세스 중에 새 데이터를 수집하지 않고 스트리밍 컨텍스트가 완전히 종료되도록 합니다.
기본 동작
기본적으로 120초 유예 기간이 활성화되어 있습니다.
내장 스트리밍 쿼리 리스너는 정상적인 종료를 관리합니다.
구성 옵션
유효한 종료 유예 기간 범위: 15~1,800초(선택 사항)
즉시 종료: 0초
유예 종료 활성화
스트리밍 작업에 대한 정상적인 종료를 구현하려면:
진행 중인 마이크로 배치가 완료될 때까지 기다리도록 작업을 취소할 때 유예 기간을 지정합니다.
예제
# Default graceful shutdown (120 seconds) aws emr-serverless cancel-job-run \ --application-id
APPLICATION_ID
\ --job-run-idJOB_RUN_ID
# Custom grace period (e.g. 300 seconds) aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 300 # Immediate Termination aws emr-serverless cancel-job-run \ --application-idAPPLICATION_ID
\ --job-run-idJOB_RUN_ID
\ --shutdown-grace-period-in-seconds 0
사용자 지정 종료 후크 추가(선택 사항)
EMR Serverless는 기본적으로 내장 스트리밍 쿼리 리스너를 통해 정상적인 종료를 관리하지만 선택적으로 개별 스트리밍 쿼리에 대한 사용자 지정 종료 로직을 구현할 수 있습니다. EMR Serverless는 정상 종료 리스너를 우선순위 60으로 등록합니다( ShutdownHookManager 사용). 우선 순위가 높은 후크가 먼저 실행되므로 우선 순위가 60보다 큰 사용자 지정 정리 작업을 등록하여 EMR Serverless 종료 프로세스가 시작되기 전에 실행되도록 할 수 있습니다.
사용자 지정 후크를 추가하려면 애플리케이션 코드에 종료 후크를 추가하는 방법을 보여주는이 주제의 첫 번째 예제를 참조하세요. 여기서 100은 60보다 큰 우선 순위입니다. 따라서 이러한 종료 후크가 먼저 실행됩니다.
참고
사용자 지정 종료 후크는 선택 사항이며 EMR Serverless에서 자동으로 처리하는 정상적인 종료 기능에는 필요하지 않습니다.
유예 기간 요금 및 배치 기간
유예 기간(120초)의 기본값을 사용하는 경우:
배치 지속 시간이 120초 미만인 경우 배치를 완료하는 데 필요한 실제 시간에 대해서만 요금이 부과됩니다.
배치 지속 시간이 120초를 초과하면 최대 유예 기간(120초)에 대한 요금이 청구되지만 강제로 종료되므로 쿼리가 정상적으로 종료되지 않을 수 있습니다.
비용을 최적화하고 정상적인 종료를 보장하려면:
배치 기간 > 120초의 경우: 배치 기간과 일치하도록 유예 기간을 늘리는 것이 좋습니다.
배치 기간이 < 120초인 경우: 실제 처리 시간에 대해서만 요금이 부과되므로 유예 기간을 조정할 필요가 없습니다.
고려 사항
유예 기간 동작
유예 기간은 등록된 종료 후크가 완료될 시간을 제공합니다.
유예 기간보다 훨씬 앞선 경우에도 종료 후크가 완료되는 즉시 작업이 종료됩니다.
정리 작업이 유예 기간을 초과하면 작업이 강제로 종료됩니다.
서비스 동작
유예 기간 종료는 실행 중 상태의 작업에만 사용할 수 있습니다.
CANCELLING 상태 중 후속 취소 요청은 무시됩니다.
-
EMR Serverless가 내부 서비스 오류로 인해 유예 기간 종료를 시작하지 못하는 경우:
서비스는 최대 2분 동안 재시도합니다.
재시도가 실패하면 작업이 강제로 종료됩니다.
결제
유예 기간 동안 소요된 시간을 포함하여 작업이 완전히 종료될 때까지 사용된 컴퓨팅 리소스에 대해 작업이 청구됩니다.