Flusso di lavoro con Cloud Functions

Prima di iniziare

Se non l'hai ancora fatto, configura un progetto Google Cloud e due (2) Bucket di Cloud Storage.

Configura il progetto

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Dataproc, Compute Engine, Cloud Storage, and Cloud Functions .

    Abilita le API

  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. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  9. Abilita le API Dataproc, Compute Engine, Cloud Storage, and Cloud Functions .

    Abilita le API

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

    gcloud init

Crea o utilizza due (2) bucket Cloud Storage nel progetto

Nel progetto sono necessari due bucket Cloud Storage: uno per i file di input e uno per l'output.

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai alla pagina Bucket

  2. Fai clic su Crea bucket.
  3. Nella pagina Crea un bucket, inserisci le informazioni del bucket. Per andare al passaggio successivo, fai clic su Continua.
  4. Fai clic su Crea.

Crea un modello di flusso di lavoro.

Copia ed esegui i comandi elencati di seguito in una finestra del terminale locale o in Cloud Shell per creare definire un modello di flusso di lavoro.

Note:

  • I comandi specificano la stringa "us-central1" region. Puoi specificare un'altra regione o elimina il flag --region se hai già eseguito gcloud config set compute/region per impostare la proprietà della regione.
  • Il segno "-- " (trattino trattino spazio) passa argomenti al file jar. wordcount input_bucket output_dir eseguirà l'applicazione di conteggio parole del jar sui file di testo contenuti Cloud Storage input_bucket, quindi restituisce il conteggio parole in output_bucket. parametrizzerai conteggio parole del bucket di input per consentire alla tua funzione di fornire questo .

  1. Crea il modello di flusso di lavoro.

    gcloud dataproc workflow-templates create wordcount-template \
        --region=us-central1
    

  2. Aggiungi il job di conteggio parole al modello di flusso di lavoro.
    1. Specifica output-bucket-name prima di eseguire il comando (la tua funzione fornirà il bucket di input). Dopo aver inserito il valore di output-bucket-name, l'output l'argomento bucket deve essere letto come segue: gs://your-output-bucket/wordcount-output".
    2. Il "conteggio" ID passaggio e identifica il job wasoop aggiunto.

    gcloud dataproc workflow-templates add-job hadoop \
        --workflow-template=wordcount-template \
        --step-id=count \
        --jar=file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar \
        --region=us-central1 \
        -- wordcount gs://input-bucket gs://output-bucket-name/wordcount-output
    

  3. Utilizza un gestito, nodo singolo per eseguire il flusso di lavoro. Dataproc creerà eseguire il flusso di lavoro, quindi eliminarlo al termine del flusso di lavoro.

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

  4. Fai clic sul nome wordcount-template in Dataproc Flussi di lavoro nella console Google Cloud per aprire Pagina Dettagli modello di flusso di lavoro. Conferma il modello di conteggio parole attributi.

Parametrizzare il modello di flusso di lavoro.

Parameterize la variabile del bucket di input da passare al modello di flusso di lavoro.

  1. Esporta il modello di flusso di lavoro in formato testo wordcount.yaml per la parametrizzazione.
    gcloud dataproc workflow-templates export wordcount-template \
        --destination=wordcount.yaml \
        --region=us-central1
    
  2. In un editor di testo, apri wordcount.yaml, poi aggiungi un blocco parameters alla fine del file YAML in modo che l'input INPUT_BUCKET_URI di Cloud Storage può essere passato come args[1] al file binario del conteggio parole quando del flusso di lavoro.

    Di seguito è riportato un esempio di file YAML esportato. Per aggiornare il modello, puoi scegliere uno di questi due approcci:

    1. Copia e incolla l'intero file per sostituire il file esportato wordcount.yaml dopo la sostituzione di your-output_bucket con il nome del bucket di output, OPPURE
    2. Copia e incolla solo il parameters alla fine del file wordcount.yaml esportato.
    di Google.
    jobs:
    - hadoopJob:
        args:
        - wordcount
        - gs://input-bucket
        - gs://your-output-bucket/wordcount-output
        mainJarFileUri: file:///usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar
      stepId: count
    placement:
      managedCluster:
        clusterName: wordcount
        config:
          softwareConfig:
            properties:
              dataproc:dataproc.allow.zero.workers: 'true'
    parameters:
    - name: INPUT_BUCKET_URI
      description: wordcount input bucket URI
      fields:
      - jobs['count'].hadoopJob.args[1]
    
  3. Importa il testo wordcount.yaml con parametri . Digita "Y" quando ti viene chiesto di sovrascrivere il modello.
    gcloud dataproc workflow-templates import  wordcount-template \
        --source=wordcount.yaml \
        --region=us-central1
    

crea una funzione Cloud Functions

  1. Apri la pagina Cloud Functions nella nella console Google Cloud, quindi fai clic su CREA FUNZIONE.

  2. Nella pagina Crea funzione, inserisci o seleziona le seguenti informazioni:

    1. Nome: conteggio parole
    2. Memoria allocata:lascia la selezione predefinita.
    3. Trigger:
        .
      • Cloud Storage
      • Tipo di evento: finalizzare/creare
      • Bucket: seleziona il bucket di input (vedi Crea un bucket Cloud Storage nel tuo progetto). Quando un file viene aggiunto a questo bucket, la funzione attiva nel tuo flusso di lavoro. Il flusso di lavoro eseguirà l'applicazione di conteggio parole, che elaborerà per tutti i file di testo nel bucket.
    4. Codice sorgente:

      • Editor in linea
      • Runtime: Node.js 8
      • Scheda INDEX.JS: sostituisci lo snippet di codice predefinito con il seguente quindi modifica la riga const projectId per fornire -your-project-id- (senza il segno "-" iniziale o finale).
      const dataproc = require('@google-cloud/dataproc').v1;
      
      exports.startWorkflow = (data) => {
       const projectId = '-your-project-id-'
       const region = 'us-central1'
       const workflowTemplate = 'wordcount-template'
      
      const client = new dataproc.WorkflowTemplateServiceClient({
         apiEndpoint: `${region}-dataproc.googleapis.com`,
      });
      
      const file = data;
      console.log("Event: ", file);
      
      const inputBucketUri = `gs://${file.bucket}/${file.name}`;
      
      const request = {
        name: client.projectRegionWorkflowTemplatePath(projectId, region, workflowTemplate),
        parameters: {"INPUT_BUCKET_URI": inputBucketUri}
      };
      
      client.instantiateWorkflowTemplate(request)
        .then(responses => {
          console.log("Launched Dataproc Workflow:", responses[1]);
        })
        .catch(err => {
          console.error(err);
        });
      };
      
      • Scheda PACKAGE.JSON: sostituisci lo snippet di codice predefinito con il seguente le API nel tuo codice.
      {
        "name": "dataproc-workflow",
        "version": "1.0.0",
        "dependencies":{ "@google-cloud/dataproc": ">=1.0.0"}
      }
      
      • Funzione da eseguire: Inserisci: "startWorkflow".
    5. Fai clic su CREA.

Testa la funzione

  1. Copia il file pubblico rose.txt nel tuo bucket per attivare la funzione. Inserisci your-input-bucket-name (il bucket utilizzato per attivare la funzione) nel comando.

    gcloud storage cp gs://pub/shakespeare/rose.txt gs://your-input-bucket-name
    

  2. Attendi 30 secondi, quindi esegui questo comando per verificare la funzione completato correttamente.

    gcloud functions logs read wordcount
    
    ...
    Function execution took 1348 ms, finished with status: 'ok'
    

  3. Per visualizzare i log delle funzioni dalla sezione Funzioni nella console Google Cloud, fai clic wordcount della funzione, quindi fai clic su VISUALIZZA LOG nella Funzione dei dettagli.

  4. Puoi visualizzare la cartella wordcount-output nel tuo bucket di output dalla pagina Browser Storage della nella console Google Cloud.

  5. Al termine del flusso di lavoro, i dettagli del job vengono mantenuti nella console Google Cloud. Fai clic sull' Job count... elencato su Dataproc Job per visualizzare i dettagli dei job del flusso di lavoro.

esegui la pulizia

Il flusso di lavoro di questo tutorial elimina il proprio cluster gestito una volta completato il flusso di lavoro. Per evitare costi ricorrenti, puoi eliminare altri e le risorse associate a questo tutorial.

Eliminazione di un progetto

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Eliminazione dei bucket Cloud Storage

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Fai clic sulla casella di controllo relativa al bucket da eliminare.
  3. Per eliminare il bucket, fai clic su Elimina e segui le istruzioni.

Eliminazione del modello di flusso di lavoro

gcloud dataproc workflow-templates delete wordcount-template \
    --region=us-central1

Eliminazione della funzione Cloud Functions

Apri la pagina Cloud Functions nella Nella console Google Cloud, seleziona la casella a sinistra della funzione wordcount, quindi fai clic su ELIMINA.

Passaggi successivi