Flujo de trabajo con Cloud Scheduler

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Antes de comenzar

Configura tu proyecto

  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 la consola de Google Cloud, 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 Google Cloud.

  4. Habilita las API de Dataproc, Compute Engine, and Cloud Scheduler .

    Habilita las API

  5. Instala Google Cloud CLI.
  6. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  7. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  8. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  9. Habilita las API de Dataproc, Compute Engine, and Cloud Scheduler .

    Habilita las API

  10. Instala Google Cloud CLI.
  11. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init

Crea un rol personalizado

  1. Abre la página IAM y administración → Roles en la consola de Google Cloud.
    1. Haz clic en CREAR FUNCIÓN para abrir la página Crear función.
    2. Completa los campos Título, Descripción, ID, Inicio de la etapa. Sugerencia: Usa "Creación de plantilla de flujo de trabajo de Dataproc" como título de la función.
    3. Haz clic en AGREGAR PERMISOS,
      1. En el formulario Agregar permisos, haz clic en Filtro y, luego, selecciona “Permiso”. Completa el filtro para leer “Permiso: dataproc.workflowTemplates.instantiate”.
      2. Haz clic en la casilla de verificación a la izquierda del permiso en la lista y, luego, en AGREGAR.
    4. En la página Crear función, vuelve a hacer clic en AGREGAR PERMISOS para repetir los pasos secundarios anteriores a fin de agregar el permiso “iam.serviceAccounts.actAs” a la función personalizada. En la página Crear función, se enumeran dos permisos.
    5. Haz clic en CREAR en la página Función personalizada. La función personalizada se enumera en la página Funciones.

Crea una cuenta de servicio

  1. En la consola de Google Cloud, ve a la página Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona tu proyecto.

  3. Haz clic en Crear cuenta de servicio.

  4. En el campo Nombre de la cuenta de servicio, ingresa el nombre workflow-scheduler. La consola de Google Cloud completa el campo ID de la cuenta de servicio según este nombre.

  5. Opcional: En el campo Descripción de la cuenta de servicio, ingresa una descripción para la cuenta de servicio.

  6. Haz clic en Crear y continuar.

  7. Haz clic en el campo Seleccionar una función y elige la función personalizada Crear plantilla de flujo de trabajo de Dataproc que creaste en el paso anterior.

  8. Haz clic en Continuar.

  9. En el campo Función de administradores de cuentas de servicio, ingresa la dirección de correo electrónico de tu Cuenta de Google.

  10. Haz clic en Listo para terminar de crear la cuenta de servicio.

Crea una plantilla de flujo de trabajo

Copia y ejecuta los comandos que se indican a continuación en una ventana de la terminal local o en Cloud Shell para crear y definir una plantilla de flujo de trabajo.

Notas:

  • Los comandos especifican la región “us-central1”. Puedes especificar una región diferente o borrar la marca --region si ejecutaste gcloud config set compute/region para establecer la propiedad de la región.
  • La secuencia "-- " (guion guion espacio) del comando add-job pasa el argumento 1000 al trabajo de SparkPi, que especifica el número de muestras que se usarán para estimar el valor de Pi.

  1. Crea la plantilla de flujo de trabajo.

    gcloud dataproc workflow-templates create sparkpi \
        --region=us-central1
    
  2. Agrega el trabajo de Spark a la plantilla de flujo de trabajo de SparkPi. Es obligatorio el ID del paso de “procesamiento” y, además, identifica el trabajo de SparkPi agregado.
    gcloud dataproc workflow-templates add-job spark \
        --workflow-template=sparkpi \
        --step-id=compute \
        --class=org.apache.spark.examples.SparkPi \
        --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
        --region=us-central1 \
        -- 1000
    

  3. Usa un clúster administrado y de un solo nodo para ejecutar el flujo de trabajo. Dataproc creará el clúster, ejecutará el flujo de trabajo en él y, luego, borrará el clúster cuando este se complete.

    gcloud dataproc workflow-templates set-managed-cluster sparkpi \
        --cluster-name=sparkpi \
        --single-node \
        --region=us-central1
    

  4. Haz clic en el nombre sparkpi en la página Flujos de trabajo de Dataproc en la consola de Google Cloud para abrir la página Detalles de la plantilla de flujo de trabajo. Confirma los atributos de la plantilla de Sparkpi.

Crea un trabajo de Cloud Scheduler

  1. Abre la página de Cloud Scheduler de la consola de Google Cloud (es posible que debas seleccionar tu proyecto para abrir la página). Haz clic en CREAR TRABAJO.

  2. Ingresa o selecciona la siguiente información del trabajo:

    1. Selecciona una región: “us-central” o cualquier otra región en la que creaste la plantilla de flujo de trabajo.
    2. Nombre: "sparkpi"
    3. Frecuencia: "* * * * *" selecciona cada minuto. “0 9 * * 1” selecciona todos los lunes a las 9 a.m. Consulta Cómo definir el programa del trabajo para conocer otros valores unix-cron. Nota: Podrás hacer clic en el botón EJECUTAR AHORA en los Trabajos de Cloud Scheduler en la consola de Google Cloud para ejecutar y probar tu trabajo sin importar la frecuencia que estableciste.
    4. Zona horaria: Selecciona tu timezone. Escriba “Estados Unidos” para enumerar las zonas horarias de EE.UU.
    5. Destino: “HTTP”
    6. URL: Inserta la siguiente URL después de insertar your-project-id. Reemplaza “us-central1” si creaste tu plantilla de flujo de trabajo en una región diferente. Esta URL llamará a la API de workflowTemplates.instantiate de Dataproc para ejecutar la plantilla de flujo de trabajo de SparkPi.
      https://dataproc.googleapis.com/v1/projects/your-project-id/regions/us-central1/workflowTemplates/sparkpi:instantiate?alt=json
      
    7. Método HTTP:
      1. "POST"
      2. Cuerpo: “{}”
    8. Encabezado de la autenticación:
      1. “Agrega token de OAuth”
      2. Cuenta de servicio: Inserta el service account address de la cuenta de servicio que creaste para este instructivo. Puedes usar la siguiente dirección de cuenta después de insertar your-project-id:
        workflow-scheduler@your-project-id.iam.gserviceaccount
        
      3. Permiso: Puedes ignorar este elemento.
    9. Haga clic en CREAR.

Prueba tu trabajo de flujo de trabajo programado

  1. En la fila del trabajo de sparkpi en la página Trabajos de Cloud Scheduler haz clic en EJECUTAR AHORA.

  2. Espera unos minutos y, luego, abre la página Flujos de trabajo de Dataproc para verificar que el flujo de trabajo de Sparkpi se haya completado.

  3. Después de que el flujo de trabajo borra el clúster administrado, los detalles del trabajo se conservan en la consola de Google Cloud. Haz clic en el trabajo compute... que aparece en la página Trabajos de Dataproc para ver los detalles del trabajo de flujo de trabajo.

Realice una limpieza

El flujo de trabajo de este instructivo borra su clúster administrado cuando se completa. Mantener el flujo de trabajo te permite volver a ejecutarlo y no genera cargos. Puedes borrar otros recursos que creaste en este instructivo para evitar costos recurrentes.

Borra un proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Borra la plantilla de flujo de trabajo

gcloud dataproc workflow-templates delete sparkpi \
    --region=us-central1

Borra tu trabajo de Cloud Scheduler

Abre la página Trabajos de Cloud Scheduler en la consola de Google Cloud, selecciona la casilla a la izquierda de la función sparkpi y, luego, haz clic en BORRAR.

Borra tu cuenta de servicio

Abre la página IAM y administración → Cuentas de servicio en la consola de Google Cloud, selecciona la casilla a la izquierda de la cuenta de servicio workflow-scheduler... y, luego, haz clic en BORRAR.

¿Qué sigue?