Creare un canale Conda personalizzato per la gestione dei pacchetti

Quando si installano pacchetti Python, la gestione dei pacchetti Conda usa i canali per cercare i pacchetti. Potrebbe essere necessario creare un canale Conda personalizzato per vari motivi. Ad esempio, è possibile che:

  • l'area di lavoro è protetta dall'esfiltrazione dei dati e le connessioni in uscita sono bloccate.
  • si dispone di pacchetti che non si desidera caricare nei repository pubblici.
  • si desidera configurare un repository alternativo per gli utenti all'interno dell'area di lavoro.

Questo articolo fornisce una guida dettagliata per creare il canale Conda personalizzato all'interno dell'account di Azure Data Lake Storage.

Configurare il computer locale

  1. Installare Conda nel computer locale. È possibile fare riferimento al runtime di Azure Synapse Spark per identificare la versione di Conda usata nello stesso runtime.

  2. Per creare un canale personalizzato, installare conda-build.

conda install conda-build
  1. Organizzare tutti i pacchetti per la piattaforma che si desidera servire. In questo esempio verrà installato l'archivio Anaconda nel computer locale.
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. Per creare un ambiente simile a quello creato nel runtime di Azure Synapse, è possibile scaricare questo modello. Potrebbero esserci lievi differenze tra il modello e l'ambiente Azure Synapse effettivo. Dopo il download, è possibile eseguire il comando seguente:
apt-get -yq install gcc g++
conda env update --prune -f base_environment.yml

Montare l'account di archiviazione nel computer

Successivamente, monteremo l'account Azure Data Lake Storage Gen2 nel computer locale. Questo processo può essere eseguito anche con un account WASB.Tuttavia, verrà illustrato un esempio per l'account ADLSg2

Per altre informazioni su come montare l'account di archiviazione nel computer locale, è possibile visitare questa pagina.

  1. È possibile installare blobfuse dal repository software Linux per i prodotti Microsoft.
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. Creare il punto di montaggio (mkdir /path/to/mount) e montare un contenitore BLOB con blobfuse. In questo esempio si userà il valore privatechannel per la variabile mycontainer.
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 

Creare il canale

Nel set di passaggi successivo verrà creato un canale Conda personalizzato.

  1. Nel computer locale creare una directory per organizzare tutti i pacchetti per il canale personalizzato. Organizzare tutti i pacchetti tar.bz2 da https://repo.anaconda.com/pkgs/main/linux-64/ nella sottodirectory. Assicurarsi anche di includere anche tutti i pacchetti tar.bz2 dipendenti.

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. È ora possibile controllare l'account di archiviazione in cui sarebbe stata creata la directory privatechannel/channel.

Nota

Conda non rispetta il token SAS associato a un contenitore. Pertanto, è necessario contrassegnare il contenitore "privatechannel" come accesso pubblico.

Per altre informazioni, è anche possibile visitare la Guida per l'utente di Conda per la creazione di canali personalizzati.

Autorizzazioni dell'account di archiviazione

Sarà ora necessario convalidare le autorizzazioni per l'account di archiviazione. Per impostare queste autorizzazioni, andare al percorso in cui verrà creato il canale personalizzato. Creare quindi un token SAS per privatechannel che disponga di autorizzazioni di lettura, elenco ed esecuzione.

Il nome del canale sarà ora l'URL SAS del BLOB generato da questo processo.

Creare un file di configurazione dell'ambiente Conda di esempio

Verificare infine il processo di installazione creando un file Conda environment.yml di esempio. Se si dispone di un'area di lavoro abilitata per la protezione dall'esfiltrazione dei dati, è necessario specificare il canale nodefaults nel file di ambiente.

Di seguito è riportato un esempio di file di configurazione Conda:

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

Dopo aver creato il file Conda di esempio, è possibile creare un ambiente Conda virtuale. È possibile verificarlo in locale eseguendo i comandi seguenti:

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

Dopo aver verificato il canale personalizzato, è possibile usare il processo di gestione del pool Python per aggiornare le librerie nel pool di Apache Spark.

Passaggi successivi