Flujo de trabajo con Cloud Scheduler

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

  • Dataproc
  • Compute Engine
  • Cloud Scheduler

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Antes de empezar

Configurar el 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.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

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

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Crear una función personalizada

    1. Abre la página IAM y administración → Roles en la Google Cloud consola.
      1. Haz clic en CREAR ROL para abrir la página Crear rol.
      2. Rellena los campos Título, Descripción, ID y Fase de lanzamiento. Sugerencia: Usa "Dataproc Workflow Template Create" como título del rol.
      3. Haz clic en AÑADIR PERMISOS.
        1. En el formulario Añadir permisos, haz clic en Filtrar y, a continuación, selecciona "Permiso". Completa el filtro para leer "Permission: dataproc.workflowTemplates.instantiate".
        2. Marca la casilla situada a la izquierda del permiso de la lista y, a continuación, haz clic en Añadir.
      4. En la página Crear rol, haga clic en AÑADIR PERMISOS de nuevo para repetir los subpasos anteriores y añadir el permiso "iam.serviceAccounts.actAs" al rol personalizado. En la página Crear rol ahora se muestran dos permisos.
      5. En la página Rol personalizado, haz clic en CREAR. El rol personalizado se muestra en la página Roles.

    Crear una cuenta de servicio

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

      Ir a Cuentas de servicio

    2. Selecciona el proyecto.

    3. Haz clic en Crear cuenta de servicio.

    4. En el campo Nombre de cuenta de servicio, escribe el nombre workflow-scheduler. La consola rellena el campo ID de cuenta de servicio en función de este nombre. Google Cloud

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

    6. Haz clic en Crear y continuar.

    7. Haz clic en el campo Seleccionar un rol y elige el rol personalizado Crear plantilla de flujo de trabajo de Dataproc que has creado en el paso anterior.

    8. Haz clic en Continuar.

    9. En el campo Rol de administradores de la cuenta de servicio, introduce la dirección de correo de tu cuenta de Google.

    10. Haz clic en Hecho 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 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 otra región o eliminar la marca --region si has ejecutado gcloud config set compute/region anteriormente para definir la propiedad de región.
    • La secuencia "-- " (guion guion espacio) del comando add-job transfiere el argumento 1000 a la tarea SparkPi, que especifica el número de muestras que se deben usar para estimar el valor de Pi.

    1. Crea la plantilla de flujo de trabajo.
      gcloud dataproc workflow-templates create sparkpi \
          --region=us-central1
      
    2. Añade la tarea de Spark a la plantilla de flujo de trabajo sparkpi. El ID del paso "compute" es obligatorio e identifica la tarea SparkPi añadida.
      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 gestionado de un solo nodo para ejecutar el flujo de trabajo. Dataproc creará el clúster, ejecutará el flujo de trabajo en él y, a continuación, eliminará el clúster cuando se complete el flujo de trabajo.

      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 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 sparkpi.

    Crear una tarea de Cloud Scheduler

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

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

      1. Selecciona una región: "us-central" u otra región en la que hayas creado tu plantilla de flujo de trabajo.
      2. Nombre: "sparkpi"
      3. Frecuencia: "* * * * *" selecciona cada minuto; "0 9 * * 1" selecciona todos los lunes a las 9:00. Consulta Definir la programación de un trabajo para ver otros valores de unix-cron. Nota: Podrás hacer clic en el botón EJECUTAR AHORA de la sección Tareas de Cloud Scheduler en la Google Cloud consola para ejecutar y probar tu tarea, independientemente de la frecuencia que hayas definido para ella.
      4. Zona horaria: selecciona tu timezone. Escribe "Estados Unidos" para ver las zonas horarias de EE. UU.
      5. Destino: "HTTP"
      6. URL: inserta la siguiente URL después de insertar your-project-id. Sustituye "us-central1" si has creado la plantilla de flujo de trabajo en otra región. Esta URL llamará a la API workflowTemplates.instantiate de Dataproc para ejecutar la plantilla de flujo de trabajo 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 autorización:
        1. "Añadir token de OAuth"
        2. Cuenta de servicio: inserta el service account address de la cuenta de servicio que has creado para este tutorial. Puedes usar la siguiente dirección de cuenta después de insertar your-project-id:
          workflow-scheduler@your-project-id.iam.gserviceaccount.com
          
        3. Ámbito: puede ignorar este elemento.
      9. Haz clic en CREAR.

    Probar una tarea de flujo de trabajo programada

    1. En la fila de la tarea sparkpi de la página Tareas de Cloud Scheduler, haz clic en EJECUTAR AHORA.

    2. Espera unos minutos y, a continuación, abre la página Flujos de trabajo de Dataproc para comprobar que el flujo de trabajo sparkpi se ha completado.

    3. Una vez que el flujo de trabajo elimina el clúster gestionado, los detalles del trabajo se conservan en la consola. Google Cloud Haga clic en la tarea compute... que aparece en la página Tareas de Dataproc para ver los detalles de la tarea del flujo de trabajo.

    Limpieza

    El flujo de trabajo de este tutorial elimina su clúster gestionado cuando se completa. Si mantienes el flujo de trabajo, podrás volver a ejecutarlo sin incurrir en ningún coste. Puedes eliminar otros recursos creados en este tutorial para evitar costes recurrentes.

    Eliminar 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.

    Eliminar una plantilla de flujo de trabajo

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

    Eliminar la tarea de Cloud Scheduler

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

    Eliminar tu cuenta de servicio

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

    Siguientes pasos