Instalowanie Jupyter Notebook na komputerze i nawiązywanie połączenia z Apache Spark w usłudze HDInsightInstall Jupyter Notebook on your computer and connect to Apache Spark on HDInsight

W tym artykule dowiesz się, jak zainstalować Jupyter Notebook przy użyciu niestandardowych PySpark (dla języka Python) i Apache Spark jądra (dla Scala) przy użyciu usługi Spark Magic.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. Następnie można połączyć Notes z klastrem usługi HDInsight.You then connect the notebook to an HDInsight cluster.

Istnieją cztery kluczowe kroki związane z instalowaniem Jupyter i nawiązywanie połączenia z usługą Apache Spark w usłudze HDInsight.There are four key steps involved in installing Jupyter and connecting to Apache Spark on HDInsight.

  • Skonfiguruj klaster Spark.Configure Spark cluster.
  • Zainstaluj Jupyter Notebook.Install Jupyter Notebook.
  • Zainstaluj jądra PySpark i Spark przy użyciu Magic Spark.Install the PySpark and Spark kernels with the Spark magic.
  • Skonfiguruj magiczną platformę Spark, aby uzyskać dostęp do klastra Spark w usłudze HDInsight.Configure Spark magic to access Spark cluster on HDInsight.

Aby uzyskać więcej informacji na temat niestandardowych jądra i programu Spark Magic, zobacz jądra dostępne dla notesów Jupyter przy użyciu klastrów Apache Spark Linux w usłudze HDInsight.For more information about custom kernels and Spark magic, see Kernels available for Jupyter Notebooks with Apache Spark Linux clusters on HDInsight.

Wymagania wstępnePrerequisites

Instalowanie Jupyter Notebook na komputerzeInstall Jupyter Notebook on your computer

Zainstaluj środowisko Python przed zainstalowaniem notesów Jupyter.Install Python before you install Jupyter Notebooks. W ramach dystrybucji Anaconda zostanie zainstalowany zarówno Język Python, jak i Jupyter Notebook.The Anaconda distribution will install both, Python, and Jupyter Notebook.

Pobierz Instalatora Anaconda na platformę i uruchom Instalatora.Download the Anaconda installer for your platform and run the setup. Podczas uruchamiania Kreatora instalacji upewnij się, że wybrano opcję dodania Anaconda do zmiennej PATH.While running the setup wizard, make sure you select the option to add Anaconda to your PATH variable. Zobacz również Instalowanie Jupyter przy użyciu Anaconda.See also, Installing Jupyter using Anaconda.

Zainstaluj Magic SparkInstall Spark magic

  1. Wprowadź polecenie, pip install sparkmagic==0.13.1 Aby zainstalować program Spark Magic dla klastrów usługi HDInsight w wersji 3,6 i 4,0.Enter the command pip install sparkmagic==0.13.1 to install Spark magic for HDInsight clusters version 3.6 and 4.0. Zobacz również dokumentację sparkmagic.See also, sparkmagic documentation.

  2. Upewnij ipywidgets się, że program jest prawidłowo zainstalowany, uruchamiając następujące polecenie:Ensure ipywidgets is properly installed by running the following command:

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

Instalowanie PySpark i jądra platformy SparkInstall PySpark and Spark kernels

  1. Określ sparkmagic , gdzie jest zainstalowana, wprowadzając następujące polecenie:Identify where sparkmagic is installed by entering the following command:

    pip show sparkmagic
    

    Następnie zmień katalog roboczy na lokalizację identyfikowaną za pomocą powyższego polecenia.Then change your working directory to the location identified with the above command.

  2. W nowym katalogu roboczym wprowadź co najmniej jedno z poniższych poleceń, aby zainstalować odpowiednie jądra:From your new working directory, enter one or more of the commands below to install the wanted kernel(s):

    JądroKernel PolecenieCommand
    platforma 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. Opcjonalny.Optional. Wprowadź poniższe polecenie, aby włączyć rozszerzenie serwera:Enter the command below to enable the server extension:

    jupyter serverextension enable --py sparkmagic
    

Konfigurowanie programu Spark Magic do nawiązywania połączenia z klastrem usługi HDInsight SparkConfigure Spark magic to connect to HDInsight Spark cluster

W tej sekcji skonfigurujesz program Spark, który został wcześniej zainstalowany do łączenia się z klastrem Apache Spark.In this section, you configure the Spark magic that you installed earlier to connect to an Apache Spark cluster.

  1. Uruchom powłokę języka Python za pomocą następującego polecenia:Start the Python shell with the following command:

    python
    
  2. Informacje o konfiguracji Jupyter są zwykle przechowywane w katalogu macierzystym użytkowników.The Jupyter configuration information is typically stored in the users home directory. Wprowadź następujące polecenie, aby zidentyfikować katalog macierzysty, i Utwórz folder o nazwie . sparkmagic.Enter the following command to identify the home directory, and create a folder called .sparkmagic. Pełna ścieżka zostanie wypełniona.The full path will be outputted.

    import os
    path = os.path.expanduser('~') + "\\.sparkmagic"
    os.makedirs(path)
    print(path)
    exit()
    
  3. W folderze .sparkmagic Utwórz plik o nazwie config.jsna i Dodaj do niego Poniższy fragment kodu JSON.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"
      },
    
      "custom_headers" : {
        "X-Requested-By": "livy"
      },
    
      "heartbeat_refresh_seconds": 5,
      "livy_server_heartbeat_timeout_seconds": 60,
      "heartbeat_retry_seconds": 1
    }
    
  4. Wprowadź następujące zmiany do pliku:Make the following edits to the file:

    Wartość szablonuTemplate value Nowa wartośćNew value
    {USERNAME} Logowanie klastra, wartość domyślna to admin .Cluster login, default is admin.
    CLUSTERDNSNAME{CLUSTERDNSNAME} Nazwa klastraCluster name
    {BASE64ENCODEDPASSWORD}{BASE64ENCODEDPASSWORD} Zakodowane w formacie base64 hasło do rzeczywistego hasła.A base64 encoded password for your actual password. Hasło Base64 można wygenerować pod adresem https://www.url-encode-decode.com/base64-encode-decode/ .You can generate a base64 password at https://www.url-encode-decode.com/base64-encode-decode/.
    "livy_server_heartbeat_timeout_seconds": 60 Kontynuuj, jeśli jest używany sparkmagic 0.12.7 (klastry v 3.5 i 3.6).Keep if using sparkmagic 0.12.7 (clusters v3.5 and v3.6). W przypadku używania sparkmagic 0.2.3 (klastrów v 3.4) Zastąp ciąg opcją "should_heartbeat": true .If using sparkmagic 0.2.3 (clusters v3.4), replace with "should_heartbeat": true.

    Możesz zobaczyć pełny przykładowy plik w przykładowym config.jsna.You can see a full example file at sample config.json.

    Porada

    Pulsy są wysyłane w celu zapewnienia braku przecieku sesji.Heartbeats are sent to ensure that sessions are not leaked. Gdy komputer przejdzie w tryb uśpienia lub jest wyłączony, puls nie zostanie wysłany, co spowodowało wyczyszczenie sesji.When a computer goes to sleep or is shut down, the heartbeat is not sent, resulting in the session being cleaned up. W przypadku klastrów w wersji 3.4, jeśli chcesz wyłączyć to zachowanie, można ustawić konfigurację usługi Livy livy.server.interactive.heartbeat.timeout 0 z poziomu interfejsu użytkownika Ambari.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. Jeśli w przypadku klastrów 3.5 nie zostanie ustawiona Powyższa konfiguracja 3,5, sesja nie zostanie usunięta.For clusters v3.5, if you do not set the 3.5 configuration above, the session will not be deleted.

  5. Uruchom Jupyter.Start Jupyter. Użyj następującego polecenia w wierszu polecenia.Use the following command from the command prompt.

    jupyter notebook
    
  6. Sprawdź, czy możesz użyć Magic Spark dostępnego z jądrami.Verify that you can use the Spark magic available with the kernels. Wykonaj poniższe czynności.Complete the following steps.

    a.a. Utwórz nowy notes.Create a new notebook. W prawym górnym rogu wybierz pozycję Nowy.From the right-hand corner, select New. Powinien zostać wyświetlony domyślny jądro Python 2 lub Python 3 i zainstalowane jądra.You should see the default kernel Python 2 or Python 3 and the kernels you installed. Rzeczywiste wartości mogą się różnić w zależności od opcji instalacji.The actual values may vary depending on your installation choices. Wybierz pozycję PySpark.Select PySpark.

    Dostępne jądra w Jupyter Notebook

    Ważne

    Po wybraniu pozycji Nowy Przejrzyj powłokę pod kątem błędów.After selecting New review your shell for any errors. Jeśli zobaczysz błąd, TypeError: __init__() got an unexpected keyword argument 'io_loop' może wystąpić znany problem z niektórymi wersjami programu Tornado.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. Jeśli tak, Zatrzymaj jądro, a następnie Obniż poziom instalacji Tornado przy użyciu następującego polecenia: 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. Uruchom Poniższy fragment kodu.Run the following code snippet.

    %%sql
    SELECT * FROM hivesampletable LIMIT 5
    

    Jeśli można pomyślnie pobrać dane wyjściowe, zostanie przetestowane połączenie z klastrem usługi HDInsight.If you can successfully retrieve the output, your connection to the HDInsight cluster is tested.

    Jeśli chcesz zaktualizować konfigurację notesu w celu nawiązania połączenia z innym klastrem, zaktualizuj config.jsprzy użyciu nowego zestawu wartości, jak pokazano w kroku 3 powyżej.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.

Dlaczego należy zainstalować program Jupyter na komputerze?Why should I install Jupyter on my computer?

Przyczyny instalacji usługi Jupyter na komputerze, a następnie połączenia jej z klastrem Apache Spark w usłudze HDInsight:Reasons to install Jupyter on your computer and then connect it to an Apache Spark cluster on HDInsight:

  • Zapewnia możliwość lokalnego tworzenia notesów, testowania aplikacji w uruchomionym klastrze, a następnie przekazywania notesów do klastra.Provides you the option to create your notebooks locally, test your application against a running cluster, and then upload the notebooks to the cluster. Aby przekazać Notes do klastra, można przekazać je przy użyciu Jupyter Notebook z systemem lub w klastrze lub zapisać je /HdiNotebooks w folderze na koncie magazynu skojarzonym z klastrem.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. Aby uzyskać więcej informacji o tym, jak notesy są przechowywane w klastrze, zobacz gdzie są przechowywane notesy Jupyter?For more information on how notebooks are stored on the cluster, see Where are Jupyter Notebooks stored?
  • Dostępne lokalnie notesy umożliwiają łączenie się z różnymi klastrami platformy Spark na podstawie wymagań aplikacji.With the notebooks available locally, you can connect to different Spark clusters based on your application requirement.
  • Za pomocą usługi GitHub można zaimplementować system kontroli źródła i mieć kontrolę wersji dla notesów.You can use GitHub to implement a source control system and have version control for the notebooks. Możesz również mieć środowisko współpracy, w którym wielu użytkowników może pracować z tym samym notesem.You can also have a collaborative environment where multiple users can work with the same notebook.
  • Można korzystać z notesów lokalnie bez potrzeby klastra.You can work with notebooks locally without even having a cluster up. Do testowania notesów jest potrzebny tylko klaster, a nie ręczne zarządzanie notesami lub środowiskiem programistycznym.You only need a cluster to test your notebooks against, not to manually manage your notebooks or a development environment.
  • Skonfigurowanie lokalnego środowiska deweloperskiego może być łatwiejsze niż skonfigurowanie instalacji Jupyter w klastrze.It may be easier to configure your own local development environment than it's to configure the Jupyter installation on the cluster. Można korzystać ze wszystkich programów zainstalowanych lokalnie, bez konfigurowania co najmniej jednego klastra zdalnego.You can take advantage of all the software you've installed locally without configuring one or more remote clusters.

Ostrzeżenie

Po zainstalowaniu Jupyter na komputerze lokalnym, wielu użytkowników może uruchamiać ten sam Notes w tym samym klastrze Spark w tym samym czasie.With Jupyter installed on your local computer, multiple users can run the same notebook on the same Spark cluster at the same time. W takiej sytuacji tworzone są wiele sesji usługi Livy.In such a situation, multiple Livy sessions are created. Jeśli napotkasz problem i chcesz debugować ten program, będzie to złożone zadanie umożliwiające śledzenie, która sesja usługi Livy należy do którego użytkownika.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.

Następne krokiNext steps