Creazione di una sessione interattiva Dataproc Serverless per Spark

Scopri come utilizzare Dataproc Serverless per le sessioni Spark Interactive per scrivere ed eseguire codice nei blocchi note Jupyter.

Limitazioni della release in anteprima

  • I job Spark vengono eseguiti con l'identità dell'account di servizio, non con l'identità dell'utente che ha inviato la richiesta.
  • Le metriche di fatturazione non vengono registrate in Stackdriver (Dataproc per Spark Serverless Interactive è gratuito durante l'anteprima).
  • Le GPU non sono ancora supportate.
  • Le sessioni terminano dopo 24 ore indipendentemente dall'impostazione della proprietà max session time nel modello di runtime. Questa limitazione verrà rimossa per la release GA.

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Dataproc API.

    Enable the API

  4. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Enable the Dataproc API.

    Enable the API

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init

Creazione di una sessione interattiva Dataproc for Spark serverless

Puoi aprire i blocchi note Jupyter in Dataproc Serverless per le sessioni interattive di Spark. Durante la release dell'anteprima interattiva di Dataproc Serverless, puoi creare una sessione in due modi:

  1. Utilizza il plug-in JupyterLab di Dataproc per creare modelli che gli utenti possono usare per avviare sessioni in base alle impostazioni dei modelli.

  2. Utilizza Vertex AI Workbench per creare una sessione gestita da Google.

Plug-in JupyterLab

Le sezioni seguenti mostrano come creare un gestore utenti Dataproc Serverless per la sessione Spark Interactive utilizzando il plug-in Dataproc JupyterLab.

Configura la macchina

Puoi configurare ed eseguire questa guida rapida su una macchina che ha accesso ai servizi Google, come la tua macchina locale o un'istanza VM di Compute Engine.

  1. Assicurati che Python 3.8+ sia installato sul tuo computer. Puoi scaricare e installare Python da python.or/downloads.

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

      python3 --version
  2. Installa [JupyterLab 3.6.3+] e sul tuo computer.

    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 JupyterLab è precedente alla 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 Jupyter si apre nel browser. Contiene una sezione Job e sessioni Dataproc. Può contenere anche 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 progetto.

    2. Per impostazione predefinita, la sessione Dataproc Serverless per Spark Interactive viene eseguita nel progetto e nella regione che hai impostato 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 Dataproc Serverless

I modelli di runtime Dataproc Serverless (chiamati anche modelli session) contengono 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 del cluster Dataproc nella pagina di Avvio app 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 sottorete deve avere l'accesso privato Google abilitato e deve consentire la comunicazione della subnet su tutte le porte (consulta Configurazione di rete Dataproc Serverless per Spark). Se la subnet della rete default per la regione configurata durante l'esecuzione di gcloud init in Prima di iniziare non è abilitata per l'accesso privato Google, devi abilitarla per l'accesso privato Google o selezionare un'altra rete con una subnet regionale con l'accesso privato Google abilitato. Puoi modificare la regione utilizzata da Dataproc Serverless dalla pagina Impostazioni > Impostazioni Dataproc di JupyterLab.

    • Metastore: puoi scegliere di utilizzare i campi in questa sezione per selezionare un servizio Dataproc Metastore disponibile da utilizzare con la sessione.

    • Tempo di inattività massimo: il tempo di inattività massimo del blocco note prima che la sessione venga terminata automaticamente. Intervallo consentito: da 10 minuti a 336 ore (14 giorni).

    • Tempo massimo della sessione: durata massima di una sessione prima che la sessione venga terminata automaticamente. Intervallo consentito: da 10 minuti a 336 ore (14 giorni).

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

    • Proprietà Spark: fai clic su Aggiungi proprietà per ogni proprietà da impostare per le sessioni Spark serverless. Consulta la pagina Configurazione di rete di Dataproc Serverless per Spark per una spiegazione delle proprietà Spark supportate e non supportate.

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

  4. La pagina Impostazioni Dataproc elenca i tuoi modelli di runtime. Puoi eliminare un modello nell'elenco dal menu Azione di ogni modello elencato.

  5. Fai clic su Salva.

  6. Apri e ricarica la pagina Avvio app per visualizzare la scheda del modello di blocco note salvato in Avvio app JupyterLab.

gcloud

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

    Esempio:

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

    Se la subnet della rete default per la regione configurata durante l'esecuzione di gcloud init in Prima di iniziare non è abilitata per l'accesso privato Google, devi abilitarla per l'accesso privato Google o selezionare un'altra rete con una subnet regionale con l'accesso privato Google abilitato. Puoi modificare la regione utilizzata da Dataproc Serverless dalla pagina Impostazioni > Impostazioni Dataproc di JupyterLab.

  2. Esegui il seguente comando gcloud beta dataproc session-templates import in locale o in Cloud Shell per creare un modello di sessione (runtime) da un file YAML.

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

Apri un blocco note

La sezione Blocchi note serverless di Dataproc nella pagina JupyterLab Avvio app mostra le schede dei modelli di blocco note che sono mappate ai kernel di runtime specificati dai tuoi modelli di runtime serverless.

  1. Fai clic su una scheda del kernel di runtime per creare una sessione e aprire un blocco note. Quando la creazione della sessione è completa e il kernel è pronto per l'uso, lo stato del kernel passa da Unknown a Idle e si apre un blocco note.

    Per visualizzare lo stato della sessione, fai clic sulla scheda Serverless nella sezione Job e sessioni Dataproc della pagina Avvio app JupyterLab, quindi fai clic sulla scheda Sessioni. Lo stato della sessione cambia da Creating a Active quando il provisioning della sessione viene completato ed è pronta per l'esecuzione del codice.

  2. Scrivi e testa il codice nel blocco note.

    1. Copia e incolla il seguente codice Pi estimation PySpark 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 Chiudi 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à delle sessioni nella configurazione del modello di runtime. Il tempo di inattività predefinito della sessione è di un'ora.

Vertex AI

Questa sezione mostra come utilizzare Vertex AI Workbench per creare una sessione gestita, quindi aprire e utilizzare un blocco note PySpark nella sessione.

  1. Vai alla pagina Vertex AI Workbench nella console Google Cloud. Fai clic su Nuovo blocco note per aprire un nuovo blocco note gestito.
  2. Completa i campi nella pagina Crea un blocco note gestito:
    1. Nome blocco note: inserisci un nome per il blocco note.
    2. Regione: seleziona una regione dall'elenco. I blocchi note gestiti di Vertex AI sono disponibili nelle regioni elencate.
    3. Autorizzazione: seleziona Single user only
    4. Email dell'utente: inserisci il tuo indirizzo email.
    5. Fai clic su Crea per creare il blocco note e tornare alla pagina Vertex AI Workbench.
  3. Il tuo blocco note è elencato nella pagina Vertex AI Workbench. Dopo aver attivato questo collegamento, fai clic su Apri JupyterLab nella riga del tuo blocco note.
  4. Nella finestra di dialogo Autentica il blocco note gestito che viene visualizzata, fai clic su Autentica per consentire a Vertex AI Workbench di accedere ai dati e autenticare il blocco note gestito, quindi seleziona il tuo account e consenti l'accesso per aprire JupyterLab.
  5. Nella scheda Avvio app del blocco note, seleziona Serverless Spark per creare una sessione.
  6. Compila la pagina Crea sessione Spark serverless:
    1. Nome sessione:inserisci un nome per la sessione. Ogni sessione supporta un blocco note Jupyter.
    2. Lingua: seleziona PySpark.
    3. Configurazione esecuzione: lascia vuoto l'elemento dell'account di servizio per utilizzare l'account di servizio predefinito di Compute Engine.
    4. Configurazione di rete:
      1. Fai clic su Reti in questo progetto. La subnet VPC che esegue una sessione deve soddisfare i requisiti elencati in Configurazione di rete Dataproc Serverless per Spark.
      2. Seleziona una rete e una subnet all'interno del tuo progetto dall'elenco. L'elenco mostra le subnet nella rete selezionata abilitate per l'accesso privato Google.
    5. Fai clic su Invia per avviare la sessione. Il log delle attività mostra l'avanzamento dell'inizializzazione della sessione.
      Puoi monitorare lo stato della sessione anche dalla pagina Sessioni di Dataproc nella console Google Cloud.
  7. Al termine dell'inizializzazione della sessione, in JupyterLab si apre una scheda blocco note Senza titolo.ipynb. Copia e incolla il seguente codice Pi estimation PySpark 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))
  8. Chiudi la scheda del blocco note Senza titolo.ipynb. Dataproc Serverless tenta di rilevare e terminare la sessione dopo aver chiuso un blocco note in JupyterLab.