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 Advanced-Runtime umfasst ebenfalls 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 Advanced-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 repository-Namen und tag auf die Advanced-Runtime zuzugreifen und anschließend graphviz in der Runtime zu installieren. Den repository-Namen und das tag können Sie auf einem ArcGIS Notebook Server-Computer, auf dem die Runtime installiert ist, über den Befehl docker images abrufen. Als Best Practice lässt sich mit dem Befehl conda clean die Dateigröße reduzieren.

    Nutzen Sie den Befehl docker images, um für eine vorhandene Notebook-Runtime Namen (Repository) und Tag des Image abzurufen.

    docker images
    
    REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
    arcgis-notebook-python-advanced   10.8.1.14362        e46a81f69ea0        12 months ago       12.4GB
    arcgis-notebook-python-standard   10.8.1.14362        106a660a4d0b        12 months ago       7.51GB

    Erstellen einer benutzerdefinierten Runtime durch Hinzufügen des Python-Datenvisualisierungspakets graphviz zur Advanced-Notebook-Runtime

    # Specify the existing notebook runtime imageId as FROM
    FROM arcgis-notebook-python-advanced:10.8.1.14362
    
    # 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 arcgis-notebook-python-advanced:10.8.1.14362
    
    ## 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 in einem neuen Ordner, der nur das Dockerfile enthält.
  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 arcgis-notebook-python-advanced-custom:10.8.1.14362 -f c://DockerfileDir/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 Image-ID-Wert abzurufen:

    docker inspect <imageId>

    Bei einer Notebook Server-Site mit nur einem Computer können Sie Schritt 8 bis 10 überspringen. Wenn Sie über eine Notebook Server-Site mit mehreren Computern verfügen, müssen Sie Schritte 8 bis 10 ausführen.

  8. Speichern Sie mit dem Befehl docker save das benutzerdefinierte Docker-Image als *.tar-Datei.

    Öffnen Sie ein Befehlsfenster auf dem Notebook Server-Computer, auf dem das Image der benutzerdefinierten Notebook-Runtime installiert ist. Führen Sie dort den folgenden Befehl aus, um das benutzerdefinierte Runtime-Image als *.tar-Datei zu speichern:

    docker save arcgis-notebook-python-advanced-custom:10.9.1.28156 > arcgis-notebook-python-advanced-custom.tar

  9. Laden Sie auf allen Computern, auf denen Notebook Server installiert ist, mit dem Postinstallationsdienstprogramm von ArcGIS Notebook Server das benutzerdefinierte Runtime-Image.
    1. Öffnen Sie die Eingabeaufforderung als Administrator.
    2. Wechseln Sie zum Ordner des Postinstallationsdienstprogramms von ArcGIS Notebook Server.

      Standardpfad: C:\Program Files\ArcGIS\NotebookServer\tools\postInstallUtility

    3. Installieren Sie das benutzerdefinierte Docker-Image, indem Sie den entsprechenden Dateipfad angeben.

      PostInstallUtility.bat -l <path of .tar Custom Docker image>

  10. Wiederholen Sie Schritt 9 für jeden Computer, der Teil der ArcGIS Notebook Server-Site ist.

Das benutzerdefinierte Image wird jetzt erstellt, und Sie verfügen über seinen vollständigen imageId-Wert. Diesen verwenden Sie im nächsten Abschnitt zum Registrieren des Image bei der ArcGIS Notebook Server-Site.

Registrieren einer neuen Runtime in Manager

Ab Version 10.8 können Sie mit ArcGIS Notebook Server Manager eine benutzerdefinierte Runtime registrieren, die Sie erstellt haben.

  1. Melden Sie sich als Administrator bei Ihrem ArcGIS Enterprise-Portal an, und öffnen Sie ArcGIS Notebook Server Manager.
  2. Öffnen Sie die Seite Einstellungen, und klicken Sie auf Runtimes.
  3. Klicken Sie auf Runtime registrieren, um das Dialogfeld für die Registrierung zu öffnen.
  4. Geben Sie die entsprechenden Werte an, um die Registrierung abzuschließen.

    ParameterDetails
    name

    (erforderlich)

    Eine Zeichenfolge zum Darstellen der neuen Runtime, z. B. "Notebook Custom Runtime Python 3".

    version

    (erforderlich)

    Die Version der von Esri bereitgestellten Runtime, die als Basis-Docker-Image verwendet wird.

    Vorversion:

    Dieser Parameter wird ab ArcGIS Notebook Server-Version 10.9 nicht mehr verwendet.

    imageId

    (erforderlich)

    Vollständige (ungekürzte) ID für das neue Docker-Image bei der Erstellung des Image.

    containerType

    (optional)

    Der einzige gültige Wert lautet docker.

    imagePullString

    (optional)

    Nicht zutreffend.

    requiresAdvancedPrivileges

    (erforderlich)

    Legen Sie diesen Wert auf true fest, wenn für die Runtime erweiterte Berechtigungen erforderlich sind.

    Werte: true | false

    maxCPU

    (erforderlich)

    Die maximale Anzahl CPUs, die für die einzelnen Container verwendet werden.

    maxMemory

    (erforderlich)

    Die maximale Größe des Speichers, der für die einzelnen Container verwendet wird.

    maxMemoryUnit

    (erforderlich)

    Die durch den Parameter maxMemory angegebene Einheit.

    maxSwapMemory

    (optional)

    Die maximale Größe des Swap-Speichers, der für die einzelnen Container verfügbar ist, wenn der Grenzwert für maxMemory erreicht wird.

    maxSwapMemoryUnit

    (optional)

    Die durch den Parameter maxSwapMemory angegebene Einheit.

    sharedMemory

    (optional)

    Die Größe des freigegebenen Speichers, der für die einzelnen Container verfügbar ist.

    sharedMemoryUnit

    (optional)

    Die durch den Parameter sharedMemory angegebene Einheit.

    dockerRuntime

    (optional)

    Gilt nur für GPU-Runtimes in Linux-Umgebungen.

    Weitere Informationen zu ArcGIS Notebook Server und GPUs

    manifestFile

    (optional)

    Der vollständige Pfad zu einer .json-Datei (in UTF-8- oder ANSI-Codierung) mit der Liste der Python-Bibliotheken in der Runtime.

    f

    (optional)

    Das Standardantwortformat. Das Standardantwortformat lautet html.

    Wert: html | json | pjson

    createManifestFile

    (optional)

    Wenn der Wert true lautet, wird automatisch eine .json-Manifestdatei für das als Notebook-Runtime registrierte Docker-Image erstellt. Diese Einstellung wird überschrieben, wenn eine Datei für den Parameter manifestFile bereitgestellt wird.

    Werte: true

    Hinweis:

    Um eine manifest.json-Datei zu erstellen, öffnen Sie ein PowerShell-Fenster auf dem ArcGIS Notebook Server-Computer, auf dem das Image der benutzerdefinierten Notebook-Runtime installiert ist. Führen Sie dort den folgenden Befehl aus:

    $ID = docker container run -d --rm -it -v /:/host <custom_runtime_image_ID> /bin/bash; docker exec -it $ID /opt/conda/bin/conda list --json >> ~\Desktop\manifest.json; docker kill $ID
  5. Klicken Sie anschließend auf Speichern, um die neue Runtime zu registrieren.
  6. Ö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.