Jupyter Notebook op uw computer installeren en verbinding maken met Apache Spark in HDInsight

In dit artikel leert u hoe u Jupyter Notebook installeert met de aangepaste PySpark-kernels (voor Python) en Apache Spark (voor Scala) met Spark Magic. Vervolgens verbindt u het notebook met een HDInsight-cluster.

Er zijn vier belangrijke stappen betrokken bij het installeren van Jupyter en het maken van verbinding met Apache Spark in HDInsight.

  • Spark-cluster configureren.
  • Installeer Jupyter Notebook.
  • Installeer de PySpark- en Spark-kernels met de Spark-magic.
  • Spark-magic configureren voor toegang tot Spark-cluster in HDInsight.

Zie Kernels die beschikbaar zijn voor Jupyter Notebooks met Apache Spark Linux-clusters in HDInsight voor meer informatie over aangepaste kernels en Spark-magic.

Vereisten

  • Een Apache Spark-cluster in HDInsight. Zie Apache Spark-clusters maken in Azure HDInsight voor instructies. Het lokale notebook maakt verbinding met het HDInsight-cluster.

  • Weten hoe u Jupyter Notebooks gebruikt met Apache Spark on HDInsight.

Jupyter Notebook installeren op uw computer

Installeer Python voordat u Jupyter Notebooks installeert. De Anaconda-distributie installeert zowel Python als Jupyter Notebook.

Download het Anaconda-installatieprogramma voor uw platform en voer de installatie uit. Zorg er tijdens het uitvoeren van de installatiewizard voor dat u de optie selecteert om Anaconda toe te voegen aan uw PATH-variabele. Zie ook: Jupyter installeren met anaconda.

Spark-magic installeren

  1. Voer de opdracht pip install sparkmagic==0.13.1 in om Spark Magic te installeren voor HDInsight-clusters versie 3.6 en 4.0. Zie ook de sparkmagic-documentatie.

  2. Zorg ervoor dat ipywidgets deze juist is geïnstalleerd door de volgende opdracht uit te voeren:

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

PySpark- en Spark-kernels installeren

  1. Bepaal waar sparkmagic de installatie is uitgevoerd door de volgende opdracht in te voeren:

    pip show sparkmagic
    

    Wijzig vervolgens uw werkmap in de locatie die is geïdentificeerd met de bovenstaande opdracht.

  2. Voer in de nieuwe werkmap een of meer van de onderstaande opdrachten in om de gewenste kernel(s) te installeren:

    Kernel Opdracht
    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. Optioneel. Voer de onderstaande opdracht in om de serverextensie in te schakelen:

    jupyter serverextension enable --py sparkmagic
    

Spark-magic configureren om verbinding te maken met HDInsight Spark-cluster

In deze sectie configureert u de Spark-magic die u eerder hebt geïnstalleerd om verbinding te maken met een Apache Spark-cluster.

  1. Start de Python-shell met de volgende opdracht:

    python
    
  2. De Configuratiegegevens van Jupyter worden doorgaans opgeslagen in de basismap van gebruikers. Voer de volgende opdracht in om de basismap te identificeren en maak een map met de naam .sparkmagic. Het volledige pad wordt uitgevoerd.

    import os
    path = os.path.expanduser('~') + "\\.sparkmagic"
    os.makedirs(path)
    print(path)
    exit()
    
  3. Maak in de map .sparkmagiceen bestand met de naam config.json en voeg daarin het volgende JSON-fragment toe.

    {
      "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. Breng de volgende wijzigingen aan in het bestand:

    Sjabloonwaarde Nieuwe waarde
    {USERNAME} Clusteraanmelding, de standaardwaarde is admin.
    {CLUSTERDNSNAME} Clusternaam
    {BASE64ENCODEDPASSWORD} Een base64-gecodeerd wachtwoord voor uw werkelijke wachtwoord. U kunt een base64-wachtwoord genereren op https://www.url-encode-decode.com/base64-encode-decode/.
    "livy_server_heartbeat_timeout_seconds": 60 Blijf gebruiken sparkmagic 0.12.7 (clusters v3.5 en v3.6). Als u (clusters v3.4) gebruikt sparkmagic 0.2.3 , vervangt u door "should_heartbeat": true.

    U kunt een volledig voorbeeldbestand zien op voorbeeld-config.json.

    Tip

    Heartbeats worden verzonden om ervoor te zorgen dat sessies niet worden gelekt. Wanneer een computer in slaapstand gaat of wordt afgesloten, wordt de heartbeat niet verzonden, waardoor de sessie wordt opgeschoond. Als u dit gedrag wilt uitschakelen voor clusters v3.4, kunt u de Livy-configuratie livy.server.interactive.heartbeat.timeout0 instellen op basis van de Ambari-gebruikersinterface. Als u voor clusters v3.5 de bovenstaande 3.5-configuratie niet instelt, wordt de sessie niet verwijderd.

  5. Start Jupyter. Gebruik de volgende opdracht vanaf de opdrachtprompt.

    jupyter notebook
    
  6. Controleer of u de Spark-magic kunt gebruiken die beschikbaar is voor de kernels. Voltooi de volgende stappen.

    a. Maak een nieuwe notebook. Selecteer Nieuw in de rechterhoek. U ziet nu de standaard kernel Python 2 of Python 3 en de kernels die u hebt geïnstalleerd. De werkelijke waarden kunnen variëren, afhankelijk van uw installatieopties. Selecteer PySpark.

    Available kernels in Jupyter Notebook.

    Belangrijk

    Nadat u Nieuw hebt geselecteerd, controleert u de shell op eventuele fouten. Als u de fout TypeError: __init__() got an unexpected keyword argument 'io_loop' ziet, ondervindt u mogelijk een bekend probleem met bepaalde versies van Tornado. Zo ja, stop de kernel en downgrade vervolgens uw Tornado-installatie met de volgende opdracht: pip install tornado==4.5.3

    b. Voer het volgende codefragment uit.

    %%sql
    SELECT * FROM hivesampletable LIMIT 5
    

    Als u de uitvoer kunt ophalen, wordt de verbinding met het HDInsight-cluster getest.

    Als u de notebookconfiguratie wilt bijwerken om verbinding te maken met een ander cluster, werkt u de config.json bij met de nieuwe set waarden, zoals wordt weergegeven in stap 3 hierboven.

Waarom moet ik Jupyter installeren op mijn computer?

Redenen om Jupyter op uw computer te installeren en deze vervolgens te verbinden met een Apache Spark-cluster in HDInsight:

  • Biedt u de mogelijkheid om uw notebooks lokaal te maken, uw toepassing te testen op een actief cluster en vervolgens de notebooks naar het cluster te uploaden. Als u de notebooks naar het cluster wilt uploaden, kunt u ze uploaden met behulp van het Jupyter Notebook dat wordt uitgevoerd of het cluster, of deze opslaan in de /HdiNotebooks map in het opslagaccount dat is gekoppeld aan het cluster. Zie Waar worden Jupyter Notebooks opgeslagen voor meer informatie over hoe notebooks worden opgeslagen in het cluster?
  • Als de notebooks lokaal beschikbaar zijn, kunt u verbinding maken met verschillende Spark-clusters op basis van uw toepassingsvereiste.
  • U kunt GitHub gebruiken om een broncodebeheersysteem te implementeren en versiebeheer voor de notebooks te hebben. U kunt ook een samenwerkingsomgeving hebben waarin meerdere gebruikers met hetzelfde notitieblok kunnen werken.
  • U kunt lokaal met notebooks werken zonder dat u een cluster hebt. U hebt alleen een cluster nodig om uw notebooks te testen, niet om uw notebooks of een ontwikkelomgeving handmatig te beheren.
  • Het kan eenvoudiger zijn om uw eigen lokale ontwikkelomgeving te configureren dan het configureren van de Jupyter-installatie op het cluster. U kunt profiteren van alle software die u lokaal hebt geïnstalleerd zonder een of meer externe clusters te configureren.

Waarschuwing

Als Jupyter is geïnstalleerd op uw lokale computer, kunnen meerdere gebruikers hetzelfde notebook tegelijkertijd op hetzelfde Spark-cluster uitvoeren. In een dergelijke situatie worden meerdere Livy-sessies gemaakt. Als u een probleem tegenkomt en dat wilt opsporen, is het een complexe taak om bij te houden welke Livy-sessie bij welke gebruiker hoort.

Volgende stappen