Installare Jupyter Notebook nel computer e connettersi ad Apache Spark in HDInsight

Questo articolo illustra come installare Jupyter Notebook con i kernel PySpark personalizzati (per Python) e Apache Spark (per Scala) con Spark magic. Si connette quindi il notebook a un cluster HDInsight.

L'installazione di Jupyter e la connessione ad Apache Spark in HDInsight comporta quattro passaggi chiave.

  • Configurare il cluster Spark.
  • Installare Jupyter Notebook.
  • Installare i kernel PySpark e Spark con il magic Spark.
  • Configurare il magic Spark per l'accesso al cluster Spark in HDInsight.

Per altre informazioni sui kernel personalizzati e sui magic Spark, vedere Kernel disponibili per jupyter Notebook con cluster Apache Spark Linux in HDInsight.

Prerequisiti

  • Un cluster Apache Spark in HDInsight. Per istruzioni, vedere l'articolo dedicato alla creazione di cluster Apache Spark in Azure HDInsight. Il notebook locale si connette al cluster HDInsight.

  • Familiarità nell'uso di Jupyter Notebook con Spark in HDInsight.

Installare Jupyter Notebook nel computer

Installare Python prima di installare Jupyter Notebooks. La distribuzione di Anaconda installerà sia Python che Jupyter Notebook.

Scaricare il programma di installazione di Anaconda per la piattaforma in uso ed eseguirlo. Quando si esegue l'installazione guidata, assicurarsi di selezionare l'opzione per l'aggiunta di Anaconda alla variabile PATH. Vedere anche Installazione di Jupyter con Anaconda.

Installare Spark magic

  1. Immettere il comando pip install sparkmagic==0.13.1 per installare Spark magic per i cluster HDInsight versione 3.6 e 4.0. Vedere anche la documentazione di Sparkmagic.

  2. Verificare che ipywidgets sia installato correttamente eseguendo il comando seguente:

    jupyter nbextension enable --py --sys-prefix widgetsnbextension
    

Installare i kernel PySpark e Spark

  1. Identificare dove sparkmagic è installato immettendo il comando seguente:

    pip show sparkmagic
    

    Modificare quindi la directory di lavoro impostando il percorso identificato con il comando precedente.

  2. Nella nuova directory di lavoro immettere uno o più dei comandi seguenti per installare i kernel desiderati:

    Kernel Comando
    Spark jupyter-kernelspec install sparkmagic/kernels/sparkkernel
    SparkR jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
    PySpark jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
    PySpark3 jupyter-kernelspec install sparkmagic/kernels/pyspark3kernel
  3. Facoltativo. Immettere il comando seguente per abilitare l'estensione del server:

    jupyter serverextension enable --py sparkmagic
    

Configurare il magic Spark per la connessione al cluster HDInsight Spark

In questa sezione viene configurato il magic Spark installato in precedenza per connettersi a un cluster Apache Spark.

  1. Avviare la shell Python con il comando seguente:

    python
    
  2. Le informazioni di configurazione di Jupyter sono in genere archiviate nella home directory dell'utente. Immettere il comando seguente per identificare la home directory e creare una cartella denominata .sparkmagic. Verrà restituito il percorso completo.

    import os
    path = os.path.expanduser('~') + "\\.sparkmagic"
    os.makedirs(path)
    print(path)
    exit()
    
  3. All'interno della cartella .sparkmagiccreare un file denominato config.json e aggiungere il frammento JSON seguente al suo interno.

    {
      "kernel_python_credentials" : {
        "username": "{USERNAME}",
        "base64_password": "{BASE64ENCODEDPASSWORD}",
        "url": "https://{CLUSTERDNSNAME}.azurehdinsight.net/livy"
      },
    
      "kernel_scala_credentials" : {
        "username": "{USERNAME}",
        "base64_password": "{BASE64ENCODEDPASSWORD}",
        "url": "https://{CLUSTERDNSNAME}.azurehdinsight.net/livy"
      },
    
      "custom_headers" : {
        "X-Requested-By": "livy"
      },
    
      "heartbeat_refresh_seconds": 5,
      "livy_server_heartbeat_timeout_seconds": 60,
      "heartbeat_retry_seconds": 1
    }
    
  4. Apportare le modifiche seguenti al file:

    Valore del modello Nuovo valore
    {U edizione Standard RNAME} Account di accesso al cluster, il valore predefinito è admin.
    {CLUSTERDNSNAME} Nome cluster
    {BA edizione Standard 64ENCODEDPASSWORD} Password con codifica Base64 per la password effettiva. È possibile generare una password base64 in https://www.url-encode-decode.com/base64-encode-decode/.
    "livy_server_heartbeat_timeout_seconds": 60 Mantenere se si usa sparkmagic 0.12.7 (cluster v3.5 e v3.6). Se si usa sparkmagic 0.2.3 (cluster v3.4), sostituire con "should_heartbeat": true.

    È possibile visualizzare un file di esempio completo in config.json di esempio.

    Suggerimento

    Gli heartbeat vengono inviati per assicurare che le sessioni non vengano perse. Quando un computer va in sospensione o viene arrestato, l'heartbeat non verrà inviato e la sessione verrà quindi eliminata. Per disabilitare questo comportamento per i cluster v3.4, è possibile impostare la configurazione di Livy livy.server.interactive.heartbeat.timeout su 0 dall'interfaccia utente di Ambari. Per i cluster v3.5, se non si imposta la configurazione 3.5 precedente, la sessione non verrà eliminata.

  5. Avviare Jupyter. Usare il comando seguente dal prompt dei comandi.

    jupyter notebook
    
  6. Verificare che sia possibile usare il magic Spark disponibile con i kernel. Effettuare i seguenti passaggi.

    a. Creare un nuovo notebook. Nell'angolo a destra selezionare Nuovo. Dovrebbe essere visualizzato il kernel predefinito Python 2 o Python 3 e i kernel installati. I valori effettivi possono variare a seconda delle scelte di installazione. Selezionare PySpark.

    Available kernels in Jupyter Notebook.

    Importante

    Dopo aver selezionato Nuova verifica la shell per eventuali errori. Se viene visualizzato l'errore TypeError: __init__() got an unexpected keyword argument 'io_loop' potrebbe verificarsi un problema noto con determinate versioni di Tornado. In tal caso, arrestare il kernel e quindi effettuare il downgrade dell'installazione tornado con il comando seguente: pip install tornado==4.5.3.

    b. Eseguire il frammento di codice seguente.

    %%sql
    SELECT * FROM hivesampletable LIMIT 5
    

    Se è stato possibile recuperare l'output, viene verificata la connessione al cluster HDInsight.

    Se si vuole aggiornare la configurazione del notebook per connettersi a un cluster diverso, aggiornare il config.json con il nuovo set di valori, come illustrato nel passaggio 3 precedente.

Perché installare Jupyter nel computer locale

Motivi per installare Jupyter nel computer e quindi connetterlo a un cluster Apache Spark in HDInsight:

  • Offre la possibilità di creare i notebook in locale, testare l'applicazione in un cluster in esecuzione e quindi caricare i notebook nel cluster. Per caricare i notebook nel cluster, è possibile caricarli usando Jupyter Notebook in esecuzione o il cluster oppure salvarli nella /HdiNotebooks cartella nell'account di archiviazione associato al cluster. Per altre informazioni su come vengono archiviati i notebook nel cluster, vedere Dove sono archiviati i notebook di Jupyter?
  • Con i notebook disponibili in locale è possibile connettersi a cluster Spark diversi in base alle esigenze dell'applicazione.
  • È possibile usare GitHub per implementare un sistema di controllo del codice sorgente e usare il controllo della versione per il notebook. È anche possibile avere a disposizione un ambiente di collaborazione in cui più utenti possono lavorare allo stesso notebook.
  • È possibile lavorare con i notebook in locale anche senza avere un cluster. È necessario avere un cluster solo per eseguire i test dei notebook, non per gestire manualmente i notebook o un ambiente di sviluppo.
  • Potrebbe essere più semplice configurare il proprio ambiente di sviluppo locale rispetto a quello di configurare l'installazione di Jupyter nel cluster. È possibile sfruttare tutti i software installati in locale senza configurare uno o più cluster remoti.

Avviso

Con Jupyter installato nel computer locale più utenti possono eseguire contemporaneamente lo stesso notebook nello stesso cluster Spark. In questo caso, vengono create più sessioni di Livy. Se si verifica un problema e si vuole eseguire il debug, tenere traccia della sessione di Livy che appartiene l'utente sarà un'attività complessa.

Passaggi successivi