Работа с кластером через консоль

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

Веб-интерфейсы кластера

Краткие рекомендации и пояснения

  • Виртуальная среда Python: для совместимости со скриптом spark-runner.sh, используйте только env.tar.gz, в качестве названия архива.
  • Совместимость: готовьте виртуальную среду на той же версии Python, что и на кластере — Python 3.11.
  • Пакеты: все необходимые для работы библиотеки должны быть установлены до упаковки среды.
  • JAR-файлы: для интеграции с внешними источниками данных обязательно указывайте соответствующие пакеты Maven через spark.jars.packages.
  • Мониторинг: для отладки используйте опцию --verbose и просматривайте логи Spark.

Ссылки на документацию Apache Spark