Criar um canal do Conda personalizado para gerenciamento de pacotes

Ao instalar pacotes do Python, o gerenciador de pacotes do Conda usa canais para procurar pacotes. Talvez seja necessário criar um canal do Conda personalizado por vários motivos. Por exemplo, você pode constatar que:

  • o workspace está protegido contra exfiltração dos dados e as conexões de saída estão bloqueadas.
  • você tem pacotes que não deseja carregar em repositórios públicos.
  • você deseja configurar um repositório alternativo para os usuários no workspace.

Neste artigo, forneceremos um guia passo a passo para criar o canal do Conda personalizado na conta do Azure Data Lake Storage.

Configurar o computador local

  1. Instale o Conda no computador local. Você pode ver o runtime do Azure Synapse Spark para identificar a versão do Conda usada no mesmo runtime.

  2. Para criar um canal personalizado, instale o conda-build.

conda install conda-build
  1. Organize todos os pacotes para a plataforma que você deseja atender. Neste exemplo, instalaremos o arquivo Anaconda no computador local.
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. Para criar um ambiente semelhante àquele que é criado e disponibilizado no tempo de execução do Azure Synapse, você pode baixar este modelo. Pode haver pequenas diferenças entre o modelo e o ambiente real do Azure Synapse. Depois de baixar, você pode executar o comando a seguir:
apt-get -yq install gcc g++
conda env update --prune -f base_environment.yml

Montar a conta de armazenamento no computador

Em seguida, montaremos a conta do Azure Data Lake Storage Gen2 no computador local. Esse processo também pode ser feito com uma conta do WASB. No entanto, veremos um exemplo para a conta do ADLSg2

Para obter mais informações sobre como montar a conta de armazenamento no computador local, acesse esta página.

  1. Você pode instalar o blobfuse do repositório de software do Linux para produtos da 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. Crie o mountpoint (mkdir /path/to/mount) e monte um contêiner de blobs com o blobfuse. Neste exemplo, vamos usar o valor privatechannel para a variável 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 

Crie o canal

No próximo conjunto de etapas, criaremos um canal do Conda personalizado.

  1. No computador local, crie um diretório para organizar todos os pacotes do canal personalizado. Organize todos os pacotes tar.bz2 do https://repo.anaconda.com/pkgs/main/linux-64/ no subdiretório. Inclua também todos os pacotes tar bz2 dependentes.

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. Você pode agora verificar a conta de armazenamento onde o seu diretório privatechannel/channel foi criado.

Observação

O Conda desconsidera o token SAS associado a um contêiner. Portanto, você precisa marcar o contêiner "privatechannel" como de acesso público.

Para obter mais informações, você também pode acessar o guia do usuário do Conda para criar canais personalizados.

Permissões da conta de armazenamento

Agora, será necessário validar as permissões na conta de armazenamento. Para definir essas permissões, navegue até o caminho em que o canal personalizado será criado. Em seguida, crie um token SAS para privatechannel que tenha permissões de leitura, lista e execução.

Agora o nome do canal será a URL SAS do blob gerada nesse processo.

Crie um arquivo de configuração de exemplo para o ambiente do Conda

Por fim, verifique o processo de instalação criando um arquivo environment.yml do Conda de exemplo. Se você estiver em um workspace habilitado para proteção de exfiltração dos dados, você deve especificar o canal nodefaults no arquivo de ambiente.

Este é um arquivo de configuração de exemplo do Conda:

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

Depois de criar o arquivo de exemplo do Conda, você pode criar um ambiente virtual do Conda. É possível conferir isso localmente executando o seguinte comando:

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

Agora que você verificou o canal personalizado, pode usar o processo de Gerenciamento de pool do Python para atualizar as bibliotecas no pool do Apache Spark.

Próximas etapas