Utilizzo del plug-in JupyterLab di Dataproc per sessioni serverless in batch e blocchi note interattive

Limitazioni e considerazioni di Dataproc Serverless

  • I job Spark vengono eseguiti con l'identità dell'account di servizio, non con l'identità dell'utente che lo invia.

Prima di iniziare

  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. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Attiva l'API Dataproc.

    Abilita l'API

  4. Installa Google Cloud CLI.
  5. Per initialize gcloud CLI, esegui questo comando:

    gcloud init
  6. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  7. Attiva l'API Dataproc.

    Abilita l'API

  8. Installa Google Cloud CLI.
  9. Per initialize gcloud CLI, esegui questo comando:

    gcloud init

Installa il plug-in JupyterLab di Dataproc

Puoi installare e utilizzare il plug-in JupyterLab di Dataproc su una macchina o VM che ha accesso ai servizi Google, come la tua macchina locale o un'istanza VM di Compute Engine.

Per installare il plug-in, procedi nel seguente modo:

  1. Assicurati che Python 3.8+ sia installato sulla tua macchina. Puoi scaricare e installare Python da python.org/downloads.

    1. Verifica l'installazione di Python 3.8 o versioni successive.

      python3 --version
      
  2. Installa JupyterLab 3.6.3+ sulla tua macchina.

    pip3 install --upgrade jupyterlab
    
    1. Verifica l'installazione di JupyterLab 3.6.3 o versioni successive.

      pip3 show jupyterlab
      
  3. Installa il plug-in JupyterLab di Dataproc.

    pip3 install dataproc-jupyter-plugin
    
    1. Se la tua versione di JupyterLab è precedente a 4.0.0, attiva l'estensione plug-in.

      jupyter server extension enable dataproc_jupyter_plugin
      
  4. Avvia JupyterLab.

    jupyter lab
    
    1. La pagina Avvio app di JupyterLab si apre nel browser. Contiene una sezione Job e sessioni Dataproc. Può anche contenere le sezioni Blocchi note serverless di Dataproc e Blocchi note del cluster Dataproc se hai accesso ai blocchi note serverless di Dataproc o ai cluster Dataproc con il componente facoltativo Jupyter in esecuzione nel tuo progetto.

    2. Per impostazione predefinita, la sessione interattiva Dataproc Serverless per Spark viene eseguita nel progetto e nella regione impostati quando hai eseguito gcloud init in Prima di iniziare. Puoi modificare le impostazioni del progetto e della regione per le tue sessioni dalla pagina Impostazioni > Impostazioni Dataproc di JupyterLab.

Crea un modello di runtime serverless Dataproc

I modelli di runtime serverless (chiamati anche modelli session) contengono le impostazioni di configurazione per l'esecuzione di codice Spark in una sessione. Puoi creare e gestire i modelli di runtime utilizzando Jupyterlab o gcloud CLI.

JupyterLab

  1. Fai clic sulla scheda New runtime template nella sezione Blocchi note serverless di Dataproc nella pagina Avvio app di JupyterLab.

  2. Compila il modulo Modello di runtime.

  3. Specifica un Nome visualizzato e una Descrizione, quindi inserisci o conferma le altre impostazioni.

    Note

    • Configurazione di rete: la subnet deve avere l'accesso privato Google abilitato e consentire la comunicazione con la subnet su tutte le porte (consulta Configurazione di rete Dataflow serverless per Spark).

      Se la subnet della rete default per la regione che hai configurato quando hai eseguito gcloud init in Prima di iniziare non è abilitata per l'accesso privato Google:

      • Abilitare l'accesso privato Google oppure
      • Seleziona un'altra rete con una subnet a livello di regione in cui è abilitato l'accesso privato Google. Puoi modificare la regione utilizzata da Dataproc Serverless dalla pagina Impostazioni > Impostazioni Dataproc di JupyterLab.
    • Metastore: per utilizzare un servizio Dataproc Metastore nelle tue sessioni, seleziona l'ID progetto metastore, la regione e il servizio.

    • Tempo di inattività massimo: il tempo di inattività massimo del blocco note prima del termine della sessione. Intervallo consentito: da 10 minuti a 336 ore (14 giorni).

    • Durata massima della sessione:la durata massima di una sessione prima della fine della sessione. Intervallo consentito: da 10 minuti a 336 ore (14 giorni).

    • PHS: puoi selezionare un server di cronologia Spark permanente disponibile per consentirti di accedere ai log delle sessioni durante e dopo le sessioni.

    • Proprietà Spark: fai clic su Aggiungi proprietà per ogni proprietà da impostare per le sessioni Spark serverless. Consulta le proprietà Spark per un elenco delle proprietà Spark supportate e non supportate, incluse le proprietà di runtime, risorse e scalabilità automatica di Spark.

    • Etichette: fai clic su Aggiungi etichetta per ogni etichetta da impostare sulle sessioni Spark serverless.

  4. Puoi visualizzare i modelli di runtime nella pagina Impostazioni > Impostazioni di Dataproc.

    • Puoi eliminare un modello dal menu Azione del modello.
  5. Fai clic su Salva.

  6. Apri e ricarica la pagina Launcher di JupyterLab per visualizzare la scheda del modello di blocco note salvato nella pagina Launcher di JupyterLab.

gcloud

  1. Crea un file YAML con la configurazione del modello di runtime.

    YAML semplice

    environmentConfig:
      executionConfig:
        networkUri: default
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    description: Team A Development Environment
    

    YAML complesso

    environmentConfig:
      executionConfig:
        serviceAccount: sa1
        # Choose either networkUri or subnetworkUri
        networkUri: default
        subnetworkUri: subnet
        networkTags:
         - tag1
        kmsKey: key1
        idleTtl: 3600s
        ttl: 14400s
        stagingBucket: staging-bucket
      peripheralsConfig:
        metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id
        sparkHistoryServerConfig:
          dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id
    jupyterSession:
      kernel: PYTHON
      displayName: Team A
    labels:
      purpose: testing
    runtimeConfig:
      version: "1.1"
      containerImage: gcr.io/my-project-id/my-image:1.0.1
      properties:
        "p1": "v1"
    description: Team A Development Environment
    

    Se la subnet della rete default per la regione che hai configurato quando hai eseguito gcloud init in Prima di iniziare non è abilitata per l'accesso privato Google:

    • Abilitare l'accesso privato Google oppure
    • Seleziona un'altra rete con una subnet a livello di regione in cui è abilitato l'accesso privato Google. Puoi modificare la regione utilizzata da Dataproc Serverless dalla pagina Impostazioni > Impostazioni Dataproc di JupyterLab.
  2. Crea un modello di sessione (runtime) dal file YAML eseguendo il seguente comando gcloud beta dataproc session-templates import in locale o in Cloud Shell:

    gcloud beta dataproc session-templates import TEMPLATE_ID \
        --source=YAML_FILE \
        --project=PROJECT_ID \
        --location=REGION
    

Avvia e gestisci i blocchi note

Dopo aver installato il plug-in JupyterLab di Dataproc, puoi fare clic sulle schede dei modelli nella pagina Launcher di JupyterLab per:

avvia un blocco note Jupyter su Dataproc Serverless

La sezione Blocchi note serverless di Dataproc nella pagina di avvio di JupyterLab mostra le schede dei modelli di blocco note che sono mappate ai modelli di runtime serverless di Dataproc (consulta la pagina relativa alla creazione di un modello di runtime Dataproc Serverless).

  1. Fai clic su una scheda per creare una sessione Dataproc Serverless e avviare un blocco note. Quando la creazione della sessione è completa e il kernel del blocco note è pronto per l'uso, lo stato del kernel cambia da Unknown a Idle.

  2. Scrivere e testare il codice del blocco note.

    1. Copia e incolla il seguente codice PySpark Pi estimation nella cella del blocco note PySpark, quindi premi Maiusc + Invio per eseguire il codice.

      import random
          
      def inside(p):
          x, y = random.random(), random.random()
          return x*x + y*y < 1
          
      count = sc.parallelize(range(0, 10000)) .filter(inside).count()
      print("Pi is roughly %f" % (4.0 * count / 10000))
      

      Risultato blocco note:

  3. Dopo aver creato e utilizzato un blocco note, puoi terminare la sessione del blocco note facendo clic su Arresta kernel nella scheda Kernel.

    • Se non termini la sessione, Dataproc termina la sessione alla scadenza del timer di inattività della sessione. Puoi configurare il tempo di inattività della sessione nella configurazione del modello di runtime. Il tempo di inattività della sessione predefinito è di un'ora.

avvia un blocco note su un cluster Dataproc su Compute Engine

Se hai creato un cluster Dataproc su Compute Engine Jupyter, la pagina Avvio app di JupyterLab contiene una sezione Blocco note del cluster Dataproc con schede kernel preinstallate.

Per avviare un blocco note Jupyter sul tuo cluster Dataproc su Compute Engine:

  1. Fai clic su una scheda nella sezione Blocco note del cluster Dataproc.

  2. Quando lo stato del kernel cambia da Unknown a Idle, puoi iniziare a scrivere ed eseguire il codice del blocco note.

  3. Dopo aver creato e utilizzato un blocco note, puoi terminare la sessione del blocco note facendo clic su Arresta kernel nella scheda Kernel.

Gestisci i file di input e di output in Cloud Storage

L'analisi dei dati esplorativi e la creazione di modelli ML spesso richiedono input e output basati su file. Dataproc Serverless accede a questi file su Cloud Storage.

  • Per accedere al browser Cloud Storage, fai clic sull'icona del browser Cloud Storage nella barra laterale della pagina Avvio app di JupyterLab, quindi fai doppio clic su una cartella per visualizzarne il contenuto.

  • Puoi fare clic sui tipi di file supportati da Jupyter per aprirli e modificarli. Quando salvi le modifiche ai file, queste vengono scritte in Cloud Storage.

  • Per creare una nuova cartella di Cloud Storage, fai clic sull'icona della nuova cartella e inserisci il nome della cartella.

  • Per caricare file in un bucket Cloud Storage o in una cartella, fai clic sull'icona di caricamento, quindi seleziona i file da caricare.

Sviluppa il codice del blocco note Spark

Dopo aver installato il plug-in JupyterLab di Dataproc, puoi avviare i blocchi note Jupyter dalla pagina Launcher di JupyterLab per sviluppare il codice dell'applicazione.

Sviluppo di codice PySpark e Python

I cluster Dataproc Serverless e Dataproc su Compute Engine supportano i kernel PySpark. Dataproc su Compute Engine supporta anche i kernel Python.

Sviluppo di codice SQL

Fai clic sulla scheda del kernel PySpark nella sezione Blocchi note serverless di Dataproc o Blocco note del cluster Dataproc della pagina Avvio app di JupyterLab per aprire un blocco note PySpark per scrivere ed eseguire codice SQL.

Spark SQL magic:poiché il kernel PySpark che avvia Dataproc Serverless Notebooks è precaricato con Spark SQL, invece di utilizzare spark.sql('SQL STATEMENT').show() per eseguire il wrapping dell'istruzione SQL, puoi digitare %%sparksql magic nella parte superiore di una cella, quindi digitare l'istruzione SQL nella cella.

SQL di BigQuery: il connettore BigQuery Spark consente al codice del blocco note di caricare dati dalle tabelle BigQuery, eseguire analisi in Spark e quindi scrivere i risultati in una tabella BigQuery.

Il runtime Dataproc Serverless 2.1 include il connettore BigQuery Spark. Se utilizzi Dataproc Serverless 2.0 o il runtime precedente per avviare blocchi note di Dataproc Serverless, puoi installare il connettore BigQuery Spark aggiungendo la seguente proprietà Spark al modello di runtime Serverless di Dataproc:

spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar

Sviluppo del codice scalabile

I cluster di Dataproc su Compute Engine creati con immagini 2.0 e versioni successive, 2.1 e versioni successive, includono Apache Toree, un kernel Scala per la piattaforma di blocco note Jupyter che fornisce accesso interattivo a Spark.

  • Fai clic sulla scheda Apache Toree nella sezione Blocchi note del cluster Dataproc nella pagina Avvio app di JupyterLab per aprire un blocco note per lo sviluppo del codice Scala.

Esplorazione metadati

Se un'istanza Dataproc Metastore (DPMS) è collegata a un modello di runtime serverless di Dataproc o a un cluster Dataproc su Compute Engine, lo schema dell'istanza DPMS viene visualizzato in JupyterLab Metadata Explorer all'apertura di un blocco note. DPMS è un servizio Hive Metastore (HMS) completamente gestito e a scalabilità orizzontale su Google Cloud.

Per visualizzare i metadati HMS in Metadata Explorer:

Per aprire Metadata Explorer di JupyterLab, fai clic sulla relativa icona nella barra laterale.

Puoi cercare un database, una tabella o una colonna in Esplora metadati. Fai clic sul nome di un database, di una tabella o di una colonna per visualizzare i metadati associati.

Esegui il deployment del codice

Dopo aver installato il plug-in JupyterLab di Dataproc, puoi utilizzare JupyterLab per:

  • Esegui il codice del blocco note sull'infrastruttura Dataproc Serverless

  • Invia job batch all'infrastruttura Dataproc Serverless o al tuo cluster Dataproc su Compute Engine.

Esegui il codice del blocco note su Dataproc Serverless

  • Fai clic sull'icona Esegui o premi i tasti Maiusc-Invio per eseguire il codice nella cella di un blocco note.

  • Utilizza il menu Esegui per eseguire il codice in una o più celle del blocco note.

Invia un job batch a Dataproc Serverless

  • Fai clic sulla scheda Serverless nella sezione Job e sessioni Dataproc della pagina Launcher di JupyterLab.

  • Fai clic sulla scheda Batch, quindi su Crea batch e compila i campi Informazioni sul batch.

  • Fai clic su Invia per inviare il job.

Invia un job batch a un cluster Dataproc su Compute Engine

  • Fai clic sulla scheda Cluster nella sezione Job e sessioni Dataproc della pagina Avvio app di JupyterLab.

  • Fai clic sulla scheda Job, quindi su Invia job.

  • Seleziona un Cluster, quindi compila i campi Job.

  • Fai clic su Invia per inviare il job.

Visualizza e gestisci le risorse

Dopo aver installato il plug-in JupyterLab di Dataproc, puoi visualizzare e gestire Dataproc Serverless e Dataproc su Compute Engine dalla sezione Job e sessioni di Dataproc nella pagina Launcher di JupyterLab.

Fai clic sulla sezione Job e sessioni Dataproc per visualizzare le schede Cluster e Serverless.

Per visualizzare e gestire le sessioni Dataproc Serverless:

  1. Fai clic sulla scheda Serverless.
  2. Fai clic sulla scheda Sessioni, quindi su un ID sessione per aprire la pagina Dettagli sessione e visualizzare le proprietà delle sessioni, il log di Google Cloud in Esplora log e terminare una sessione. Nota: viene creata una sessione Dataproc Serverless univoca per avviare ogni blocco note Dataproc Serverless.

Per visualizzare e gestire i batch Dataproc serverless:

  1. Fai clic sulla scheda Batch per visualizzare l'elenco dei batch Dataproc Serverless nel progetto e nella regione correnti. Fai clic su un ID batch per visualizzare i dettagli del batch.

Per visualizzare e gestire Dataproc sui cluster Compute Engine:

  1. Fai clic sulla scheda Cluster. La scheda Cluster è selezionata per elencare i cluster Dataproc su Compute Engine attivi nel progetto e nella regione correnti. Puoi fare clic sulle icone nella colonna Azioni per avviare, arrestare o riavviare un cluster. Fai clic sul nome di un cluster per visualizzare i dettagli del cluster. Puoi fare clic sulle icone nella colonna Azioni per clonare, arrestare o eliminare un job.

Per visualizzare e gestire i job di Dataproc on Compute Engine:

  1. Fai clic sulla scheda Job per visualizzare l'elenco dei job nel progetto corrente. Fai clic su un ID job per visualizzare i dettagli del job.