Installieren von Jupyter Notebook auf Ihrem Computer und Herstellen einer Verbindung mit Apache Spark in HDInsightInstall Jupyter notebook on your computer and connect to Apache Spark on HDInsight

In diesem Artikel erfahren Sie, wie Sie Jupyter Notebook mit den benutzerdefinierten Kerneln PySpark (für Python) und Apache Spark (für Scala) mit Spark Magic installieren und das Notebook mit einem HDInsight-Cluster verbinden.In this article you learn how to install Jupyter notebook, with the custom PySpark (for Python) and Apache Spark (for Scala) kernels with Spark magic, and connect the notebook to an HDInsight cluster. Es kann eine Reihe von Gründen geben, Jupyter auf dem lokalen Computer zu installieren, und es auch können auch einige Probleme auftreten.There can be a number of reasons to install Jupyter on your local computer, and there can be some challenges as well. Weitere Informationen hierzu finden Sie im Abschnitt Warum sollte ich Jupyter auf meinem Computer installieren? am Ende dieses Artikels.For more on this, see the section Why should I install Jupyter on my computer at the end of this article.

Es gibt vier wichtige Schritte zum Installieren von Jupyter und Herstellen einer Verbindung mit Apache Spark in HDInsight.There are four key steps involved in installing Jupyter and connecting to Apache Spark on HDInsight.

  • Konfigurieren Sie den Spark-Cluster.Configure Spark cluster.
  • Installieren Sie Jupyter Notebook.Install Jupyter notebook.
  • Installieren Sie die PySpark- und Spark-Kernel mit Spark Magic.Install the PySpark and Spark kernels with the Spark magic.
  • Konfigurieren Sie Spark Magic für den Zugriff auf den Spark-Cluster in HDInsight.Configure Spark magic to access Spark cluster on HDInsight.

Weitere Informationen zu den benutzerdefinierten Kerneln und Spark Magic für Jupyter-Notebooks mit HDInsight-Clustern finden Sie unter Verfügbare Kernels für Jupyter-Notebooks mit Apache Spark-Linux-Clustern in HDInsight.For more information about the custom kernels and the Spark magic available for Jupyter notebooks with HDInsight cluster, see Kernels available for Jupyter notebooks with Apache Spark Linux clusters on HDInsight.

VoraussetzungenPrerequisites

Die hier aufgeführten Voraussetzungen gelten nicht für die Installation von Jupyter.The prerequisites listed here are not for installing Jupyter. Sie gelten für die Herstellung einer Verbindung von einem Jupyter Notebook zu einem HDInsight-Cluster, sobald das Notebook installiert wurde.These are for connecting the Jupyter notebook to an HDInsight cluster once the notebook is installed.

Installieren von Jupyter Notebook auf Ihrem ComputerInstall Jupyter notebook on your computer

Sie müssen Python installieren, bevor Sie Jupyter Notebooks installieren können.You must install Python before you can install Jupyter notebooks. Die Anaconda-Distribution installiert sowohl Python als auch Jupyter Notebook.The Anaconda distribution will install both, Python, and Jupyter Notebook.

Laden Sie das Anaconda-Installationsprogramm für Ihre Plattform herunter, und führen Sie das Setup aus.Download the Anaconda installer for your platform and run the setup. Stellen Sie sicher, dass während der Ausführung des Setup-Assistenten die Option für das Hinzufügen von Anaconda zu Ihrer PATH-Variablen aktiviert ist.While running the setup wizard, make sure you select the option to add Anaconda to your PATH variable. Siehe auch Installieren von Jupyter mit Anaconda.See also, Installing Jupyter using Anaconda.

Installieren von SparkMagicInstall Spark magic

  1. Geben Sie einen der folgenden Befehle ein, um SparkMagic zu installieren.Enter one of the commands below to install Spark magic. Weitere Informationen finden Sie in der SparkMagic-Dokumentation.See also, sparkmagic documentation.

    ClusterversionCluster version InstallationsbefehlInstall command
    Version 3.6 und 3.5v3.6 and v3.5 pip install sparkmagic==0.12.7
    Version 3.4v3.4 pip install sparkmagic==0.2.3
  2. Führen Sie den folgenden Befehl aus, um sicherzustellen, dass ipywidgets ordnungsgemäß installiert ist:Ensure ipywidgets is properly installed by running the following command:

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

Installieren der PySpark- und Spark-KernelInstall PySpark and Spark kernels

  1. Ermitteln Sie mithilfe des folgenden Befehls, wo sparkmagic installiert ist:Identify where sparkmagic is installed by entering the following command:

    pip show sparkmagic
    

    Ändern Sie dann Ihr Arbeitsverzeichnis in den Speicherort, den Sie mit dem obigen Befehl ermittelt haben.Then change your working directory to the location identified with the above command.

  2. Geben Sie im neuen Arbeitsverzeichnis einen oder mehrere der unten aufgeführten Befehle ein, um die gewünschten Kernel zu installieren:From your new working directory, enter one or more of the commands below to install the desired kernel(s):

    KernelKernel Get-HelpCommand
    SparkSpark jupyter-kernelspec install sparkmagic/kernels/sparkkernel
    SparkRSparkR jupyter-kernelspec install sparkmagic/kernels/sparkrkernel
    PySparkPySpark jupyter-kernelspec install sparkmagic/kernels/pysparkkernel
    PySpark3PySpark3 jupyter-kernelspec install sparkmagic/kernels/pyspark3kernel
  3. Optional.Optional. Geben Sie den folgenden Befehl ein, um die Servererweiterung zu aktivieren:Enter the command below to enable the server extension:

    jupyter serverextension enable --py sparkmagic
    

Konfigurieren von Spark Magic zum Herstellen der Verbindung mit dem Spark-Cluster in HDInsightConfigure Spark magic to connect to HDInsight Spark cluster

In diesem Abschnitt lernen Sie, SparkMagic nach der Installation zu konfigurieren, um eine Verbindung mit einem Apache Spark-Cluster herzustellen.In this section, you configure the Spark magic that you installed earlier to connect to an Apache Spark cluster.

  1. Starten Sie die Python-Shell mit dem folgenden Befehl:Start the Python shell with the following command:

    python
    
  2. Die Konfigurationsinformationen für Jupyter werden in der Regel im Basisverzeichnis des Benutzers gespeichert.The Jupyter configuration information is typically stored in the users home directory. Geben Sie den folgenden Befehl ein, um das Basisverzeichnis zu ermitteln, und erstellen Sie den Ordner .sparkmagic.Enter the following command to identify the home directory, and create a folder called .sparkmagic. Der vollständige Pfad wird ausgegeben.The full path will be outputted.

    import os
    path = os.path.expanduser('~') + "\\.sparkmagic"
    os.makedirs(path)
    print(path)
    exit()
    
  3. Erstellen Sie im Ordner .sparkmagic die Datei config.json, und fügen Sie den folgenden JSON-Codeausschnitt darin ein.Within the folder .sparkmagic, create a file called config.json and add the following JSON snippet inside it.

    {
      "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"
      },
    
      "heartbeat_refresh_seconds": 5,
      "livy_server_heartbeat_timeout_seconds": 60,
      "heartbeat_retry_seconds": 1
    }
    
  4. Nehmen Sie die folgenden Änderungen an der Datei vor:Make the following edits to the file:

    VorlagenwertTemplate value Neuer WertNew value
    {BENUTZERNAME}{USERNAME} Clusteranmeldung, Standardwert: admin.Cluster login, default is admin.
    {CLUSTER-DNS-NAME}{CLUSTERDNSNAME} ClusternameCluster name
    {BASE64-CODIERTES-KENNWORT}{BASE64ENCODEDPASSWORD} Ein Base64-codiertes Kennwort für Ihr eigentliches Kennwort.A base64 encoded password for your actual password. Sie können unter https://www.url-encode-decode.com/base64-encode-decode/ ein Base64-Kennwort generieren.You can generate a base64 password at https://www.url-encode-decode.com/base64-encode-decode/.
    "livy_server_heartbeat_timeout_seconds": 60 Behalten Sie den Wert bei, wenn Sie sparkmagic 0.12.7 verwenden (Cluster der Versionen 3.5 und 3.6).Keep if using sparkmagic 0.12.7 (clusters v3.5 and v3.6). Wenn Sie sparkmagic 0.2.3 verwenden (Cluster der Version 3.4), ersetzen Sie den Wert durch "should_heartbeat": true.If using sparkmagic 0.2.3 (clusters v3.4), replace with "should_heartbeat": true.

    Eine vollständige Beispieldatei finden Sie im Beispiel für „config.json“.You can see a full example file at sample config.json.

    Tipp

    Takte werden gesendet, um sicherzustellen, dass bei Sitzungen keine Verluste auftreten.Heartbeats are sent to ensure that sessions are not leaked. Wenn ein Computer in den Ruhezustand versetzt oder heruntergefahren wird, wird der Takt nicht gesendet, und die Sitzung wird bereinigt.When a computer goes to sleep or is shut down, the heartbeat is not sent, resulting in the session being cleaned up. Für Cluster der Version 3.4 gilt: Wenn Sie dieses Verhalten deaktivieren möchten, können Sie die Livy-Konfiguration livy.server.interactive.heartbeat.timeout über die Ambari-Benutzeroberfläche auf 0 festlegen.For clusters v3.4, if you wish to disable this behavior, you can set the Livy config livy.server.interactive.heartbeat.timeout to 0 from the Ambari UI. Für Cluster der Version 3.5 gilt: Wenn Sie die obige 3.5-Konfiguration nicht festlegen, wird die Sitzung nicht gelöscht.For clusters v3.5, if you do not set the 3.5 configuration above, the session will not be deleted.

  5. Starten Sie Jupyter.Start Jupyter. Geben Sie in der Eingabeaufforderung folgenden Befehl ein:Use the following command from the command prompt.

    jupyter notebook
    
  6. Stellen Sie sicher, dass Sie die verfügbare Spark Magic-Version mit den Kerneln verwenden können.Verify that you can use the Spark magic available with the kernels. Führen Sie die folgenden Schritte aus:Perform the following steps.

    a.a. Erstellen Sie ein neues Notebook.Create a new notebook. Wählen Sie in der rechten Ecke Neu aus.From the right-hand corner, select New. Daraufhin sollten der Python 2- oder Python 3-Standardkernel und die von Ihnen installierten Kernel angezeigt werden.You should see the default kernel Python 2 or Python 3 and the kernels you installed. Die tatsächlichen Werte variieren je nach Ihren Installationsentscheidungen.The actual values may vary depending on your installation choices. Wählen Sie PySpark aus.Select PySpark.

    Kernels in Jupyter NotebookKernels in Jupyter notebook

    Wichtig

    Überprüfen Sie Ihre Shell nach der Auswahl von Neu auf Fehler.After selecting New review your shell for any errors. Wenn der Fehler TypeError: __init__() got an unexpected keyword argument 'io_loop' angezeigt wird, ist möglicherweise ein bekanntes Problem mit bestimmten Versionen von Tornado aufgetreten.If you see the error TypeError: __init__() got an unexpected keyword argument 'io_loop' you may be experiencing a known issue with certain versions of Tornado. Wenn dies der Fall ist, beenden Sie den Kernel, und stufen Sie anschließend die Tornado-Installation mit dem folgenden Befehl herab: pip install tornado==4.5.3.If so, stop the kernel and then downgrade your Tornado installation with the following command: pip install tornado==4.5.3.

    b.b. Führen Sie den folgenden Codeausschnitt aus.Run the following code snippet.

    %%sql
    SELECT * FROM hivesampletable LIMIT 5
    

    Wenn Sie die Ausgabe erfolgreich abrufen können, wird Ihre Verbindung zu dem HDInsight-Cluster getestet.If you can successfully retrieve the output, your connection to the HDInsight cluster is tested.

    Wenn Sie die Notebookkonfiguration für die Verbindung mit einem anderen Cluster aktualisieren möchten, aktualisieren Sie die Datei „config.json“ mit einem neuen Satz von Werten, wie in Schritt 3 oben dargestellt.If you want to update the notebook configuration to connect to a different cluster, update the config.json with the new set of values, as shown in Step 3, above.

Warum sollte ich Jupyter auf meinem Computer installieren?Why should I install Jupyter on my computer?

Es kann zahlreiche Gründe geben, warum Sie Jupyter auf dem Computer installieren und mit einem Apache Spark-Cluster in HDInsight verbinden möchten.There can be a number of reasons why you might want to install Jupyter on your computer and then connect it to an Apache Spark cluster on HDInsight.

  • Obwohl die Jupyter Notebooks bereits im Spark-Cluster in Azure HDInsight verfügbar sind, bietet Ihnen die Installation von Jupyter auf Ihrem Computer die Option, Ihre Notebooks lokal zu erstellen, Ihre Anwendung in einem aktiven Cluster zu testen und die Notebooks anschließend in den Cluster hochzuladen.Even though Jupyter notebooks are already available on the Spark cluster in Azure HDInsight, installing Jupyter on your computer provides you the option to create your notebooks locally, test your application against a running cluster, and then upload the notebooks to the cluster. Sie können die Notebooks entweder mithilfe des im Cluster ausgeführten Jupyter Notebooks hochladen oder sie im Ordner „/HdiNotebooks“ in dem dem Cluster zugeordneten Speicherkonto speichern.To upload the notebooks to the cluster, you can either upload them using the Jupyter notebook that is running or the cluster, or save them to the /HdiNotebooks folder in the storage account associated with the cluster. Weitere Informationen zum Speichern von Notebooks im Cluster finden Sie unter Wo werden die Notebooks gespeichert?For more information on how notebooks are stored on the cluster, see Where are Jupyter notebooks stored?
  • Wenn Notebooks lokal verfügbar sind, können Sie basierend auf den Anwendungsanforderungen Verbindungen mit unterschiedlichen Spark-Clustern herstellen.With the notebooks available locally, you can connect to different Spark clusters based on your application requirement.
  • Sie können GitHub verwenden, um ein Quellcodeverwaltungssystem zu implementieren und Versionskontrolle für die Notebooks zu ermöglichen.You can use GitHub to implement a source control system and have version control for the notebooks. Sie können auch eine Umgebung für Zusammenarbeit einrichten, in der mehrere Benutzer mit dem gleichen Notebook arbeiten können.You can also have a collaborative environment where multiple users can work with the same notebook.
  • Sie können mit Notebooks lokal ohne einen Cluster arbeiten.You can work with notebooks locally without even having a cluster up. Sie benötigen einen Cluster nur zum Testen der Notebooks, nicht für das manuelle Verwalten von Notebooks oder einer Entwicklungsumgebung.You only need a cluster to test your notebooks against, not to manually manage your notebooks or a development environment.
  • Es ist möglicherweise einfacher, Ihre eigene lokale Entwicklungsumgebung zu konfigurieren, statt die Jupyter-Installation im Cluster zu konfigurieren.It may be easier to configure your own local development environment than it is to configure the Jupyter installation on the cluster. Sie können sämtliche Software nutzen, die Sie lokal installiert haben, ohne Remotecluster zu konfigurieren.You can take advantage of all the software you have installed locally without configuring one or more remote clusters.

Warnung

Wenn Jupyter auf dem lokalen Computer installiert ist, können mehrere Benutzer gleichzeitig das gleiche Notebook im gleichen Spark-Cluster ausführen.With Jupyter installed on your local computer, multiple users can run the same notebook on the same Spark cluster at the same time. In diesem Fall werden mehrere Livy-Sitzungen erstellt.In such a situation, multiple Livy sessions are created. Wenn ein Problem auftritt, das Sie debuggen möchten, ist es eine komplexe Aufgabe nachzuverfolgen, welche Livy-Sitzung welchem Benutzer gehört.If you run into an issue and want to debug that, it will be a complex task to track which Livy session belongs to which user.

Nächste SchritteNext steps