Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
HDInsight имеет две встроенные установки Python в кластере Spark, Anaconda Python 2.7 и Python 3.5. Клиентам может потребоваться настроить среду Python, например установку внешних пакетов Python. Здесь мы рекомендуем безопасно управлять средами Python для кластеров Apache Spark в HDInsight.
Предпосылки
Кластер Apache Spark в HDInsight. Для получения инструкций см. Создание кластеров Apache Spark в Azure HDInsight. Если у вас еще нет кластера Spark в HDInsight, можно выполнить действия скриптов во время создания кластера. Ознакомьтесь с документацией по использованию пользовательских действий скрипта.
Поддержка программного обеспечения с открытым кодом, используемого в кластерах HDInsight
Служба Microsoft Azure HDInsight использует среду технологий с открытым исходным кодом, сформированных вокруг Apache Hadoop. Microsoft Azure предоставляет общий уровень поддержки технологий с открытым кодом. Дополнительные сведения см. на веб-сайте часто задаваемых вопросов о поддержке Azure. Служба HDInsight обеспечивает дополнительный уровень поддержки встроенных компонентов.
Существует два типа компонентов с открытым исходным кодом, доступных в службе HDInsight:
| Компонент | Описание |
|---|---|
| Встроенный | Эти компоненты предварительно установлены в кластерах HDInsight и предоставляют основные функциональные возможности кластера. Например, Apache Hadoop YARN Resource Manager, язык запросов Apache Hive (HiveQL) и библиотека Mahout относятся к этой категории. Полный список компонентов кластера доступен в новых версиях кластера Apache Hadoop, предоставляемых HDInsight. |
| Обычай | Вы, как пользователь кластера, можете установить или использовать в рабочей нагрузке любой компонент, доступный в сообществе или созданном вами. |
Это важно
Компоненты, предоставляемые кластером HDInsight, полностью поддерживаются. Служба поддержки Майкрософт помогает изолировать и устранять проблемы, связанные с этими компонентами.
Настраиваемые компоненты получают коммерчески обоснованную поддержку для дальнейшей диагностики проблемы. Поддержка Майкрософт может быть в состоянии устранить проблему или попросить вас привлечь доступные каналы для технологий с открытым исходным кодом, где найдено глубокое знание этой технологии. Например, существует множество сайтов сообщества, которые можно использовать, например: страница вопросов Microsoft Q&A для HDInsight. https://stackoverflow.com Проекты Apache также имеют веб-сайты на https://apache.org.
Общие сведения об установке Python по умолчанию
На кластеры HDInsight Spark установлена Anaconda. В кластере есть две установки Python, Anaconda Python 2.7 и Python 3.5. В следующей таблице показаны параметры Python по умолчанию для Spark, Livy и Jupyter.
| Настройки | Python 2.7 | Python 3.5 |
|---|---|---|
| Путь | /usr/bin/anaconda/bin | /usr/bin/anaconda/envs/py35/bin |
| Версия Spark | По умолчанию установлено значение 2.7 | Может изменить конфигурацию на 3.5 |
| Версия Livy | По умолчанию установлено значение 2.7 | Может изменить конфигурацию на 3.5 |
| Jupyter | Ядро PySpark | Ядро PySpark3 |
Для версии Spark 3.1.2 ядро Apache PySpark удаляется, и под /usr/bin/miniforge/envs/py38/bin устанавливается новая среда Python 3.8, используемая ядром PySpark3. Переменные среды PYSPARK_PYTHON и PYSPARK3_PYTHON обновляются следующим образом:
export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
export PYSPARK3_PYTHON=${PYSPARK_PYTHON:-/usr/bin/miniforge/envs/py38/bin/python}
Безопасная установка внешних пакетов Python
Кластер HDInsight зависит от встроенной среды Python, как Python 2.7, так и Python 3.5. Прямая установка пользовательских пакетов в встроенных средах по умолчанию может привести к непредвиденным изменениям версии библиотеки. И дополнительно разорвать кластер. Чтобы безопасно установить пользовательские внешние пакеты Python для приложений Spark, выполните действия.
Создайте виртуальную среду Python с помощью conda. Виртуальная среда предоставляет изолированное пространство для проектов без нарушения других. При создании виртуальной среды Python можно указать версию Python, которую вы хотите использовать. Вам по-прежнему нужно создать виртуальную среду, даже если вы хотите использовать Python 2.7 и 3.5. Это требование заключается в том, чтобы убедиться, что среда кластера по умолчанию не сломалась. Выполните действия скрипта в кластере для всех узлов, используя следующий скрипт, чтобы создать виртуальную среду Python.
-
--prefixуказывает путь, в котором живет виртуальная среда conda. Существует несколько конфигураций, которые необходимо изменить дальше на основе пути, указанного здесь. В этом примере мы используем py35new, так как кластер уже имеет существующую виртуальную среду с именем py35. -
python=указывает версию Python для виртуальной среды. В этом примере мы используем версию 3.5, ту же версию, что и кластер, построенный на ней. Вы также можете использовать другие версии Python для создания виртуальной среды. -
anacondaуказывает package_spec как Anaconda для установки пакетов Anaconda в виртуальной среде.
sudo /usr/bin/anaconda/bin/conda create --prefix /usr/bin/anaconda/envs/py35new python=3.5 anaconda=4.3 --yes-
При необходимости установите внешние пакеты Python в созданной виртуальной среде. Выполните действия скрипта в кластере для всех узлов, используя следующий скрипт, чтобы установить внешние пакеты Python. Для записи файлов в папку виртуальной среды необходимо иметь права sudo.
Выполните поиск по индексу пакета для полного списка доступных пакетов. Вы также можете получить список доступных пакетов из других источников. Например, можно установить пакеты, доступные через conda-forge.
Используйте следующую команду, если вы хотите установить библиотеку со своей последней версией:
Используйте канал conda:
-
seaborn— это имя пакета, которое вы хотите установить. -
-n py35newукажите имя виртуальной среды, которое только что создается. Убедитесь, что изменили имя в соответствии с созданием вашей виртуальной среды.
sudo /usr/bin/anaconda/bin/conda install seaborn -n py35new --yes-
Или используйте репозиторий PyPi, измените
seabornиpy35newсоответствующим образом:sudo /usr/bin/anaconda/envs/py35new/bin/pip install seaborn
Используйте следующую команду, если вы хотите установить библиотеку с определенной версией:
Используйте канал conda:
-
numpy=1.16.1— это имя пакета и версия, которую вы хотите установить. -
-n py35newукажите имя виртуальной среды, которое только что создается. Обязательно измените имя в соответствии с настройками вашей виртуальной среды.
sudo /usr/bin/anaconda/bin/conda install numpy=1.16.1 -n py35new --yes-
Или используйте репозиторий PyPi, измените
numpy==1.16.1иpy35newсоответствующим образом:sudo /usr/bin/anaconda/envs/py35new/bin/pip install numpy==1.16.1
Если вы не знаете имя виртуальной среды, вы можете выполнить SSH в головной узел кластера и запустить
/usr/bin/anaconda/bin/conda info -e, чтобы отобразить все виртуальные среды.Измените конфигурации Spark и Livy и наведите указатель на созданную виртуальную среду.
Откройте пользовательский интерфейс Ambari, перейдите на страницу Spark 2 и вкладку "Конфигурации".
Расширьте advanced livy2-env, добавьте следующие команды в конце. Если вы установили виртуальную среду с другим префиксом, измените путь соответствующим образом.
export PYSPARK_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python export PYSPARK_DRIVER_PYTHON=/usr/bin/anaconda/envs/py35new/bin/python
Разверните Advanced spark2-env, замените существующую инструкцию экспорта PYSPARK_PYTHON в конце. Если вы установили виртуальную среду с другим префиксом, измените путь соответствующим образом.
export PYSPARK_PYTHON=${PYSPARK_PYTHON:-/usr/bin/anaconda/envs/py35new/bin/python}
Сохраните изменения и перезапустите затронутые службы. Эти изменения требуют перезапуска службы Spark 2. Пользовательский интерфейс Ambari предложит напоминание о обязательном перезапуске, нажмите кнопку "Перезапустить", чтобы перезапустить все затронутые службы.
Задайте для сеанса Spark два свойства, чтобы убедиться, что задание указывает на обновленную конфигурацию Spark:
spark.yarn.appMasterEnv.PYSPARK_PYTHONиspark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON.Используя терминал или записную книжку, используйте функцию
spark.conf.set.spark.conf.set("spark.yarn.appMasterEnv.PYSPARK_PYTHON", "/usr/bin/anaconda/envs/py35/bin/python") spark.conf.set("spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON", "/usr/bin/anaconda/envs/py35/bin/python")При использовании
livyдобавьте следующие свойства в текст запроса:"conf" : { "spark.yarn.appMasterEnv.PYSPARK_PYTHON":"/usr/bin/anaconda/envs/py35/bin/python", "spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON":"/usr/bin/anaconda/envs/py35/bin/python" }
Если вы хотите использовать созданную виртуальную среду в Jupyter. Измените конфигурации Jupyter и перезапустите Jupyter. Выполните действия скрипта на всех узлах заголовков с помощью следующей инструкции, чтобы указать Jupyter на новую виртуальную среду. Обязательно измените путь к префиксу, указанному для виртуальной среды. После выполнения этого действия скрипта перезапустите службу Jupyter через пользовательский интерфейс Ambari, чтобы сделать это изменение доступным.
sudo sed -i '/python3_executable_path/c\ \"python3_executable_path\" : \"/usr/bin/anaconda/envs/py35new/bin/python3\"' /home/spark/.sparkmagic/config.jsonВы можете дважды подтвердить среду Python в Jupyter Notebook, выполнив код: