Usa instantáneas de Dataflow

Las instantáneas de Dataflow guardan el estado de una canalización de transmisión, lo que te permite iniciar una versión nueva de tu trabajo de Dataflow sin perder el estado. Las instantáneas son útiles para crear copias de seguridad y recuperar, probar y revertir actualizaciones en canalizaciones de transmisión y otras situaciones similares.

Puedes crear una instantánea de Dataflow de cualquier trabajo de transmisión en ejecución. Sin embargo, cualquier trabajo nuevo que crees a partir de una instantánea usará Streaming Engine. También puedes usar una instantánea de Dataflow para migrar la canalización existente a Streaming Engine más eficiente y escalable con un tiempo de inactividad mínimo.

En esta guía, se explica cómo crear y administrar instantáneas y, también, crear trabajos a partir de instantáneas.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

  4. Habilita las API de Dataflow, Compute Engine, Cloud Logging, Cloud Storage, JSON de Google Cloud Storage, BigQuery, Cloud Pub/Sub y Cloud Resource Manager.

    Habilita las API

Crea una instantánea

Console

  1. En Google Cloud Console, ve a la página Trabajos de Dataflow.

    Ir a Trabajos

    Aparecerá una lista de trabajos de Dataflow junto con su estado. Si no ves ningún trabajo de transmisión, deberás ejecutar un trabajo de transmisión nuevo. Si deseas ver un ejemplo de un trabajo de transmisión, consulta la Guía de inicio rápido sobre cómo usar plantillas.

  2. Selecciona un trabajo.
  3. En la barra de menú de la página Detalles del trabajo, haz clic en Crear instantánea.
  4. En el cuadro de diálogo Crear una instantánea, selecciona una de las siguientes opciones:
    • Sin fuentes de datos: selecciona esta opción para crear una instantánea solo del estado de tu trabajo de Dataflow.
    • Con fuentes de datos: selecciona esta opción para crear una instantánea del estado de trabajo de Dataflow junto con una instantánea de la fuente de Pub/Sub.
  5. Haga clic en Crear.

gcloud

Crear una instantánea:

gcloud dataflow snapshots create \
    --job-id=JOB_ID \
    --snapshot-ttl=DURATION \
    --snapshot-sources=true \
    --region=REGION

Reemplaza lo siguiente:

  • JOB_ID: Es el ID de tu trabajo de transmisión.
  • DURATION: Es la cantidad de tiempo (en días) antes de que caduque la instantánea, después de la cual no se pueden crear más trabajos a partir de la instantánea. La marca snapshot-ttl es opcional, por lo que, si no se especifica, la instantánea vence en 7 días. Especifica el valor en el siguiente formato: 5d. La duración máxima que puedes especificar es de 30 días (30d).
  • REGION: Es la región en la que se ejecuta tu trabajo de transmisión.

La marca snapshot-sources especifica si se deben tomar instantáneas de las fuentes de Pub/Sub junto con la instantánea de Dataflow. Si es true, se toman instantáneas de manera automática de las fuentes de Pub/Sub y los ID de la instantánea de Pub/Sub se muestran en la respuesta de salida. Después de ejecutar el comando create, verifica el estado de la instantánea mediante la ejecución del comando list o describe.

Cuando se crean instantáneas de Dataflow, sucede lo siguiente:

  • Las instantáneas de Dataflow generan cargos por el uso del disco.
  • Las instantáneas se crean en la misma región que el trabajo.
  • Si la ubicación del trabajador de trabajo es diferente de la región del trabajo, la creación de la instantánea falla. Consulta la guía de extremos regionales.
  • Solo puedes tomar instantáneas de trabajos que no sean de Streaming Engine si se iniciaron o actualizaron después del 1 de febrero de 2021.
  • El servicio de Pub/Sub administra las instantáneas de Pub/Sub que se crearon con las instantáneas de Dataflow y generan un cargo.
  • Las instantáneas de Pub/Sub vencen a más tardar 7 días después de su creación. Su ciclo de vida exacto se determina en el momento de la creación por el trabajo pendiente existente en la suscripción de origen. En particular, el ciclo de vida de la instantánea de Pub/Sub es 7 days - (age of oldest unacked message in the subscription). Por ejemplo, considera una suscripción cuyo mensaje no confirmado más antiguo tiene 3 días. Si se crea una instantánea de Pub/Sub a partir de esta suscripción, la instantánea, que siempre captura estas tareas pendientes de 3 días, mientras la instantánea exista, vencerá en 4 días. Consulta la referencia de instantáneas de Pub/Sub.
  • Durante la operación de la instantánea, tu trabajo de Dataflow se detiene y se reanuda una vez que la instantánea está lista. El tiempo necesario depende del tamaño del estado de la canalización. Por ejemplo, el tiempo necesario para tomar instantáneas en trabajos de Streaming Engine es, por lo general, más corto que los trabajos que no son de Streaming Engine.
  • Puedes cancelar el trabajo mientras una instantánea se encuentra en curso, lo que luego cancela la instantánea.
  • No puedes actualizar o desviar el trabajo mientras una instantánea se encuentra en curso. Debes esperar hasta que el trabajo se haya reanudado desde el proceso de instantánea antes de poder actualizarlo o desviarlo.

Usa la página de instantáneas

Después de crear una instantánea, puedes usar la página Instantáneas en Cloud Console para ver y administrar las instantáneas del proyecto.

Si haces clic en una instantánea, se abrirá la página Detalles de la instantánea (Snapshot details). Puedes obtener metadatos adicionales sobre la instantánea, así como un vínculo al trabajo de origen y cualquier instantánea de Pub/Sub.

Página de detalles de instantáneas de Dataflow en la que puedes obtener más información sobre una instantánea.

Borra una instantánea

Borrar una instantánea es una forma de detener el proceso de instantánea y reanudar el trabajo. Además, si borras instantáneas de Dataflow, no se borrarán de forma automática las instantáneas de Pub/Sub asociadas.

Console

  1. En Cloud Console, ve a la página de Trabajos.

    Ir a Instantáneas

  2. Selecciona la instantánea y haz clic en Borrar.
  3. En el cuadro de diálogo Borrar instantánea, haz clic en Borrar para confirmar.

gcloud

Borra una instantánea:

gcloud dataflow snapshots delete SNAPSHOT_ID \
    --region=REGION

Reemplaza lo siguiente:

  • SNAPSHOT_ID: Es el ID de la instantánea.
  • REGION: Es la región en la que existe la instantánea.

Para obtener más información, consulta la referencia del comando delete.

Crea un trabajo a partir de una instantánea

Después de crear una instantánea, puedes restablecer el estado del trabajo de Dataflow si creas un trabajo nuevo a partir de esa instantánea.

Java

Para crear un trabajo nuevo de una instantánea, usa las marcas --createFromSnapshot y --enableStreamingEngine.

  • En la shell o terminal, crea un trabajo nuevo a partir de una instantánea. Por ejemplo:
    mvn -Pdataflow-runner compile exec:java \
        -Dexec.mainClass=org.apache.beam.examples.WordCount \
        -Dexec.args="--project=PROJECT_ID \
        --stagingLocation=gs://STORAGE_BUCKET/staging/ \
        --inputFile=gs://apache-beam-samples/shakespeare/* \
        --output=gs://STORAGE_BUCKET/output \
        --runner=DataflowRunner \
        --enableStreamingEngine \
        --createFromSnapshot=SNAPSHOT_ID \
        --region=REGION"

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • STORAGE_BUCKET: Es el bucket de Cloud Storage que usas para los elementos de trabajo temporales y la salida final.
    • SNAPSHOT_ID: Es el ID de la instantánea a partir de la que deseas crear un trabajo nuevo.
    • REGION: Es la ubicación en la que deseas ejecutar el nuevo trabajo de Dataflow.

Python

Las instantáneas de Dataflow requieren el SDK de Apache Beam para la versión 2.29.0 o posterior de Python.

Para crear un trabajo nuevo de una instantánea, usa las marcas --createFromSnapshot y --enableStreamingEngine.

  • En la shell o terminal, crea un trabajo nuevo a partir de una instantánea. Por ejemplo:
    python -m apache_beam.examples.wordcount \
        --project PROJECT_ID \
        --temp_location gs://STORAGE_BUCKET/tmp/ \
        --input gs://apache-beam-samples/shakespeare/* \
        --output gs://STORAGE_BUCKET/output \
        --runner DataflowRunner \
        --enable_streaming_engine \
        --create_from_snapshot=SNAPSHOT_ID \
        --region REGION \
        --streaming

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • STORAGE_BUCKET: Es el bucket de Cloud Storage que usas para los elementos de trabajo temporales y la salida final.
    • SNAPSHOT_ID: Es el ID de la instantánea a partir de la que deseas crear un trabajo nuevo.
    • REGION: Es la ubicación en la que deseas ejecutar el nuevo trabajo de Dataflow.

Cuando se crean trabajos a partir de instantáneas de Dataflow, sucede lo siguiente:

  • Los trabajos que se crean a partir de instantáneas deben ejecutarse en la misma región en la que se almacena la instantánea.
  • Si una instantánea de Dataflow incluye instantáneas de fuentes de Pub/Sub, trabajos que se crearon a partir de una instantánea de Dataflow de forma automática seek a esas instantáneas de Pub/Sub como fuentes , Debes especificar los mismos temas de Pub/Sub que usa el trabajo de origen cuando creas trabajos desde esa instantánea de Dataflow.

  • Si una instantánea de Dataflow no incluye instantáneas de fuentes de Pub/Sub y el trabajo de origen usa una fuente de Pub/Sub, debes especificar un tema de Pub/Sub cuando crees trabajos a partir de esa instantánea de Dataflow.

  • Los trabajos nuevos que se crearon a partir de una instantánea aún están sujetos a una verificación de compatibilidad de actualización.

Limitaciones conocidas

Las siguientes limitaciones se aplican a las instantáneas de Dataflow:

  • No puedes crear trabajos a partir de instantáneas con plantillas o el editor de Dataflow SQL.
  • El plazo de vencimiento de la instantánea solo se puede establecer a través de la herramienta de línea de comandos de gcloud.
  • Las instantáneas de Dataflow solo admiten instantáneas de origen de Pub/Sub.
  • No se admiten las instantáneas de receptores. Por ejemplo, no puedes crear una instantánea de BigQuery cuando creas una instantánea de Dataflow.

Soluciona problemas

En esta sección, se proporcionan instrucciones para solucionar problemas comunes durante la interacción con instantáneas de Dataflow.

Antes de solicitar asistencia, asegúrate de haber descartado los problemas relacionados con las limitaciones conocidas y en las siguientes secciones de solución de problemas.

Se rechazó la solicitud de creación de instantáneas

Después de enviar una solicitud de creación de instantánea, desde Cloud Console o la herramienta de gcloud, el servicio de Dataflow realiza una verificación de condición previa y muestra cualquier mensaje de error. La solicitud de creación de instantáneas se puede rechazar por varios motivos que se especifican en los mensajes de error, por ejemplo, si un tipo de trabajo no es compatible o una región no está disponible.

Si la solicitud se rechaza porque el trabajo es demasiado antiguo, debes actualizarlo antes de solicitar una instantánea.

No se pudo crear la instantánea

La creación de instantáneas puede fallar por varias razones. Por ejemplo, el trabajo de origen se canceló o el proyecto no tiene los permisos correctos para crear instantáneas de Pub/Sub. Los registros de job-message del trabajo contienen mensajes de error de la creación de la instantánea. Si falla la creación de la instantánea, se reanuda el trabajo de origen.

No se pudo crear un trabajo a partir de una instantánea

Cuando creas un trabajo a partir de una instantánea, asegúrate de que la instantánea exista y no esté vencida. El trabajo nuevo debe ejecutarse en Streaming Engine.

Para problemas comunes de creación de trabajos, consulta la guía de solución de problemas de Dataflow. En particular, los trabajos nuevos creados a partir de instantáneas están sujetos a una verificación de compatibilidad de actualización en la que el trabajo nuevo debe ser compatible con el trabajo fuente con instantáneas.

El trabajo creado a partir de la instantánea hace poco progreso

Los registros de job-message del trabajo contienen mensajes de error para la creación de trabajos. Por ejemplo, es posible que veas que el trabajo no puede encontrar las instantáneas de Pub/Sub. En este caso, verifica que las instantáneas de Pub/Sub existan y no estén vencidas. Las instantáneas de Pub/Sub vencen en cuanto el mensaje más antiguo en una instantánea tiene más de siete días. El servicio de Pub/Sub puede quitar las instantáneas de Pub/Sub vencidas de forma automática.

En el caso de los trabajos creados a partir de instantáneas de Dataflow que incluyen instantáneas de origen de Pub/Sub, el trabajo nuevo puede tener grandes trabajos de Pub/Sub para procesar. El ajuste de escala automático de transmisión puede ayudar al trabajo nuevo a borrar las tareas pendientes más rápido.

Es posible que el trabajo de origen de la instantánea ya esté en mal estado antes de tomarse la instantánea. Comprender por qué el trabajo de origen está en mal estado puede ayudar a resolver problemas del trabajo nuevo. Para obtener sugerencias comunes de depuración de trabajos, consulta la guía de solución de problemas de Dataflow.