Provisioning e utilizzo di un cluster Hadoop/Spark gestito con Cloud Dataproc (riga di comando)

1. Panoramica

Cloud Dataproc è un servizio Spark e Hadoop gestito che ti consente di sfruttare gli strumenti per i dati open source per elaborazione batch, esecuzione di query, inserimento di flussi e machine learning. L'automazione di Cloud Dataproc ti aiuta a creare i cluster rapidamente, a gestirli con facilità e a risparmiare denaro disattivandoli quando non ti servono. Risparmiando tempo e denaro sull'amministrazione, puoi concentrarti sui tuoi progetti e sui tuoi dati.

Questo tutorial è adattato da https://cloud.google.com/dataproc/overview

Obiettivi didattici

  • Come creare un cluster Cloud Dataproc gestito (con Apache Spark preinstallato).
  • Come inviare un job Spark
  • Come ridimensionare un cluster
  • Come eseguire l'accesso 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?

Leggilo e basta Leggilo e completa gli esercizi

Come valuti la tua esperienza di utilizzo dei servizi Google Cloud Platform?

Principiante Intermedio Avanzato

2. Configurazione e requisiti

Configurazione dell'ambiente autonomo

  1. Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o G Suite, devi crearne uno.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Ricorda l'ID progetto, un nome univoco tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.

  1. Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.

L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in addebiti oltre questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.

3. Abilitare le API Cloud Dataproc e Google Compute Engine

Fai clic sull'icona del menu nella parte superiore sinistra dello schermo.

2bfc27ef9ba2ec7d.png

Seleziona API Manager dal menu a discesa.

408af5f32c4b7c25.png

Fai clic su Abilita API e servizi.

a9c0e84296a7ba5b.png

Cerca "Compute Engine" nella casella di ricerca. Fai clic su "API Google Compute Engine" nell'elenco dei risultati visualizzato.

b6adf859758d76b3.png

Nella pagina di Google Compute Engine, fai clic su Attiva.

da5584a1cbc77104.png

Una volta attivato, fai clic sulla freccia rivolta a sinistra per tornare indietro.

Ora cerca "API Google Cloud Dataproc" e attivala.

f782195d8e3d732a.png

4. Avvia Cloud Shell

Questa macchina virtuale basata su Debian viene caricata con tutti gli strumenti di sviluppo di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Ciò significa che per questo codelab ti servirà solo un browser (sì, funziona su Chromebook).

  1. Per attivare Cloud Shell dalla console Cloud, fai clic su Attiva Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo 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, esegui questo comando:

gcloud config set project <PROJECT_ID>

Stai cercando PROJECT_ID? Controlla l'ID che hai utilizzato nei passaggi di configurazione o cercalo nella dashboard della console Cloud:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, che potrebbero essere utili quando esegui i comandi futuri.

echo $GOOGLE_CLOUD_PROJECT

Output comando

<PROJECT_ID>
  1. Infine, imposta la zona e la configurazione del progetto predefinite.
gcloud config set compute/zone us-central1-f

Puoi scegliere una serie di zone diverse. Per saperne di più, 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 del cluster da utilizzare in questo lab:

$ CLUSTERNAME=${USER}-dplab

Iniziamo 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 due nodi worker, dovrebbero essere sufficienti per questo tutorial. Il comando precedente 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à che abilitano. Per informazioni sull'utilizzo dei flag della riga di comando per personalizzare le impostazioni del cluster, consulta il comando gcloud dataproc clusters create di Cloud SDK.

6. Invia 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 o dalla console di Google Cloud Platform. Puoi anche connetterti a un'istanza di macchina nel cluster utilizzando SSH e poi 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

Mentre il job viene eseguito, vedrai l'output nella finestra di Cloud Shell.

Interrompi l'output inserendo Control-C. Il comando gcloud verrà interrotto, ma il job continuerà a essere eseguito sul cluster Dataproc.

7. Elenco dei job e riconnessione

Stampare un elenco di lavori:

$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}

Il job inviato più di recente si trova in cima all'elenco. Copia l'ID job e incollalo al posto di "jobId" nel comando riportato di seguito. Il comando si riconnetterà al job specificato e ne visualizzerà l'output:

$ gcloud dataproc jobs wait jobId

Al termine del job, l'output includerà un'approssimazione del valore di Pi greco.

493928df54f61386.png

8. Ridimensiona cluster

Per eseguire calcoli più grandi, potresti voler aggiungere altri nodi al cluster per velocizzarlo. Dataproc ti consente di aggiungere e rimuovere nodi dal cluster in qualsiasi momento.

Esamina la configurazione del cluster:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Aumenta le dimensioni del cluster aggiungendo alcuni nodi preemptible:

$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2

Esamina di nuovo il cluster:

$ gcloud dataproc clusters describe ${CLUSTERNAME}

Tieni presente che, oltre al workerConfig della descrizione originale del cluster, ora è presente anche un secondaryWorkerConfig che include due instanceNames per i worker preemptive. 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 job Spark dovrebbero essere eseguiti circa il doppio più velocemente.

9. Accedere al cluster tramite SSH

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, vengono generate le chiavi ssh per il tuo account. Puoi scegliere una passphrase o utilizzarne una vuota per il momento e modificarla in un secondo momento utilizzando ssh-keygen, se vuoi.

Nell'istanza, controlla il nome host:

$ hostname

Poiché hai specificato --scopes=cloud-platform quando hai creato il cluster, puoi eseguire i comandi gcloud sul cluster. Elenca i cluster nel tuo progetto:

$ gcloud dataproc clusters list

Esci dalla connessione SSH quando hai terminato:

$ logout

10. Esaminare i tag

Quando hai creato il cluster, hai incluso un'opzione --tags per aggiungere un tag a ogni nodo del cluster. I tag vengono utilizzati per collegare le regole firewall a ogni nodo. In questo codelab non hai creato regole firewall corrispondenti, 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 verifica che includa codelab.

Stampa le regole firewall:

$ gcloud compute firewall-rules list

Prendi nota delle colonne SRC_TAGS e TARGET_TAGS. Se colleghi un tag a una regola firewall, puoi specificare che deve essere utilizzato su tutti i nodi che hanno quel tag.

11. Arresta il cluster

Puoi arrestare un cluster tramite una richiesta dell'API Cloud Dataproc clusters.delete, dalla riga di comando utilizzando l'eseguibile gcloud dataproc clusters delete o dalla console Google Cloud.

Chiudiamo 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ù

Licenza

Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 3.0 Generic e di una licenza Apache 2.0.