Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Как правило, при добавлении библиотеки Python в виртуальную среду на портале Fabric, вычислительный движок Spark определяет и загружает пакет и его зависимости из PyPI. Однако, если администратор включает защиту исходящего доступа для рабочей области, вычислительные ресурсы Spark заблокированы для исходящих подключений к Интернету. Любая попытка установить пакет через портал завершается ошибкой, так как вычислительные ресурсы не могут достичь PyPI или conda.
Чтобы установить библиотеки Python при включении защиты исходящего доступа, необходимо получить пакеты в Fabric через путь, который не требует исходящего доступа к Интернету из вычислений Spark. В этой статье рассматриваются два подхода:
- Отправка пользовательских библиотек (рекомендуется) — скачайте нужные файлы колес на отдельном компьютере и отправьте их непосредственно в среду Fabric. Лучше всего, если требуется небольшое количество пакетов и требуется минимальная нагрузка на инфраструктуру.
-
Размещение зеркального отображения PyPI — настройка полной или частичной реплики PyPI в учетной записи хранения Azure за виртуальной сетью вашей организации. Оптимально для организаций, которые полагаются на множество пакетов PyPI и хотят
pip installэффективно работать, не управляя отдельными Wheel-файлами. Для этого подхода требуется больше настроек и текущего обслуживания.
Загрузка пользовательских файлов библиотеки (рекомендуется)
Если включена защита исходящего доступа, Fabric не может напрямую установить пакеты PyPI. Этот подход позволяет скачать необходимые пакеты вместе с их зависимостями на отдельном компьютере с доступом к Интернету, а затем передать эти файлы колес в среду Fabric в качестве пользовательских библиотек.
Вы создаете локальную среду Python, соответствующую среде выполнения Fabric, чтобы pip выбрал правильные версии зависимостей. Затем вы используете pip download для получения только дополнительных пакетов, необходимых рабочей нагрузке (а не пакеты, уже включенные в среду выполнения).
Необходимые условия
Прежде чем начать, убедитесь, что у вас есть следующее:
Компьютер Linux с доступом к Интернету — вам нужна среда Linux для создания локального окружения Python и скачивания файлов Wheel. Вычислительные ресурсы Fabric Spark выполняются в Linux (Azure Linux или Mariner), поэтому необходимо использовать Linux, чтобы убедиться, что conda разрешает правильные пакеты, зависящие от платформы, и
pip downloadизвлекает совместимые колеса. Вы можете использовать любой из следующих вариантов:- Подсистема Windows для Linux (WSL) на компьютере с Windows
- Компьютер Linux или ноутбук
- Виртуальная машина Linux Azure
Файл YML среды выполнения Fabric — скачайте файл YML Python для вашей версии среды выполнения из репозитория Fabric runtime на GitHub:
- Среда выполнения 1.2 (Spark 3.4):
Fabric-Python310-CPU.yml(Python 3.10) - Среда выполнения 1.3 (Spark 3.5):
Fabric-Python311-CPU.yml(Python 3.11) - Среда выполнения 2.0 (Spark 4.0):
Fabric-Python313-CPU.yml(Python 3.12)
- Среда выполнения 1.2 (Spark 3.4):
Шаг 1. Создание файла требований
Создайте файл с requirements.txt описанием дополнительных пакетов, необходимых рабочей нагрузке, которые еще не включены в среду выполнения Fabric. Рассмотрим пример.
catboost==1.2.8
shap==0.44.0
Вы можете проверить, какие пакеты уже включены в среду выполнения, просмотрев файлы YML в репозитории GitHub среды выполнения Fabric. Только перечислите пакеты, которые отсутствуют или требуют другой версии.
Шаг 2. Удаление частных библиотек из файла YML
Файл YML среды выполнения содержит частные библиотеки Microsoft, которые pip не может разрешить из общедоступных репозиториев. Удалите эти библиотеки из файла перед созданием среды. Определенные библиотеки зависят от версии среды выполнения:
| Библиотека | Среда выполнения 1.2 | Среда выполнения 1.3 | Среда выполнения 2.0 |
|---|---|---|---|
azure-synapse-ml-predict |
Да | -- | -- |
azureml-synapse |
Да | Да | Да |
chat-magics |
Да | Да | -- |
chat-magics-fabric |
Да | Да | -- |
control-script |
-- | Да | -- |
ds-copilot |
Да | Да | -- |
dscopilot-installer |
Да | Да | -- |
fabric-analytics-notebook-plugin |
-- | -- | Да |
fabric-analytics-sdk |
-- | -- | Да |
fabric-connection |
Да | Да | -- |
flaml |
Да | Да | Да |
flt-python |
-- | Да | Да |
fsspec_wrapper |
Да | Да | Да |
geoanalytics-fabric |
-- | Да | Да |
impulse-python-handler |
Да | Да | Да |
kqlmagiccustom |
-- | Да | Да |
library-metadata-cooker |
Да | Да | Да |
notebookutils |
Да | Да | Да |
prose-pandas2pyspark |
-- | Да | Да |
prose-suggestions |
-- | Да | Да |
semantic-link-sempy |
Да | Да | Да |
spark-mssql-connector-fabric35 |
-- | Да | -- |
spark-mssql-connector-fabric40 |
-- | -- | Да |
sqlanalyticsconnectorpy |
Да | -- | -- |
sqlanalyticsfabricconnectorpy |
Да | Да | Да |
synapseml |
-- | -- | Да |
synapseml-* |
Да | Да | Да |
Шаг 3. Создание локальной среды Python, которая соответствует среде выполнения Fabric
На компьютере Linux настройте среду conda, которая отражает среду выполнения Fabric. Это гарантирует pip правильное разрешение версий зависимостей для ваших пакетов.
Скачайте и установите Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3 export PATH="$HOME/miniconda3/bin:$PATH"Установите компиляторы C/C++, необходимые некоторым пакетам Python во время установки. В Ubuntu/Debian:
sudo apt-get update sudo apt-get -yq install gcc g++Для других дистрибутивов используйте эквивалентный диспетчер пакетов (например,
tdnfв Azure Linux).Используйте измененный файл YML из предыдущего шага , чтобы создать среду conda. В следующем примере используется файл установки runtime 1.3. Замените имя файла на имя файла YML для вашей версии среды выполнения.
conda env create -n fabric-env -f Fabric-Python311-CPU.yml conda activate fabric-env
Шаг 4. Скачивание файлов wheel для ваших пакетов
Используйте pip download для скачивания wheel-файлов для необходимых пакетов и всех их зависимостей в локальный каталог. Эта команда проверяет совместимость версий в рамках среды conda, созданной на предыдущем шаге.
mkdir wheels
pip download -r requirements.txt -d wheels
После завершения wheels команды каталог содержит .whl файлы для каждого пакета и его зависимостей.
Шаг 5. Отправка файлов колесика в среду Fabric
Отправьте скачанные файлы колес в среду Fabric в виде пользовательских библиотек:
- На портале Fabric перейдите в рабочую область и откройте среду.
- Выберите пользовательские библиотеки на левой панели.
- Выберите " Отправить " и выберите
.whlфайлы изwheelsкаталога. - Выберите "Опубликовать", чтобы применить изменения.
Размещение зеркального отображения PyPI в службе хранилища Azure
Этот подход настраивает полную или частичную реплику PyPI в учетной записи хранения Azure, доступной из рабочей области Fabric через частную конечную точку. После настройки вычислительная среда Fabric Spark может напрямую разрешать и устанавливать пакеты, так же как обычный pip install, без необходимости исходящего доступа к интернету.
Замечание
Зеркало PyPI лучше всего подходит для организаций, которые полагаются на многие пакеты PyPI и предпочитают pip install работать без управления отдельными wheel-файлами. Этот подход требует дополнительных усилий и постоянного обслуживания, чтобы обеспечить синхронизацию зеркала с PyPI.
Необходимые условия
Прежде чем начать, убедитесь, что у вас есть следующее:
- Компьютер Linux с доступом к Интернету — используется для запуска средства зеркального отображения и отправки пакетов. Вы можете использовать WSL, компьютер Linux или виртуальную машину Linux Azure.
- Учетная запись хранения Azure — размещает зеркальные пакеты. Должен быть доступен из рабочей области Fabric через частную конечную точку.
-
Bandersnatch — инструмент для зеркалирования PyPI, который загружает пакеты и генерирует файлы индекса, которые нужны
pip. - Служебная программа отправки файлов — Azure CLI, AzCopy или Blobfuse2 для отправки зеркального отображения в учетную запись хранения.
Это важно
Полный репозиторий PyPI большой и постоянно растет (см. статистику PyPI). Начальная синхронизация может занять от 8 до 48 часов в зависимости от скорости сети, оборудования и ввода-вывода диска. Последующие синхронизации загружают только новые или измененные пакеты и гораздо быстрее.
Bandersnatch поддерживает плагины фильтрации, которые позволяют синхронизировать только необходимые пакеты. Например, если зеркальное отображение предназначено только для Fabric, можно исключить двоичные файлы Windows, чтобы сократить время хранения и синхронизации. Оцените эти параметры на основе вашего варианта использования.
Шаг 1. Установка Python и Bandersnatch
На компьютере Linux установите Python (если оно еще недоступно) и Bandersnatch:
# Download and install Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
export PATH="$HOME/miniconda3/bin:$PATH"
# Install Bandersnatch
pip install bandersnatch
Шаг 2. Настройка и запуск зеркальной синхронизации
Создайте файл конфигурации Bandersnatch. См. пример конфигурации для справки .
Затем запустите команду mirror. Это выполняет однократную синхронизацию, которая загружает пакеты из PyPI в локальную файловую систему:
bandersnatch --config <path-to-bandersnatch.conf> mirror
После завершения синхронизации зеркальный каталог содержит файлы пакетов и структуру индекса, которые pip требуют:
/home/trusted-service-user/bandersnatch1/web/
├── simple/
├── pypi/
├── packages/
├── local-stats/
└── json/
Шаг 3. Проверка локального зеркала (необязательно)
Зеркальное отображение можно проверить, запуская локальный HTTP-сервер и устанавливая из него пакет:
cd <path-to-mirror-directory>
python -m http.server 8000
# In a separate terminal, test installing a package from the local mirror
pip install <package-name> --index-url http://localhost:8000/simple
Шаг 4. Отправка зеркального отображения в службу хранилища Azure
Включите размещение статических веб-сайтов в учетной записи хранения Azure. Это позволяет размещать страницы индекса PyPI, необходимые pip для разрешения пакетов. Включение этой функции автоматически создает $web контейнер.
С помощью Azure CLI, AzCopy или Blobfuse2 отправьте все пять папок (простые, pypi, пакеты, локальные статистики и json) в контейнер $web . Все папки должны находиться в одном контейнере, так как страницы индекса в simple/ используют относительные ссылки для обращения к файлам в packages/.
Шаг 5. Подключение Ткани к зеркалу
Чтобы компонент Spark в Fabric мог получить доступ к вашей учетной записи хранения, добавьте две управляемые частные конечные точки в параметры рабочей области Fabric — одну для конечной точки blob-объекта и одну для конечной точки веб-сайта (статического) вашей учетной записи хранения.
Затем установите пакеты из зеркала, используя URL статического веб-сайта вашей учетной записи. Чтобы найти этот URL-адрес, перейдите к учетной записи хранения на портале Azure и выберите статический веб-сайт в разделе "Управление данными". URL-адрес выглядит следующим образом https://<storage-account-name>.z<number>.web.core.windows.net: номер зоны зависит от региона.
Вы можете указать pip на это зеркало с помощью файла YAML среды или встроенной команды %pip, выполняемой в записной книжке.
YAML-файл в среде:
dependencies: - pip - pip: - --index-url https://<static-website-url>/simple - pytest==8.2.2Встроенная команда в ноутбуке:
%pip install pytest --index-url https://<static-website-url>/simple