Обзор развертывания Apache Spark на сервере¶
Предварительные требования и базовые условия¶
Для успешного размещения приложения Apache Spark сервер должен соответствовать следующим требованиям:
-
Операционная система: Debian (Bookworm) или Ubuntu (Bullseye).
-
Привилегии: Для установки пакетов, настройки переменных окружения и управления контейнерами Docker требуются права root или sudo.
-
Окружение Java: Система требует OpenJDK. Версия автоматически определяется в зависимости от дистрибутива:
-
Ubuntu (Bullseye): Java 11 (
/usr/lib/jvm/java-11-openjdk-amd64) -
Debian (Bookworm): Java 17 (
/usr/lib/jvm/java-17-openjdk-amd64) -
Сеть: Сервер должен иметь исходящий доступ в интернет для загрузки бинарных файлов Apache Spark и образов Docker.
FQDN целевого интерфейса¶
Приложение доступно через домен hostkey.in со следующей структурой Fully Qualified Domain Name (FQDN) — полностью квалифицированного доменного имени:
spark<Server ID>.hostkey.in:443
Где <Server ID> — уникальный идентификатор, назначенный экземпляру сервера. Приложение прислушивается на порту 443 (HTTPS).
Структура файлов и директорий¶
Следующие директории и пути содержат бинарные файлы приложения, конфигурации и данные:
-
Бинарный файл приложения: Распакован в
/root/spark-3.5.3-bin-hadoop3(выводится из задачи загрузки). -
Директория конфигурации Nginx:
/root/nginx/ -
Файл Docker Compose:
/root/nginx/compose.yml -
Конфигурация пользователя Nginx:
/data/nginx/user_conf.d/spark<Server ID>.hostkey.in.conf -
SSL-сертификаты:
/etc/letsencrypt/live/spark<Server ID>.hostkey.in/ -
Файл переменных окружения Nginx:
/data/nginx/nginx-certbot.env
Процесс установки приложения¶
Apache Spark устанавливается путем загрузки конкретного бинарного дистрибутива и его распаковки на хост-сервере. Процесс включает:
-
Обновление и обновление версий пакетов APT.
-
Установка пакета
default-jdk. -
Настройка переменных окружения в
/etc/environment:-
JAVA_HOME: Установлен соответствующий путь к OpenJDK. -
SPARK_LOCAL_IP: Установлена в значение127.0.0.1.
-
-
Загрузка версии Apache Spark 3.5.3 (архив для Hadoop 3) из архива Apache.
-
Распаковка архива в корневую директорию.
-
Удаление исходного архивного файла.
-
Перезагрузка системы для применения изменений переменных окружения.
Контейнеры Docker и их развертывание¶
Приложение использует Docker для веб-сервера и управления SSL-сертификатами. Развертывание управляется через файл Docker Compose, расположенный по адресу /root/nginx/compose.yml.
Детали контейнера:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Томы (Volumes):
-
nginx_secretsмонтируется в/etc/letsencrypt(внешний том). -
/data/nginx/user_conf.dмонтируется в/etc/nginx/user_conf.d.
Команда развертывания: Для запуска стека контейнеров выполните следующую команду из директории /root/nginx:
Прокси-серверы¶
Приложение защищено прокси-контейнером Nginx, который обрабатывает завершение SSL (SSL termination) и маршрутизацию к внутренним службам Spark.
Конфигурация прокси:
-
ПО: Nginx (через контейнер Docker
jonasal/nginx-certbot). -
SSL: Включен с использованием сертификатов Let's Encrypt, управляемых Certbot.
-
Порт: Прислушивается на порту 443 (HTTPS).
-
Домен: Настроен на обработку запросов для
spark<Server ID>.hostkey.in. -
Маршрутизация:
-
Корневой путь
/перенаправляется на Spark UI внутреннего порта4040. -
/masterперенаправляется на внутренний порт8080. -
/workerперенаправляется на внутренний порт8081. -
/historyперенаправляется на внутренний порт18080. -
Поддержка WebSocket: Настроен с заголовками
Upgradeи передачейX-Scheme.
Настройки прав доступа¶
Права доступа к файлам для директорий конфигурации и данных установлены следующим образом:
-
Директория конфигурации Nginx (
/root/nginx): -
Владелец:
root -
Группа:
root -
Режим:
0644 -
Файл конфигурации пользователя (
/data/nginx/user_conf.d/*.conf): -
Владелец:
root -
Группа:
root -
Режим:
0644 -
Файл Docker Compose (
/root/nginx/compose.yml): -
Владелец:
root -
Группа:
root -
Режим:
0644
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и их местоположение:
-
Глобальные переменные окружения:
/etc/environment -
Определение Docker Compose:
/root/nginx/compose.yml -
Конфигурация блока сервера Nginx:
/data/nginx/user_conf.d/spark<Server ID>.hostkey.in.conf -
Переменные окружения Nginx:
/data/nginx/nginx-certbot.env
Доступные порты для подключения¶
Для системы настроены следующие порты:
| Порт | Протокол | Описание |
|---|---|---|
| 443 | TCP | HTTPS (Точка входа прокси Nginx) |
| 4040 | TCP | Внутренний Spark UI (маршрутизируется через /) |
| 8080 | TCP | Внутренний Spark Master UI (маршрутизируется через /master) |
| 8081 | TCP | Внутренний Spark Worker UI (маршрутизируется через /worker) |
| 18080 | TCP | Внутренний Spark History Server (маршрутизируется через /history) |
Примечание: Внутренние порты (4040, 8080, 8081, 18080) не экспонируются напрямую в интернет; доступ к ним осуществляется через прокси Nginx на порту 443.
Запуск, остановка и обновление¶
Основной сервис, управляющий прокси и SSL, представляет собой контейнер Docker. Используйте следующие команды для управления его жизненным циклом:
-
Запуск сервиса:
-
Остановка сервиса:
-
Перезапуск сервиса:
-
Обновление образа контейнера: