Skip To Content

Erweitern einer Notebook-Runtime

ArcGIS Notebook Server umfasst zwei Notebook-Runtimes (Sammlungen von Python-Modulen). Diese Runtimes werden den Notebook-Benutzern über so genannte Container-Images zur Verfügung gestellt, die auf alle in der Server-Site ausgeführte Container angewendet werden.

Sowohl die Standard- als auch die erweiterte Notebook-Runtime enthalten ArcGIS API for Python und verschiedene Python-Module zur Verwendung in Data Science, räumlichen Analysen, für Content Management und Verwaltung. Die erweiterte Runtime enthält zudem ArcPy.

Liste der verfügbaren Python-Bibliotheken anzeigen

Manchmal benötigen Notebook-Autoren Module oder bestimmte Modulversionen, die nicht in diesen Runtimes enthalten sind. Es gibt mehrere Möglichkeiten, um in ArcGIS Notebook Server auf zusätzliche Python-Module zuzugreifen:

  • Installieren Sie ein Python-Modul während einer Notebook-Sitzung. Damit steht das Modul zur Verwendung in diesem Notebook zur Verfügung.
  • Erweitern Sie ein Esri Container-Image um zusätzliche Python-Bibliotheken in einer benutzerdefinierten Runtime. Durch das erstellte Container-Image wird die erweiterte Runtime für alle Notebook-Autoren der Site verfügbar.

Installieren von Modulen während einer Sitzung

Notebook-Autoren können Python-Module oder -Modulversionen, die in keiner Runtime enthalten sind, mit dem conda- oder pip-Paketmanagementsystem während einer Notebook-Sitzung verfügbar machen. Es wird empfohlen, conda zu verwenden, weil auch in ArcGIS Notebook Server Module damit verwaltet werden; allerdings sind einige Python-Module nur in pip verfügbar.

Hierbei wird das gewünschte Modul für die Dauer der Notebook-Sitzung installiert. Wird das Notebook geschlossen oder der Container des Benutzers beendet, ist das Modul nicht mehr verfügbar. Wenn Sie Module mit dieser Methode installieren möchten, müssen die Benutzer eine Internetverbindung zum conda- oder pip-Kanal haben.

Hinweis:

Sowohl conda als auch pip sind in den beiden Notebook-Runtimes enthalten. Sie müssen sie nicht extra installieren.

Wenn Sie zum Beispiel das scrapy-Paket während einer Sitzung installieren möchten, führen Sie eine Notebook-Zelle mit einem der folgenden Befehle aus. Welcher Befehl zu verwenden ist, hängt dabei vom eingesetzten Paketmanagementsystem ab:

Mit dem conda-Paketmanagementsystem

!conda install --yes scrapy

Mit dem pip-Paketmanagementsystem

!pip install scrapy

Um in der Notebook-Runtime, mit der Sie arbeiten, eine andere Version eines Python-Moduls zu verwenden, geben Sie die Versionsnummer im Befehl an.

Sie müssen den Kernel neu starten, nachdem Sie einen conda- oder pip-Befehl ausgeführt haben, damit das neue Paket zur Verfügung steht.

Beispielsweise ist ein bestimmtes Paket in beiden Notebook-Runtimes in Version 1.5 verfügbar, Sie möchten jedoch ein Werkzeug verwenden, das in Version 1.6 eingeführt wurde. Um Version 1.6 des Pakets während einer Notebook-Sitzung verfügbar zu machen, führen Sie eine Notebook-Zelle mit einem der folgenden Befehle aus. Welcher Befehl zu verwenden ist, hängt dabei vom eingesetzten Paketmanagementsystem ab:

Mit dem conda-Paketmanagementsystem

!conda install --yes <package name>==1.6

Mit dem pip-Paketmanagementsystem

!pip install <package name>==1.6

Erstellen eines benutzerdefinierten Container-Image

Um eine Notebook-Runtime dauerhaft zu ändern, können Sie ein benutzerdefiniertes Container-Image in einer Site erstellen. Durch den folgenden Workflow, der Administratorberechtigungen erfordert, wird ein benutzerdefiniertes Image erstellt, und ArcGIS Notebook Server wird für die Verwendung dieses Image konfiguriert.

Als Ausgangspunkt verwenden Sie eine der beiden Notebook-Runtimes (Standard oder erweitert). Wenn Sie die benutzerdefinierte Runtime erstellt haben, können Sie sie als neue Runtime in der Site registrieren.

  1. Installieren und konfigurieren Sie ArcGIS Notebook Server.
  2. Melden Sie sich als Administrator beim ArcGIS Notebook Server-Administratorverzeichnis an.

    Die URL weist das Format https://notebookserver.domain.com:11443/arcgis/admin/ auf.

  3. Klicken Sie auf Notebooks > Runtimes, und wählen Sie die Notebook-Runtime aus, die Sie für das benutzerdefinierte Image erweitern möchten.

    Notieren Sie sich für diese Runtime den Wert für "imageId", den Sie auf der Seite mit den Ressourcen finden. Dieser wird im nächsten Schritt benötigt.

  4. Erstellen Sie ein Dockerfile, mit dem die gewünschten Python-Module dem benutzerdefinierten Image hinzugefügt werden.

    Ein Dockerfile ist eine einfache Textdatei mit Anweisungen zum Erstellen eines Docker-Container-Image. Informationen und Best Practices finden Sie in der Dockerfile-Dokumentation.

    In diesem Beispiel fügen Sie das Python-Datenvisualisierungspaket graphviz der erweiterten Notebook-Runtime hinzu. Der folgende Codeblock im Dockerfile weist Docker an, mit dem imageId-Wert auf die erweiterte Runtime zuzugreifen und anschließend graphviz in der Runtime zu installieren. Als Best Practice lässt sich mit dem Befehl conda clean die Dateigröße reduzieren.

    # Specify the existing notebook runtime imageId as FROM
    FROM aa7a1a346e5b
    
    # Use RUN to issue a command to install, then clean
    RUN conda install graphviz \
      && conda clean -y -a

    In diesem Beispiel erstellen Sie eine benutzerdefinierte Runtime mit Oracle-Client-Bibliotheken.

    ## Using a Dockerfile to build a custom notebook runtime that includes Oracle client
    FROM <replace with imageId of standard or advanced container image>
    
    ## Switch to root user for installing OS level packages. 
    USER root
    
    ## Combine OS level statements for Docker image efficiency
    RUN apt-get update && \
            apt-get install -y alien
    ## Update the url below to the desired version of Oracle client.
    RUN wget https://yum.oracle.com/repo/OracleLinux/OL8/oracle/instantclient/x86_64/getPackage/oracle-instantclient19.10-basic-19.10.0.0.0-1.x86_64.rpm
    RUN alien -i oracle-instantclient19.10-basic-19.10.0.0.0-1.x86_64.rpm
    
    ## Installing libaio1 is required only for Notebook runtimes version 5 (10.9) or earlier.  
    RUN apt-get install -y libaio1
    
    ## Switch back to arcgis user at end of the Dockerfile
    USER arcgis
  5. Speichern Sie das Dockerfile auf dem Computer.
  6. Mit dem Befehl Docker erstellen Sie ein neues benutzerdefiniertes Container-Image.

    Dieses enthält eine neue Runtime gemäß Ihrer Angabe im Dockerfile. Führen Sie im Eingabeaufforderungsfenster einen Befehl mit folgender Syntax aus:

    docker build -t <name of my new runtime>:v1.0 -f <path to my Dockerfile> .
    Hinweis:

    Beenden Sie den Befehl mit einem Punkt.

    Bei der Ausführung des Befehls wird in Docker das neue Container-Image erstellt. Die letzte Zeile der Befehlsausgabe lautet Successfully built <imageId>, und sie enthält den abgekürzten ID-Wert des neuen Image. Sie müssen die ArcGIS Notebook Server-Site mit dem vollständigen imageId-Wert angeben.

  7. Führen Sie im Eingabeaufforderungsfenster den folgenden Befehl aus, um den Bild-ID-Wert abzurufen:

    docker inspect <imageId>

    Das benutzerdefinierte Image wurde erstellt, und Sie kennen den vollständigen imageId-Wert. Kehren Sie nun zum ArcGIS Notebook Server-Administratorverzeichnis zurück, um das neue Image zu registrieren.

  8. Wechseln Sie im Administratorverzeichnis zu notebooks > runtimes. Klicken Sie auf Register Runtime.
  9. Geben Sie die entsprechenden Werte an, um die Registrierung abzuschließen.

    Eine Anleitung zu diesen Parametern finden Sie in dem Referenzthema Registrieren der Runtime. Wenn Sie fertig sind, registrieren Sie die Runtime bei der Site.

  10. Öffnen Sie ein neues Notebook, um diese Aktualisierung zu testen. Überprüfen Sie, ob die zum benutzerdefinierten Image hinzugefügten Module oder Modulversionen im Notebook enthalten sind.

Mit der Operation Restore Factory Runtimes im Administratorverzeichnis können Sie die in der ArcGIS Notebook Server-Site verfügbaren Runtimes auf die ursprünglichen Einstellungen zurücksetzen. Diese ist unter https://notebookserver.domain.com:11443/arcgis/admin/notebooks/runtimes/restore verfügbar und stellt nur die werksseitigen Runtimes für die aktuelle Version der Site wieder her.