Работа с кластером через консоль
1. Подключение к серверу
ssh <пользователь>@192.168.121.170
2. Создание папки проекта
mkdir pi cd pi
Здесь pi — имя папки для проекта «Вычисление числа Пи».
3. Написание кода
Создайте файл pi.py.
В начале файла инициализируйте Spark-сессию. Для вычисления на GPU+CPU необходимо добавить пакет rapids-4-spark. А для работы с бд на PostgreSQL необходим пакет с соответствующим драйвером. В конце программы обязательно завершайте spark сессию. Актуальные версии этих пакетов можно найти в /opt/spark-plugins/.
from pyspark.sql import SparkSession jars = [ "com.nvidia:rapids-4-spark_2.13:25.08.0", "org.postgresql:postgresql:42.7.7" ] spark = (SparkSession.builder .appName("Pi") .config("spark.jars.packages", ",".join(jars)) .getOrCreate()) # ... рабочий код ... spark.stop()
4. Подготовка виртуальной среды Python
python3 -m venv venv source venv/bin/activate
Установите необходимые пакеты:
pip install venv-pack <и_другие_пакеты>
Упакуйте виртуальную среду:
venv-pack -o env.tar.gz -f
Примечание: используйте venv-pack для создания переносимого архива среды. Это обеспечивает совместимость среды на всех узлах кластера.
5. Запуск программы на кластере
Для работы с кластером есть скрипт обертка spark-runner.sh для стандартного инструмента spark-submit. Он автоматически добавляет необходимые параметры, такие как переносимая виртуальная среда через --archives, а также позволяет быстро переключаться между режимами выполнения с поддержкой GPU и запуском только на CPU с помощью специальных флагов.
Для вычислений на CPU+GPU (по умолчанию):
spark-runner.sh pi.py 100
Для вычислений только на CPU (--cpu, -c):
spark-runner.sh -c pi.py 100
Флаг --time, -t — замеряет время выполнения команды в терминале.
6. Завершение работы
По завершению работы с проектом деактивируйте виртуальную среду:
deactivate
Веб-интерфейсы кластера
- Spark Master UI: http://192.168.121.170:8080
- Spark History Server: http://192.168.121.170:18080
Краткие рекомендации и пояснения
- Виртуальная среда Python: для совместимости со скриптом spark-runner.sh, используйте только env.tar.gz, в качестве названия архива.
- Совместимость: готовьте виртуальную среду на той же версии Python, что и на кластере — Python 3.11.
- Пакеты: все необходимые для работы библиотеки должны быть установлены до упаковки среды.
- JAR-файлы: для интеграции с внешними источниками данных обязательно указывайте соответствующие пакеты Maven через spark.jars.packages.
- Мониторинг: для отладки используйте опцию --verbose и просматривайте логи Spark.
Ссылки на документацию Apache Spark
- PySpark: https://spark.apache.org/docs/latest/api/python/user_guide/index.html — руководство пользователя PySpark
- SparkR: https://spark.apache.org/docs/latest/api/R/articles/sparkr-vignettes.html — практическое руководство SparkR
- Spark SQL, DataFrames and Datasets: https://spark.apache.org/docs/latest/sql-programming-guide.html — руководство по обработке данных
- Structured Streaming: https://spark.apache.org/docs/latest/streaming/index.html — руководство по потоковой обработке данных
- MLlib (машинное обучение): https://spark.apache.org/docs/latest/ml-guide.html — руководство по библиотеке машинного обучения
- GraphX (графовые алгоритмы): https://spark.apache.org/docs/latest/graphx-programming-guide.html — руководство по работе с графами
- 90 просмотров