Cancelación de la ejecución de un trabajo de EMR Serverless con período de gracia - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Cancelación de la ejecución de un trabajo de EMR Serverless con período de gracia

En los sistemas de procesamiento de datos, las terminaciones abruptas pueden provocar un desperdicio de recursos, operaciones incompletas y posibles inconsistencias en los datos. Amazon EMR Serverless le permite especificar un período de gracia al cancelar la ejecución de tareas. Esta función permite disponer de tiempo para limpiar adecuadamente y completar el trabajo en curso antes de terminar el trabajo.

Al cancelar la ejecución de una tarea, puede especificar un período de gracia (en segundos) mediante el parámetro shutdownGracePeriodInSeconds durante el cual la tarea puede realizar operaciones de limpieza antes de su finalización definitiva. El comportamiento y la configuración predeterminada varían entre los trabajos por lotes y los de streaming.

Período de gracia para trabajos por lotes

Para los trabajos por lotes, EMR Serverless le permite implementar operaciones de limpieza personalizadas que se ejecutan durante el período de gracia. Puede registrar estas operaciones de limpieza como parte del enlace de cierre de la JVM en el código de su aplicación.

Comportamiento predeterminado

El comportamiento predeterminado para el cierre es no tener ningún período de gracia. Consta de las dos acciones siguientes:

  • Terminación inmediata

  • Los recursos se liberan de inmediato

Opciones de configuración

Puede especificar una configuración que dé como resultado un cierre correcto:

  • Intervalo válido para el período de gracia de apagado: 15 a 1800 segundos (opcional)

  • Terminación inmediata (sin período de gracia): 0 segundos

Permita un apagado correcto

Para implementar un cierre correcto en los trabajos por lotes, siga estos pasos:

  1. Agregue un enlace de apagado en el código de su aplicación que contenga una lógica de apagado personalizada.

    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)

    Uso de ShutdownHookManager

    Example in PySpark
    import atexit def cleanup(): # Your cleanup logic here print("Performing cleanup operations...") # Register the cleanup function atexit.register(cleanup)
  2. Especifique un período de gracia al cancelar el trabajo para dar tiempo a que se ejecuten los ganchos añadidos anteriormente

    Ejemplo

    # 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

Período de gracia para los trabajos de streaming

En Spark Structured Streaming, donde los cálculos implican leer o escribir en fuentes de datos externas, las interrupciones bruscas pueden provocar resultados no deseados. Los trabajos de streaming procesan los datos en microlotes y, si se interrumpen estas operaciones a mitad de camino, se puede duplicar el procesamiento en los siguientes intentos. Esto ocurre cuando no se ha escrito el último punto de control del microlote anterior, lo que provoca que los mismos datos se procesen de nuevo cuando se reinicia el trabajo de streaming. Este procesamiento duplicado no solo desperdicia recursos informáticos, sino que también puede afectar a las operaciones comerciales, por lo que es crucial evitar paradas abruptas.

EMR Serverless proporciona soporte integrado para un cierre correcto a través de un detector de consultas de streaming. Esto garantiza la correcta finalización de los microlotes en curso antes de la finalización del trabajo. El servicio gestiona automáticamente el cierre correcto entre los microlotes para las aplicaciones de streaming, lo que garantiza que el microlote actual complete el procesamiento, los puntos de control se escriban correctamente y el contexto de transmisión finalice de forma limpia sin ingerir nuevos datos durante el proceso de apagado.

Comportamiento predeterminado

  • El período de gracia de 120 segundos está activado de forma predeterminada.

  • El detector de consultas de streaming integrado gestiona el apagado sin problemas.

Opciones de configuración

  • Intervalo válido para el período de gracia de apagado: 15 a 1800 segundos (opcional)

  • Terminación inmediata: 0 segundos

Habilite el apagado rápido

Para implementar un cierre correcto de los trabajos de streaming:

Especifique un período de gracia al cancelar el trabajo para dar tiempo a que se complete el microlote en curso.

Ejemplo

# 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

Añada ganchos de cierre personalizados (opcional)

Si bien EMR Serverless gestiona un apagado correcto de forma predeterminada a través de su detector de consultas de transmisión integrado, puede implementar opcionalmente una lógica de apagado personalizada para las consultas de transmisión individuales. EMR Serverless registra su elegante detector de apagado con prioridad 60 (en uso). ShutdownHookManager Como los enlaces de mayor prioridad se ejecutan primero, puede registrar sus operaciones de limpieza personalizadas con una prioridad superior a 60 para asegurarse de que se ejecuten antes de que comience el proceso de cierre de EMR Serverless.

Para añadir un enlace personalizado, consulte el primer ejemplo de este tema, que muestra cómo añadir un enlace de cierre en el código de la aplicación. En este caso, 100 es la prioridad, que es mayor que 60. Por lo tanto, dicho enlace de cierre se ejecutará primero.

nota

Los ganchos de apagado personalizados son opcionales y no son necesarios para una funcionalidad de apagado eficiente, que EMR Serverless gestiona automáticamente.

Cargos del período de gracia y duración del lote

Si se utiliza el valor predeterminado para el período de gracia (120 segundos):

  • Si la duración del lote es inferior a 120 segundos, solo se le cobrará el tiempo real necesario para completar el lote.

  • Si la duración del lote supera los 120 segundos, se le cobrará el período de gracia máximo (120 segundos), pero es posible que la consulta no se cierre correctamente, ya que finalizará forzosamente.

Para optimizar los costes y garantizar un cierre correcto:

  • Para lotes con una duración superior a 120 segundos: considere aumentar el período de gracia para que coincida con la duración del lote

  • Para lotes con una duración inferior a 120 segundos: no es necesario ajustar el período de gracia, ya que solo se le cobrará por el tiempo de procesamiento real

Consideraciones

Comportamiento del período de gracia

  • El período de gracia proporciona tiempo para que se completen los cierres registrados.

  • Job finaliza tan pronto como finaliza el cierre, incluso si es mucho antes del período de gracia.

  • Si las operaciones de limpieza superan el período de gracia, el trabajo finalizará forzosamente.

Comportamiento del servicio

  • El cierre por período de gracia solo está disponible para trabajos en estado EN EJECUCIÓN.

  • Las solicitudes de cancelación posteriores durante el estado de cancelación se ignoran.

  • Si EMR Serverless no puede iniciar el cierre del período de gracia debido a errores internos del servicio:

    • El servicio se volverá a intentar durante un máximo de 2 minutos.

    • Si los reintentos no se realizan correctamente, el trabajo finalizará forzosamente.

Facturación

Los trabajos se facturan por los recursos informáticos utilizados hasta que el trabajo se cierre por completo, incluido el tiempo transcurrido durante el período de gracia.