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 einer Server-Site ausgeführten 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 der Advanced-Notebook-Runtime SQL Server-Client-Bibliotheken hinzu. Der folgende Codeblock im Dockerfile weist Docker an, mit dem repository-Namen und tag auf die Advanced-Runtime zuzugreifen, um in der Runtime SQL Server-Client-Bibliotheken 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.
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 Sie eine benutzerdefinierte Runtime, indem Sie der Advanced-Notebook-Runtime SQL Server-Client-Bibliotheken hinzufügen.
Führen Sie für Linux-Container den folgenden Befehl aus:
FROM arcgis-notebook-python-advanced:11.1.0.42869 USER root RUN apt-get update -y && \ apt-get install vim wget curl unzip gzip ca-certificates odbcinst1debian2 -y --no-install-recommends RUN apt-get install --reinstall software-properties-common -y RUN add-apt-repository 'ppa:deadsnakes/ppa' RUN apt-get update RUN apt-get install -y python3.7 python3-pip # Install system DB drivers # # Add SQL Server ODBC Driver 18.1 for Ubuntu 22.04 # # NOTE: Only msodbcsql 18.1 is supported on Ubuntu 22.04 # Run apt list -a msodbcsql18 to check for newer release version RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \ curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \ apt-get update && \ ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql18=18.1.1.1-1 && \ apt-get install -y --allow-unauthenticated unixodbc-dev RUN rm -rf /var/lib/apt/lists/* USER $NB_UID
Führen Sie für Windows-Container den folgenden Befehl aus:
FROM arcgis-notebook-python-windows:11.1.0.42869 USER ContainerAdministrator # Install SQL Server ODBC Driver RUN powershell -Command $ErrorActionPreference = 'Stop' ; \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 ; \ Invoke-WebRequest $('https://go.microsoft.com/fwlink/?linkid=2223270') -OutFile 'msodbcsql.msi' -UseBasicParsing ; \ Start-Process msiexec '/i msodbcsql.msi /qb IACCEPTMSODBCSQLLICENSETERMS=YES' -Wait ; \ Remove-Item msodbcsql.msi -Force USER arcgis
- Speichern Sie das Dockerfile auf dem Computer in einem neuen Ordner, der nur das Dockerfile enthält.
- Erstellen Sie mit einem Docker-Befehl ein 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:
cd C:\DockerfileDir docker build -t arcgis-notebook-python-advanced-custom:11.1.0.42869 -f 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 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.
- 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.8.1.14362 > arcgis-notebook-python-advanced-custom.tar
- Laden Sie auf allen Computern, auf denen Notebook Server installiert ist, mit dem Postinstallationsdienstprogramm von ArcGIS Notebook Server das benutzerdefinierte Runtime-Image.
- Öffnen Sie die Eingabeaufforderung als Administrator.
- Wechseln Sie zum Ordner des Postinstallationsdienstprogramms von ArcGIS Notebook Server.
Der Standardpfad lautet C:\Program Files\ArcGIS\NotebookServer\tools\postInstallUtility.
- Installieren Sie das benutzerdefinierte Docker-Image, indem Sie den entsprechenden Dateipfad angeben.
PostInstallUtility.bat -l <path of .tar Custom Docker image>
- 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.
- 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 zum Darstellen der neuen Runtime, z. B. "Notebook Custom Runtime Python 3".
Containertyp
Der einzige gültige Wert lautet docker.
Max. CPU
Die maximale Anzahl CPUs, die für die einzelnen Container verwendet werden.
Erweiterte Berechtigungen erforderlich
Aktivieren Sie die Umschaltfläche, wenn die Runtime die Berechtigung "Erweiterte Notebooks" erfordert.
Image-ID
Vollständige (ungekürzte) ID für das neue Docker-Image bei seiner Erstellung.
Docker-Runtime
Gilt nur für GPU-Runtimes in Linux-Umgebungen.
Max. Speicher
Die maximale Größe des Speichers, der für die einzelnen Container verwendet wird.
Max. Speichereinheit
Die durch den Parameter maxMemory angegebene Einheit.
Max. Swap-Speicher
Die maximale Größe des Swap-Speichers, der für die einzelnen Container verfügbar ist, wenn der Grenzwert für maxMemory erreicht wird.
Max. Swap-Speichereinheit
Die durch den Parameter maxSwapMemory angegebene Einheit.
Gemeinsam genutzter Speicher
Die Größe des freigegebenen Speichers, der für die einzelnen Container verfügbar ist.
Einheit für gemeinsam genutzten Speicher
Die durch den Parameter sharedMemory angegebene Einheit.
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 PowerShell-Fenster auf dem ArcGIS Notebook Server-Computer, auf dem das Image der benutzerdefinierten Notebook-Runtime installiert ist. Führen Sie dort einen der folgenden Befehle aus, je nachdem, ob Sie Windows- oder Linux-Container verwenden.
Verwenden Sie für Windows-Container den folgenden Befehl:
$ID = docker run -d -it <custom_runtime_image_ID> cmd; docker exec -it $ID powershell "conda list --json >> C:\arcgis\home\manifest.json"; docker cp $ID/:C:\arcgis\home\manifest.json <existing_folder_path>; docker kill $ID; docker rm -f $ID;
Verwenden Sie für Linux-Container den folgenden Befehl:
$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
- 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.
Aktualisieren einer benutzerdefinierten Runtime nach einem ArcGIS Notebook Server-Upgrade
Führen Sie die folgenden Schritte aus, um eine benutzerdefinierte Runtime nach einem ArcGIS Notebook Server-Upgrade zu aktualisieren.
- Erstellen Sie unter Verwendung des neuen Notebook-Runtime-Image ein benutzerdefiniertes Runtime-Image.
- Installieren Sie mit dem Notebook Server-Postinstallationsdienstprogramm das neue Runtime-Image auf jedem Notebook Server-Computer.
- Registrieren Sie die neue Runtime mit ArcGIS Notebook Server Manager.
- Klicken Sie auf der Elementdetailseite jedes Notebooks, das die benutzerdefinierte Runtime nutzt, auf Einstellungen.
- Prüfen Sie die Runtime, und aktualisieren Sie sie für jeden Computer, der die benutzerdefinierte Runtime nutzt, auf die neu registrierte benutzerdefinierte Runtime.
- Nachdem Sie sich vergewissert haben, dass das neue Runtime-Image funktioniert, müssen Sie die vorherige Version der benutzerdefinierten Runtime außer Betrieb nehmen. Dazu heben Sie die Registrierung der Runtime auf und entfernen das Runtime-Image aus allen Notebook Server-Computern.
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.