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. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Dataproc, Compute Engine, and Cloud Scheduler APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

Crea un rol personalizado

  1. Abre la pestaña IAM y Administrador → 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 que aparece y, luego, haz clic 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. Elige 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 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 un rol y elige la plantilla de flujo de trabajo de Dataproc. Crea el rol personalizado que creaste en el paso anterior.

  8. Haga clic en Continuar.

  9. En el campo Rol 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 de sparkpi en el Dataproc Flujos de trabajo 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 en 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 EJECUTAR AHORA. en el botón Trabajos de Cloud Scheduler en la consola de Google Cloud para ejecutar y probar tu trabajo sin importar la frecuencia que establezcas en tu trabajo.
    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 Auth:
      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.com
        
      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 se haya completado el flujo de trabajo de sparkpi.

  3. Después de que el flujo de trabajo borra el clúster administrado, los detalles del trabajo persistentes 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.

Realiza 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. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Borra la plantilla de flujo de trabajo

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

Borra tu trabajo de Cloud Scheduler

Abre los Trabajos de Cloud Scheduler en la consola de Google Cloud, selecciona la casilla a la izquierda de sparkpi y haz clic en DELETE.

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?