1. Panoramica
Cloud Dataproc è un servizio Spark e Hadoop gestito che ti consente di sfruttare strumenti di dati open source per l'elaborazione batch, l'esecuzione di query, l'inserimento di flussi e il machine learning. L'automazione di Cloud Dataproc consente di creare i cluster rapidamente, gestirli con facilità e risparmiare disattivando i cluster quando non ti servono. Risparmiando tempo e denaro sull'amministrazione, puoi concentrarti sui tuoi progetti e sui tuoi dati.
Questo tutorial è un adattamento da https://cloud.google.com/dataproc/overview
Obiettivi didattici
- Creare un cluster Cloud Dataproc gestito (con Apache Spark preinstallato).
- Come inviare un job Spark
- Come ridimensionare un cluster
- Accesso tramite SSH al nodo master di un cluster Dataproc
- Come utilizzare gcloud per esaminare cluster, job e regole firewall
- Come arrestare il cluster
Che cosa ti serve
Come utilizzerai questo tutorial?
Come giudichi la tua esperienza di utilizzo dei servizi della piattaforma Google Cloud?
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID
.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.
3. Abilita le API Cloud Dataproc e Google Compute Engine
Fai clic sull'icona del menu nella parte superiore sinistra dello schermo.
Seleziona Gestore API dal menu a discesa.
Fai clic su Abilita API e servizi.
Cerca "Compute Engine" nella casella di ricerca. Fai clic su "API Google Compute Engine" nell'elenco dei risultati visualizzato.
Nella pagina Google Compute Engine, fai clic su Abilita.
Una volta attivato, fai clic sulla freccia rivolta a sinistra per tornare indietro.
Ora cerca "API Google Cloud Dataproc". e attivare anche questa funzionalità.
4. Avvia Cloud Shell
Questa macchina virtuale basata su Debian viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Ciò significa che per questo codelab è sufficiente un browser (sì, funziona su Chromebook).
- Per attivare Cloud Shell dalla console Cloud, fai semplicemente clic su Attiva Cloud Shell (il provisioning e la connessione all'ambiente dovrebbero richiedere solo pochi minuti).
Dopo la connessione a Cloud Shell, dovresti vedere che hai già eseguito l'autenticazione e che il progetto è già impostato su PROJECT_ID
.
gcloud auth list
Output comando
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
Se, per qualche motivo, il progetto non è impostato, invia semplicemente il seguente comando:
gcloud config set project <PROJECT_ID>
Stai cercando il tuo PROJECT_ID
? Controlla l'ID utilizzato nei passaggi di configurazione o cercalo nella dashboard della console Cloud:
Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, cosa che può essere utile quando eseguirai comandi futuri.
echo $GOOGLE_CLOUD_PROJECT
Output comando
<PROJECT_ID>
- Infine, imposta la zona e la configurazione del progetto predefinite.
gcloud config set compute/zone us-central1-f
Puoi scegliere zone diverse. Per ulteriori informazioni, consulta Regioni e Zone.
5. Crea un cluster Cloud Dataproc
Dopo l'avvio di Cloud Shell, puoi utilizzare la riga di comando per richiamare il comando gcloud di Cloud SDK oppure altri strumenti disponibili nell'istanza della macchina virtuale.
Scegli un nome per il cluster da utilizzare in questo lab:
$ CLUSTERNAME=${USER}-dplab
Inizia creando un nuovo cluster:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
Le impostazioni predefinite del cluster, che includono nodi con due worker, dovrebbero essere sufficienti per questo tutorial. Il comando riportato sopra include l'opzione --zone
per specificare la zona geografica in cui verrà creato il cluster e due opzioni avanzate, --scopes
e --tags
, che vengono spiegate di seguito quando utilizzi le funzionalità abilitate. Per informazioni sull'utilizzo dei flag della riga di comando per personalizzare le impostazioni del cluster, vedi il comando Cloud SDK gcloud dataproc clusters create
.
6. Inviare un job Spark al cluster
Puoi inviare un job tramite una richiesta dell'API Cloud Dataproc jobs.submit
, utilizzando lo strumento a riga di comando gcloud
oppure dalla console della piattaforma Google Cloud. Puoi anche connetterti a un'istanza di macchina nel tuo cluster tramite SSH e quindi eseguire un job dall'istanza.
Inviamo un job utilizzando lo strumento gcloud
dalla riga di comando di Cloud Shell:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
Durante l'esecuzione del job visualizzerai l'output nella finestra di Cloud Shell.
Interrompi l'output premendo Ctrl-C. Il comando gcloud
verrà arrestato, ma il job continuerà a essere in esecuzione sul cluster Dataproc.
7. Elenco job e riconnetti
Stampa un elenco di processi:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
Il lavoro inviato più di recente è in cima all'elenco. Copia l'ID job e incollalo al posto di "jobId
" nel comando seguente. Il comando si riconnetterà al job specificato e mostrerà il suo output:
$ gcloud dataproc jobs wait jobId
Al termine del job, l'output includerà un'approssimazione del valore di Pi.
8. Ridimensiona il cluster
Per eseguire calcoli di grandi dimensioni, potrebbe essere opportuno aggiungere più nodi al cluster per velocizzarlo. Dataproc consente di aggiungere e rimuovere nodi dal cluster in qualsiasi momento.
Esamina la configurazione del cluster:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Ingrandisci il cluster aggiungendo alcuni nodi prerilasciabili:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
Esamina di nuovo il cluster:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Tieni presente che oltre al valore workerConfig
della descrizione originale del cluster, ora è presente anche un elemento secondaryWorkerConfig
che include due instanceNames
per i worker prerilasciabili. Dataproc mostra lo stato del cluster come pronto durante l'avvio dei nuovi nodi.
Poiché hai iniziato con due nodi e ora ne hai quattro, i tuoi job Spark dovrebbero essere eseguiti circa il doppio della velocità.
9. SSH nel cluster
Connettiti tramite SSH al nodo master, il cui nome istanza è sempre il nome del cluster, con l'aggiunta di -m
:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
La prima volta che esegui un comando ssh su Cloud Shell, verranno generate chiavi SSH per il tuo account. Puoi scegliere una passphrase o usare una passphrase vuota per il momento e modificarla in un secondo momento usando ssh-keygen
, se vuoi.
Nell'istanza, controlla il nome host:
$ hostname
Poiché hai specificato --scopes=cloud-platform
al momento della creazione del cluster, puoi eseguire comandi gcloud
sul cluster. Elenca i cluster nel tuo progetto:
$ gcloud dataproc clusters list
Al termine, esci dalla connessione SSH:
$ logout
10. Esamina i tag
Quando hai creato il cluster, hai incluso un'opzione --tags
per aggiungere un tag a ciascun nodo del cluster. I tag vengono utilizzati per collegare le regole firewall a ciascun nodo. Non hai creato regole firewall corrispondenti in questo codelab, ma puoi comunque esaminare i tag su un nodo e le regole firewall sulla rete.
Stampa la descrizione del nodo master:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
Cerca tags:
verso la fine dell'output e vedrai che include codelab
.
Stampa le regole del firewall:
$ gcloud compute firewall-rules list
Osserva le colonne SRC_TAGS
e TARGET_TAGS
. Collegando un tag a una regola firewall, puoi specificare che debba essere utilizzato su tutti i nodi che lo contengono.
11. Arresta il cluster
Puoi arrestare un cluster tramite una richiesta clusters.delete
dell'API Cloud Dataproc, dalla riga di comando utilizzando l'eseguibile gcloud dataproc clusters delete
oppure dalla console della piattaforma Google Cloud.
Arresta il cluster utilizzando la riga di comando di Cloud Shell:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. Complimenti!
Hai imparato a creare un cluster Dataproc, inviare un job Spark, ridimensionare un cluster, utilizzare SSH per accedere al nodo master, utilizzare gcloud per esaminare cluster, job e regole firewall e arrestare il cluster utilizzando gcloud.
Scopri di più
- Documentazione di Dataproc: https://cloud.google.com/dataproc/overview
- Codelab su Introduzione a Dataproc con la console
Licenza
Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 3.0 Generic, e Apache 2.0.