Prima di iniziare
Se non l'hai ancora fatto, configura un progetto Google Cloud e due (2) Bucket di Cloud Storage.
Configura il progetto
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Dataproc, Compute Engine, Cloud Storage, and Cloud Functions .
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API Dataproc, Compute Engine, Cloud Storage, and Cloud Functions .
- Install the Google Cloud CLI.
-
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.
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
- Fai clic su Crea bucket.
- Nella pagina Crea un bucket, inserisci le informazioni del bucket. Per andare al passaggio successivo, fai clic su Continua.
- In Assegna un nome al bucket, inserisci un nome che soddisfi i requisiti di denominazione dei bucket.
-
Per Scegli dove archiviare i tuoi dati, segui questi passaggi:
- Seleziona un'opzione Tipo di località.
- Seleziona un'opzione Località.
- In Scegli una classe di archiviazione predefinita per i dati, seleziona una classe di archiviazione.
- Per Scegli come controllare l'accesso agli oggetti, seleziona un'opzione Controllo dell'accesso.
- In Impostazioni avanzate (facoltative), specifica un metodo di crittografia, un criterio di conservazione o le etichette dei bucket.
- 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à eseguitogcloud 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 Storageinput_bucket
, quindi restituisce il conteggio parole inoutput_bucket
. parametrizzerai conteggio parole del bucket di input per consentire alla tua funzione di fornire questo .
- Crea il modello di flusso di lavoro.
gcloud dataproc workflow-templates create wordcount-template \ --region=us-central1
- Aggiungi il job di conteggio parole al modello di flusso di lavoro.
-
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"
. - 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
-
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:
- 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
- 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.
- 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
- In un editor di testo, apri
wordcount.yaml
, poi aggiungi un bloccoparameters
alla fine del file YAML in modo che l'input INPUT_BUCKET_URI di Cloud Storage può essere passato comeargs[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:
- 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 - Copia e incolla solo il
parameters
alla fine del filewordcount.yaml
esportato.
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]
- Copia e incolla l'intero file per sostituire il file esportato
- 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
Apri la pagina Cloud Functions nella nella console Google Cloud, quindi fai clic su CREA FUNZIONE.
Nella pagina Crea funzione, inserisci o seleziona le seguenti informazioni:
- Nome: conteggio parole
- Memoria allocata:lascia la selezione predefinita.
- 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.
Codice sorgente:
- Editor in linea
- Runtime: Node.js 8
- Scheda
INDEX.JS
: sostituisci lo snippet di codice predefinito con il seguente quindi modifica la rigaconst 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".
Fai clic su CREA.
Testa la funzione
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
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'
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.Puoi visualizzare la cartella
wordcount-output
nel tuo bucket di output dalla pagina Browser Storage della nella console Google Cloud.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
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Eliminazione dei bucket Cloud Storage
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
- Fai clic sulla casella di controllo relativa al bucket da eliminare.
- 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
- Consulta Panoramica dei modelli di flusso di lavoro Dataproc
- Vedi Soluzioni di pianificazione del flusso di lavoro