Freigeben über


Erstellen eines benutzerdefinierten Conda-Kanals für die Paketverwaltung

Beim Installieren von Python-Paketen verwendet der Conda-Paket-Manager Kanäle, um nach Paketen zu suchen. Möglicherweise müssen Sie aus verschiedenen Gründen einen benutzerdefinierten Conda-Kanal erstellen. So können Sie beispielsweise folgendes feststellen:

  • Ihr Arbeitsbereich ist gegen Datenexfiltration geschützt, und ausgehende Verbindungen sind blockiert.
  • Sie haben Pakete, die Sie nicht in öffentliche Repositorys hochladen möchten.
  • Sie möchten ein alternatives Repository für die Benutzer innerhalb Ihres Arbeitsbereichs einrichten.

In diesem Artikel finden Sie eine schrittweise Anleitung zum Erstellen Ihres benutzerdefinierten Conda-Kanals in Ihrem Azure Data Lake Storage-Konto.

Einrichten Des lokalen Computers

  1. Installieren Sie Conda auf Ihrem lokalen Computer. Sie können auf die Azure Synapse Spark-Laufzeit verweisen, um die Conda-Version zu identifizieren, die für dieselbe Laufzeit verwendet wird.

  2. Um einen benutzerdefinierten Kanal zu erstellen, installieren Sie conda-build.

conda install conda-build
  1. Organisieren Sie alle Pakete für die Plattform, die Sie bereitstellen möchten. In diesem Beispiel installieren wir das Anaconda-Archiv auf Ihrem lokalen Computer.
sudo wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh 
sudo chmod +x Anaconda3-4.4.0-Linux-x86_64.sh  
sudo bash Anaconda3-4.4.0-Linux-x86_64.sh -b -p /usr/lib/anaconda3 
export PATH="/usr/lib/anaconda3/bin:$PATH" 
sudo chmod 777 -R /usr/lib/anaconda3  
  1. Um eine ähnliche Umgebung zu erstellen, die in der Azure Synapse-Laufzeit verfügbar ist, können Sie diese Vorlage herunterladen. Es kann geringfügige Unterschiede zwischen der Vorlage und der tatsächlichen Azure Synapse-Umgebung geben. Nach dem Herunterladen können Sie den folgenden Befehl ausführen:
apt-get -yq install gcc g++
conda env update --prune -f base_environment.yml

Binden Sie das Speicherkonto an Ihren Rechner

Als Nächstes stellen wir das Azure Data Lake Storage Gen2-Konto auf Ihrem lokalen Computer bereit. Dieser Vorgang kann auch mit einem WASB-Konto erfolgen; Wir werden jedoch ein Beispiel für das ADLSg2-Konto durchlaufen

Weitere Informationen zum Bereitstellen des Speicherkontos auf Ihrem lokalen Computer finden Sie auf dieser Seite.

  1. Sie können Blobfuse aus dem Linux-Software-Repository für Microsoft-Produkte installieren.
wget https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb 
sudo dpkg -i packages-microsoft-prod.deb 
sudo apt-get update 
sudo apt-get install blobfuse fuse 
export AZURE_STORAGE_ACCOUNT=<storage-account-name>
export AZURE_STORAGE_SAS_TOKEN="<SAS>" 
export AZURE_STORAGE_BLOB_ENDPOINT=*.dfs.core.windows.net
  1. Erstellen Sie den Bereitstellungspunkt (mkdir /path/to/mount), und binden Sie einen Blobcontainer mit blobfuse ein. In diesem Beispiel verwenden wir den Wert "privatechannel " für die mycontainer-Variable .
sudo mkdir /home/trusted-service-user/privatechannel 
sudo mkdir -p /mnt/blobfusetmp 
blobfuse /home/trusted-service-user/privatechannel --container-name=privatechannel --tmp-path=/mnt/blobfusetmp --use-adls=true --log-level=LOG_DEBUG 
sudo chown trusted-service-user /mnt/blobfusetmp 

Erstellen des Kanals

In den nächsten Schritten erstellen wir einen benutzerdefinierten Conda-Kanal.

  1. Erstellen Sie auf Ihrem lokalen Computer ein Verzeichnis, um alle Pakete für Ihren benutzerdefinierten Kanal zu organisieren. Organisieren Sie alle tar.bz2 Pakete aus https://repo.anaconda.com/pkgs/main/linux-64/ in das Unterverzeichnis. Achten Sie darauf, auch alle abhängigen tar.bz2-Pakete einzuschließen.

cd ~/privatechannel/ 
mkdir -p channel/linux64 

<Add all .tar.bz2 from https://repo.anaconda.com/pkgs/main/linux-64/> 
// Note: Add all dependent .tar.bz2 as well 

cd channel 
mkdir noarch 
echo '{}' > noarch/repodata.json 
bzip2 -k noarch/repodata.json 

// Create channel 
conda index channel/noarch 
conda index channel/linux-64 
conda index channel
  1. Jetzt können Sie das Speicherkonto überprüfen, in dem Ihr privatechannel/channel Verzeichnis erstellt worden wäre.

Hinweis

Conda berücksichtigt nicht das SAS-Token, das einem Container zugeordnet ist. Daher müssen Sie den Container "privatechannel" als öffentlichen Zugriff markieren.

Weitere Informationen finden Sie auch im Conda-Benutzerhandbuch zum Erstellen benutzerdefinierter Kanäle.

Speicherkontoberechtigungen

Jetzt müssen wir die Berechtigungen für das Speicherkonto überprüfen. Um diese Berechtigungen festzulegen, navigieren Sie zu dem Pfad, in dem benutzerdefinierter Kanal erstellt wird. Erstellen Sie dann ein SAS-Token für privatechannel das Lese-, Listen- und Ausführungsberechtigungen enthält.

Der Kanalname ist nun die BLOB-SAS-URL, die aus diesem Prozess generiert wird.

Erstelle eine Conda-Umgebung-Konfigurationsdatei

Überprüfen Sie abschließend den Installationsprozess, indem Sie eine Conda-Beispieldatei environment.yml erstellen. Wenn Sie über einen Arbeitsbereich mit aktiviertem Schutz vor Datenexfiltration verfügen, müssen Sie den nodefaults Kanal in Ihrer Umgebungsdatei angeben.

Hier ist ein Beispiel für eine Conda-Konfigurationsdatei:

name: sample 
channels: 
  - https://<<storage account name>>.blob.core.windows.net/privatechannel/channel?<<SAS Token>
  - nodefaults 
dependencies: 
  - openssl 
  - ncurses 

Nachdem Sie die Conda-Beispieldatei erstellt haben, können Sie eine virtuelle Conda-Umgebung erstellen. Sie können dies lokal überprüfen, indem Sie die folgenden Befehle ausführen:

conda env create --file sample.yml  
source activate env 
conda list 

Nachdem Sie Ihren benutzerdefinierten Kanal überprüft haben, können Sie den Python-Poolverwaltungsprozess verwenden, um die Bibliotheken in Ihrem Apache Spark-Pool zu aktualisieren.

Nächste Schritte