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 Advanced-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 Advanced). Wenn Sie die benutzerdefinierte Runtime erstellt haben, können Sie sie als neue Runtime in der Site registrieren.
- Installieren und konfigurieren Sie ArcGIS Notebook Server.
- Melden Sie sich als Administrator beim ArcGIS Notebook Server-Administratorverzeichnis an.
Die URL weist das Format https://notebookserver.domain.com:11443/arcgis/admin/ auf.
- 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.
- 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 Advanced-Notebook-Runtime hinzu. Der folgende Codeblock im Dockerfile weist Docker an, mit dem imageId-Wert auf die Advanced-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
- Speichern Sie das Dockerfile auf dem Computer in einem neuen Ordner, der nur das Dockerfile enthält.
- 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 in einem Terminal 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.
- Führen Sie im Terminal den folgenden Befehl aus, um den Image-ID-Wert abzurufen:
docker inspect <imageId>
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.
- Melden Sie sich als Administrator bei Ihrem ArcGIS Enterprise-Portal an, und öffnen Sie ArcGIS Notebook Server Manager.
- Öffnen Sie die Seite Einstellungen, und klicken Sie auf Runtimes.
- Klicken Sie auf Runtime registrieren, um das Dialogfeld für die Registrierung zu öffnen.
- Geben Sie die entsprechenden Werte an, um die Registrierung abzuschließen.
Parameter Details Name
Eine Zeichenfolge zur Benennung der neuen Runtime, z. B. "Notebook Custom Runtime Python 3."
Version
Die Version der von Esri bereitgestellten Runtime, die Sie als Basis-Docker-Image verwendet haben.
Image-ID
Vollständige (ungekürzte) ID für das neue Docker-Image, die Sie beim Erstellen des Image erhalten.
Containertyp
(Optional) Der einzige gültige Wert lautet "Docker".
Pull-Zeichenfolge für Image
(Optional) nicht anwendbar.
Erweiterte Berechtigungen
(Erforderlich) Aktivieren Sie diese Option, wenn die Runtime die Berechtigung für Notebooks mit Advanced-Runtime erfordert.
Max. CPU
Die maximale Anzahl CPUs, die für die einzelnen Container verwendet werden.
Max. Speicher
Die maximale Größe des Speichers, der für die einzelnen Container verwendet wird.
Max. Speichereinheit
Die durch den Parameter Max memory angegebene Einheit.
Max. Swap-Speicher
(Optional) Die maximale Größe des Swap-Speichers, der für die einzelnen Container verfügbar ist, wenn der Grenzwert für Max. Speicher erreicht wird.
Max. Swap-Speichereinheit
(Optional) Die durch den Parameter Max swap memory angegebene Einheit.
Gemeinsam genutzter Speicher
(Optional) Die Größe des freigegebenen Speichers, der für die einzelnen Container verfügbar ist.
Einheit für gemeinsam genutzten Speicher
(Optional) Die durch den Parameter Shared memory angegebene Einheit.
Docker-Runtime
(Optional) Ist nur auf GPU-Runtimes anwendbar. Weitere Informationen zu ArcGIS Notebook Server und GPUs
Library-Manifest
Eine *.json-Datei (in UTF-8- oder ANSI-Codierung) mit der Liste der Python-Bibliotheken in der Runtime.
Hinweis:
Um eine manifest.json-Datei zu erstellen, öffnen Sie ein Terminal 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 >> ~/manifest.json && docker kill $ID
- Klicken Sie anschließend auf Speichern, um die neue Runtime zu registrieren.
- Ö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.