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:
-
Agregue un enlace de apagado en el código de su aplicación que contenga una lógica de apagado personalizada.
-
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-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
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-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
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.