유예 기간이 있는 EMR Serverless 작업 실행 취소 - Amazon EMR

유예 기간이 있는 EMR Serverless 작업 실행 취소

데이터 처리 시스템에서 갑작스러운 종료가 발생하면 자원 낭비, 불완전한 작업 수행 및 잠재적인 데이터 불일치가 발생할 수 있습니다. Amazon EMR Serverless를 사용하면 작업 실행을 취소할 때 유예 기간을 지정할 수 있습니다. 이 기능을 사용하면 작업 종료 전에 진행 중인 작업을 적절하게 정리 및 완료할 수 있습니다.

작업 실행을 취소할 때 최종적으로 종료하기 전에 작업이 정리 작업을 수행할 수 있는 shutdownGracePeriodInSeconds 파라미터를 사용하여 유예 기간(초)을 지정합니다. 동작과 기본 설정은 배치 작업과 스트리밍 작업마다 매우 다릅니다.

배치 작업의 유예 기간

배치 작업의 경우 EMR Serverless를 사용하면 유예 기간 동안 실행되는 사용자 지정 정리 작업을 구현할 수 있습니다. 이러한 정리 작업을 애플리케이션 코드의 JVM 종료 후크의 일부로 등록할 수 있습니다.

기본 동작

종료의 기본 동작은 유예 기간이 없는 종료입니다. 이는 다음 두 작업으로 구성됩니다.

  • 즉시 종료

  • 리소스가 즉시 릴리스됩니다.

구성 옵션

정상 종료되는 설정을 지정할 수 있습니다.

  • 종료 유예 기간의 유효한 범위: 15~1,800초(선택 사항)

  • 즉시 종료(유예 기간 없음): 0초

정상 종료 활성화

배치 작업의 정상 종료를 구현하려면 다음 단계를 따르세요.

  1. 사용자 지정 종료 논리가 포함된 애플리케이션 코드에 종료 후크를 추가합니다.

    Example in Scala
    import org.apache.hadoop.util.ShutdownHookManager // Register shutdown hook with priority (second argument) // Higher priority hooks run first ShutdownHookManager.get().addShutdownHook(() => { logger.info("Performing cleanup operations...") }, 100)

    ShutdownHookManager 사용

    Example in PySpark
    import atexit def cleanup(): # Your cleanup logic here print("Performing cleanup operations...") # Register the cleanup function atexit.register(cleanup)
  2. 작업을 취소할 때 이전에 추가된 후크가 실행될 수 있도록 유예 기간을 지정합니다.

    예시

    # Default (immediate termination) aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID # With 5-minute grace period aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID \ --shutdown-grace-period-in-seconds 300

스트리밍 작업의 유예 기간

계산에 외부 데이터 소스에서 읽거나 쓰는 작업이 포함되는 Spark Structured Streaming에서는 갑작스러운 종료로 인해 원치 않는 결과가 발생할 수 있습니다. 스트리밍 작업은 데이터를 마이크로 배치 단위로 처리하며, 이러한 작업을 중간에 중단할 경우 후속 시도에서 중복 처리가 발생할 수 있습니다. 이러한 상황은 이전 마이크로 배치의 최신 체크포인트가 기록되지 않았을 때 발생하며, 이로 인해 스트리밍 작업이 재시작될 때 동일한 데이터가 다시 처리됩니다. 이러한 중복 처리는 컴퓨팅 리소스를 낭비할 뿐만 아니라 비즈니스 운영에도 영향을 미칠 수 있으므로 갑작스러운 시스템 중단을 방지하는 것이 매우 중요합니다.

EMR Serverless는 스트리밍 쿼리 리스너를 통한 정상 종료 를 기본적으로 지원합니다. 이 작업을 수행하면 작업 종료 전에 진행 중인 마이크로 배치를 적절하게 완료할 수 있습니다. 이 서비스는 스트리밍 애플리케이션에 대한 마이크로 배치 간의 정상 종료를 자동으로 관리하여 현재 마이크로 배치가 처리를 완료하고 체크포인트가 올바르게 기록되며 종료 프로세스 중에 새로운 데이터를 수집하지 않고 스트리밍 컨텍스트가 완전히 종료되도록 합니다.

기본 동작

  • 기본적으로 120초 유예 기간이 활성화되어 있습니다.

  • 내장 스트리밍 쿼리 리스너가 정상 종료를 관리합니다.

구성 옵션

  • 종료 유예 기간의 유효한 범위: 15~1,800초(선택 사항)

  • 즉시 종료: 0초

정상 종료 활성화

스트리밍 작업에 대한 정상 종료를 구현하려면:

작업을 취소할 때 진행 중인 마이크로 배치가 완료될 때까지 기다리도록 유예 기간을 지정합니다.

예시

# Default graceful shutdown (120 seconds) aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID # Custom grace period (e.g. 300 seconds) aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_RUN_ID \ --shutdown-grace-period-in-seconds 300 # Immediate Termination aws emr-serverless cancel-job-run \ --application-id APPLICATION_ID \ --job-run-id JOB_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분 동안 재시도를 수행합니다.

    • 재시도가 실패하면 작업이 강제로 종료됩니다.

결제

작업은 유예 기간 동안 소요된 시간을 포함하여 작업이 완전히 종료될 때까지 사용된 컴퓨팅 리소스에 대해 요금이 청구됩니다.