Errores en cascada y repeticiones de ejecuciones - AWS Data Pipeline

AWS Data Pipeline ya no está disponible para nuevos clientes. Los clientes actuales de AWS Data Pipeline pueden seguir utilizando el servicio con normalidad. Más información

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.

Errores en cascada y repeticiones de ejecuciones

AWS Data Pipeline le permite configurar el comportamiento de los objetos de canalización cuando se produce un error en una dependencia o cuando un usuario la cancela. Puede asegurarse de que los errores se propaguen en cascada a otros objetos de canalización (consumidores), para evitar esperas indefinidas. Todas las actividades, nodos de datos y condiciones previas tiene un campo llamado failureAndRerunMode con un valor predeterminado de none. Para habilitar los errores en cascada, establezca el campo failureAndRerunMode en cascade.

Cuando este campo está habilitado, se producen errores en cascada si un objeto de canalización está bloqueado en el estado WAITING_ON_DEPENDENCIES y las dependencias han producido un error sin ningún comando pendiente. Durante un error en cascada, se producen los eventos siguientes:

  • Cuando un objeto produce un error, sus consumidores se establecen en CASCADE_FAILED y las condiciones previas del objeto original y de sus consumidores se establecen en CANCELED.

  • Los objetos cuyo estado sea ya FINISHED, FAILED o CANCELED no se tienen en cuenta.

El error en cascada no funciona en dependencias de objetos con errores (ascendentes) excepto para condiciones previas asociadas con el objeto con errores original. Los objetos de canalización afectados por un error en cascada pueden disparar reintentos o acciones posteriores tales como onFail.

Los efectos detallados de un error en cascada dependen del tipo de objeto.

Actividades

Una actividad cambia a CASCADE_FAILED si cualquiera de sus dependencias produce un error y, posteriormente, desencadena un error en cascada en los consumidores de la actividad. Si se produce un error en un recurso del que depende una actividad, la actividad adopta el estado CANCELED y todos sus consumidores cambian a CASCADE_FAILED.

Nodos de datos y condiciones previas

Si se configura un nodo de datos como salida de una actividad que produce un error, el nodo de datos cambia al estado CASCADE_FAILED. El error de un nodo de datos se propaga a las condiciones previas asociadas, que cambian al estado CANCELED.

Recursos

Si los objetos que dependen de un recurso se encuentran en el estado FAILED y el propio recurso está en el estado WAITING_ON_DEPENDENCIES, el recurso cambia al estado FINISHED.

Volver a ejecutar objetos con errores en cascada

De forma predeterminada, volver a ejecutar cualquier actividad o nodo de datos solo vuelve a ejecutar el recurso asociado. Sin embargo, ajustar el campo failureAndRerunMode en cascade en un objeto de canalización permite volver a ejecutar un comando en un objeto de destino para propagarlo a todos los consumidores, en las siguientes condiciones:

  • Los consumidores del objeto de destino están en el estado CASCADE_FAILED.

  • Las dependencias del objeto de destino no tienen comandos pendientes de volver a ejecutarse.

  • Las dependencias del objeto de destino no están en el estado FAILED, CASCADE_FAILED ni CANCELED.

Si trata de volver a ejecutar un objeto CASCADE_FAILED y cualquiera de sus dependencias está en estado FAILED, CASCADE_FAILED o CANCELED, la nueva ejecución producirá un error y devolverá el objeto al estado CASCADE_FAILED. Para volver a ejecutar correctamente el objeto que ha producido un error, debe seguir el error en sentido ascendente a lo largo de la cadena de dependencia para encontrar el origen del error y volver a ejecutar ese objeto en su lugar. Cuando se emite un comando de nueva ejecución en un recurso, también se intenta volver a ejecutar los objetos que dependen de él.

Error en cascada y reposiciones

Si habilitas los errores en cascada y tienes una canalización que genera muchos rellenados, los errores de tiempo de ejecución de la canalización pueden provocar que los recursos se creen y eliminen en rápida sucesión sin realizar un trabajo útil. AWS Data Pipeline intenta avisarle sobre esta situación con el siguiente mensaje de advertencia al guardar una canalización: Pipeline_object_name has 'failureAndRerunMode' field set to 'cascade' and you are about to create a backfill with scheduleStartTime start_time. This can result in rapid creation of pipeline objects in case of failures. Esto se debe a que un error en cascada puede establecer rápidamente actividades posteriores CASCADE_FAILED y cerrar los clústeres y EC2 recursos de EMR que ya no son necesarios. Le recomendamos que pruebe las canalizaciones con intervalos de tiempo cortos para limitar los efectos de esta situación.