Обзор развертывания Apache Spark на сервере¶
Предварительные требования и базовые условия¶
Для успешного размещения приложения Apache Spark сервер должен соответствовать следующим требованиям:
-
Операционная система: Debian (Bookworm) или Ubuntu (Bullseye).
-
Привилегии: Требуется доступ root для установки пакетов, настройки переменных окружения и управления Docker.
-
Среда выполнения Java: На системе должен быть установлен OpenJDK (версия 11 для Ubuntu Bullseye, версия 17 для Debian Bookworm).
-
Сеть: Сервер должен иметь исходящий доступ в интернет для загрузки архива Apache Spark и SSL-сертификатов.
-
Порты: Для внутренней коммуникации должны быть доступны следующие порты:
-
4040: Spark UI (внутренний) -
8080: Spark Master -
8081: Spark Worker -
18080: Spark History Server -
443: HTTPS (внешний доступ через Nginx)
FQDN конечной точки¶
Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):
-
Формат:
spark<Server ID>.hostkey.in:443 -
Пример: Если Server ID равен
123, адрес будетspark123.hostkey.in.
Доступ предоставляется по протоколу HTTPS на порту 443.
Структура файлов и каталогов¶
Приложение и его вспомогательные компоненты организованы в следующих каталогах:
-
Установка Apache Spark:
/root/spark-3.5.3-bin-hadoop3(распакован из архива). -
Конфигурация Nginx:
-
Файл compose:
/root/nginx/compose.yml -
Конфигурация пользователя:
/data/nginx/user_conf.d/spark<Server ID>.hostkey.in.conf -
SSL-сертификаты:
/etc/letsencrypt/live/spark<Server ID>.hostkey.in/ -
Переменные окружения:
/etc/environment
Процесс установки приложения¶
Приложение Apache Spark устанавливается вручную на хост-системе с помощью следующих шагов:
-
Обновление системы: Пакеты APT обновляются и обновляются до актуальных версий.
-
Установка Java: Пакет
default-jdkустанавливается через APT. -
Настройка окружения:
-
JAVA_HOMEустанавливается в/usr/lib/jvm/java-11-openjdk-amd64на Ubuntu или/usr/lib/jvm/java-17-openjdk-amd64на Debian. -
SPARK_LOCAL_IPустанавливается в127.0.0.1. -
Эти переменные добавляются в файл
/etc/environment.
-
-
Загрузка Spark: Архив Apache Spark загружается из официального архива Apache:
-
URL:
https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3.tgz -
Пункт назначения:
/root/spark-3.5.3-bin-hadoop3.tgz
-
-
Распаковка: Архив распаковывается в корневой каталог.
-
Очистка: Исходный файл архива удаляется.
-
Перезагрузка: Система перезагружается для применения новых переменных окружения.
Установленная версия Apache Spark — 3.5.3.
Контейнеры Docker и их развертывание¶
Обратный прокси и завершение SSL-сессий обрабатываются контейнерами Docker, управляемыми через Docker Compose.
-
Установка Docker: Docker установлен на хост-системе.
-
Расположение файла Compose:
/root/nginx/compose.yml -
Имя сервиса:
nginx -
Образ:
jonasal/nginx-certbot:latest -
Режим сети:
host -
Томы (Volumes):
-
nginx_secrets(внешний), смонтированный в/etc/letsencrypt -
/data/nginx/user_conf.d, смонтированный в/etc/nginx/user_conf.d -
Окружение:
-
CERTBOT_EMAIL:hkadm@hostkey.com -
Файл окружения:
/data/nginx/nginx-certbot.env
Контейнер запускается с помощью команды:
выполненной из каталога/root/nginx. Прокси-серверы¶
Nginx выступает в роли обратного прокси, обрабатывая завершение SSL-сессий и маршрутизируя трафик к внутренним сервисам Spark.
-
Домен:
spark<Server ID>.hostkey.in -
Протокол: HTTPS (Порт 443)
-
Провайдер SSL: Let's Encrypt (управляется Certbot внутри контейнера Docker)
-
Пути к сертификатам:
-
Fullchain:
/etc/letsencrypt/live/spark<Server ID>.hostkey.in/fullchain.pem -
Приватный ключ:
/etc/letsencrypt/live/spark<Server ID>.hostkey.in/privkey.pem -
Chain:
/etc/letsencrypt/live/spark<Server ID>.hostkey.in/chain.pem
Конфигурация маршрутизации¶
Конфигурация Nginx маршрутизирует трафик на конкретные внутренние порты в зависимости от пути URL:
| Путь URL | Внутренний сервис | Внутренний порт |
|---|---|---|
/ | Spark UI | 4040 |
/master | Spark Master | 8080 |
/worker | Spark Worker | 8081 |
/history | Spark History Server | 18080 |
Конфигурация прокси включает заголовки X-Forwarded-Host, X-Forwarded-Server, X-Real-IP и X-Forwarded-For. Поддержка WebSocket включена для основного пути.
Доступные порты для подключения¶
Для приложения настроены следующие порты:
-
Внешний доступ:
-
443: HTTPS (Обратный прокси Nginx) -
Внутренний доступ (доступен только с хоста или через прокси):
-
4040: Spark UI -
8080: Spark Master -
8081: Spark Worker -
18080: Spark History Server
Запуск, остановка и обновление¶
Управление сервисом прокси на базе Docker осуществляется с помощью команд Docker Compose из каталога /root/nginx.
-
Запуск/Перезапуск:
-
Остановка:
-
Обновление: Для обновления образа контейнера Nginx необходимо загрузить последнюю версию и перезапустить его:
Само приложение Apache Spark работает как нативный процесс на хосте. Для перезапуска Spark пользователю необходимо перейти в каталог установки и выполнить соответствующие команды оболочки Spark или скрипты, либо перезагрузить хост-систему, если были изменены переменные окружения.