Administración de copias de seguridad de aplicaciones mediante instantáneas - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

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.

Administración de copias de seguridad de aplicaciones mediante instantáneas

Una instantánea es la implementación de Managed Service para Apache Flink en un punto de guardado de Apache Flink. Una instantánea es una copia de seguridad del estado de la aplicación activada, creada y gestionada por el usuario o el servicio. Para obtener información sobre los puntos de almacenamiento de Apache Flink, consulte los puntos de almacenamiento en la documentación de Apache Flink. Con las instantáneas, puede reiniciar una aplicación a partir de una instantánea concreta del estado de la aplicación.

nota

Se recomienda que la aplicación cree una instantánea varias veces al día para que se reinicie correctamente con los datos de estado correctos. La frecuencia correcta de las instantáneas depende de la lógica de negocios de la aplicación. Tomar instantáneas frecuentes le permite recuperar datos más recientes, pero aumenta el costo y requiere más recursos del sistema.

En Managed Service para Apache Flink, las instantáneas se administran mediante las siguientes acciones de la API:

Para conocer el límite en el número de instantáneas por aplicación, consulte Cuota. Si la aplicación alcanza el límite de instantáneas, la creación manual de una instantánea produce un error con una LimitExceededException.

Managed Service para Apache Flink nunca borra las instantáneas. Usted debe eliminar las instantáneas manualmente usando la acción DeleteApplicationSnapshot.

Para cargar una instantánea guardada del estado de la aplicación al iniciar una aplicación, utilice el parámetro ApplicationRestoreConfiguration de la acción StartApplication o UpdateApplication.

Creación automática de instantáneas

Si SnapshotsEnabled se establece como ApplicationSnapshotConfigurationpara la aplicación, Managed Service for Apache Flink crea y utiliza automáticamente las instantáneas cuando la aplicación se actualiza, se escala o se detiene para proporcionar una semántica de procesamiento de una sola vez. true

nota

Si ApplicationSnapshotConfiguration::SnapshotsEnabled se establece en false, se perderán datos durante las actualizaciones de la aplicación.

nota

Managed Service para Apache Flink activa puntos de guardado intermedios durante la creación de instantáneas. En la versión 1.15 o superior de Flink, los puntos de guardado intermedios ya no producen efectos secundarios. Consulte Activación de puntos de almacenamiento.

Las instantáneas creadas automáticamente tienen las siguientes cualidades:

  • El servicio gestiona la instantánea, pero puedes verla mediante la acción. ListApplicationSnapshots Las instantáneas creadas automáticamente se tienen en cuenta para el límite de instantáneas.

  • Si la aplicación supera el límite de instantáneas, las instantáneas creadas manualmente fallarán, pero el servicio Managed Service para Apache Flink seguirá creando las instantáneas correctamente cuando la aplicación se actualice, escale o detenga. Debe eliminar manualmente las instantáneas mediante la DeleteApplicationSnapshotacción antes de crear más instantáneas de forma manual.

Restauración a partir de una instantánea que contiene datos de estado incompatibles

Como las instantáneas contienen información sobre los operadores, la restauración de los datos de estado de una instantánea para un operador que ha cambiado desde la versión anterior de la aplicación puede tener resultados inesperados. Una aplicación fallará si intenta restaurar los datos de estado de una instantánea que no corresponde al operador actual. La aplicación con errores se bloqueará en el estado STOPPING o UPDATING.

Para permitir que una aplicación se restaure a partir de una instantánea que contiene datos de estado incompatibles, FlinkRunConfigurationdefina el AllowNonRestoredState parámetro para true utilizar la UpdateApplicationacción.

Verá el siguiente comportamiento cuando se restaure una aplicación a partir de una instantánea obsoleta:

  • Operador agregado: si se agrega un operador nuevo, el punto de guardado no tiene datos de estado para el nuevo operador. No se producirá ningún error y no es necesario establecer AllowNonRestoredState.

  • Operador eliminado: si se elimina un operador existente, el punto de guardado contiene los datos de estado del operador que falta. Se producirá un error a menos que AllowNonRestoredState se establezca en true.

  • Operador modificado: si se realizan cambios compatibles, como cambiar el tipo de un parámetro por uno compatible, la aplicación puede realizar la restauración a partir de la instantánea obsoleta. Para obtener más información sobre la restauración a partir de instantáneas, consulte Savepoints en la documentación de Apache Flink. Es posible restaurar una aplicación que utiliza la versión 1.8 o posterior de Apache Flink a partir de una instantánea con un esquema diferente. No se puede restaurar una aplicación que utilice la versión 1.6 de Apache Flink. Para two-phase-commit los sumideros, recomendamos utilizar una instantánea del sistema (SWs) en lugar de una instantánea creada por el usuario (). CreateApplicationSnapshot

    En el caso de Flink, Managed Service para Apache Flink activa puntos de guardado intermedios durante la creación de la instantánea. A partir de la versión 1.15 de Flink, los puntos de guardado intermedios ya no producen efectos secundarios. Consulte Triggering Savepoints.

Si necesita reanudar una aplicación que no es compatible con los datos de puntos de almacenamiento existentes, le recomendamos que omita la restauración desde la instantánea configurando el ApplicationRestoreType parámetro de la acción en. StartApplicationSKIP_RESTORE_FROM_SNAPSHOT

Para obtener más información sobre cómo Apache Flink trata los datos de estado incompatibles, consulte State Schema Evolution en la documentación de Apache Flink.

Ejemplos de API de instantáneas

En esta sección se incluyen solicitudes de ejemplo de acciones de API para usar instantáneas con una aplicación. Para obtener información sobre cómo utilizar un archivo JSON como entrada para una acción de API, consulte Código de ejemplo de la API de Managed Service for Apache Flink.

Habilite las instantáneas para una aplicación

La siguiente solicitud de ejemplo de la acción UpdateApplication habilita las instantáneas para una aplicación:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSnapshotConfigurationUpdate": { "SnapshotsEnabledUpdate": "true" } } }

Crear una instantánea

La siguiente solicitud de ejemplo de la acción CreateApplicationSnapshot crea una instantánea del estado actual de la aplicación:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }

Listar las instantáneas de una aplicación

La siguiente solicitud de ejemplo de la acción ListApplicationSnapshots muestra las 50 primeras instantáneas del estado actual de la aplicación:

{ "ApplicationName": "MyApplication", "Limit": 50 }

Enumere los detalles de una instantánea de la aplicación

En la siguiente solicitud de ejemplo de la acción DescribeApplicationSnapshot se muestran los detalles de una instantánea específica de una aplicación:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot" }

Eliminar una instantánea

La siguiente solicitud de ejemplo de la acción DeleteApplicationSnapshot elimina una instantánea guardada anteriormente. Puede obtener el valor de SnapshotCreationTimestamp usando ListApplicationSnapshots o DeleteApplicationSnapshot:

{ "ApplicationName": "MyApplication", "SnapshotName": "MyCustomSnapshot", "SnapshotCreationTimestamp": 12345678901.0, }

Reinicie una aplicación mediante una instantánea con nombre

La siguiente solicitud de ejemplo de la acción StartApplication inicia la aplicación utilizando el estado guardado de una instantánea específica:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_CUSTOM_SNAPSHOT", "SnapshotName": "MyCustomSnapshot" } } }

Reinicie una aplicación con la instantánea más reciente

La siguiente solicitud de ejemplo de la acción StartApplication inicia la aplicación usando la instantánea más reciente:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "RESTORE_FROM_LATEST_SNAPSHOT" } } }

Reinicie una aplicación sin utilizar ninguna instantánea

La siguiente solicitud de ejemplo de la acción StartApplication inicia la aplicación sin cargar el estado de la aplicación, incluso si está presente una instantánea:

{ "ApplicationName": "MyApplication", "RunConfiguration": { "ApplicationRestoreConfiguration": { "ApplicationRestoreType": "SKIP_RESTORE_FROM_SNAPSHOT" } } }