Обзор развертывания Apache Spark на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания системы необходимо наличие сервера с операционной системой Debian (версия Bookworm) или Ubuntu (версия Bullseye). Требуется наличие прав суперпользователя (root) для выполнения всех операций установки и конфигурации.
Система требует установки следующих компонентов: - Пакетный менеджер apt для обновления и установки зависимостей. - Java Development Kit (JDK) версии 11 для Ubuntu или версии 17 для Debian. - Среда выполнения Apache Spark версии 3.5.3. - Docker Engine для запуска контейнеров прокси-сервера.
Структура файлов и каталогов¶
Конфигурация и данные приложения размещаются в следующих директориях:
/root/spark-3.5.3-bin-hadoop3/— каталог с распакованным архивом Apache Spark./root/nginx/— рабочая директория для конфигурации Docker Compose прокси-сервера./root/nginx/compose.yml— файл конфигурации оркестрации контейнеров./data/nginx/user_conf.d/— каталог с конфигурационными файлами Nginx для конкретных доменов./data/nginx/nginx-certbot.env— файл переменных окружения для сервиса Certbot./etc/letsencrypt/— точка монтирования для хранения SSL-сертификатов./etc/environment— файл глобальных переменных окружения системы.
Процесс установки приложения¶
Установка Apache Spark выполняется вручную через загрузку архива и его распаковку. Процесс включает следующие шаги:
- Обновление кэш-памяти пакетов и установка всех доступных обновлений системы.
- Установка пакета
default-jdkчерез менеджер пакетовapt. - Добавление переменной
JAVA_HOMEв файл/etc/environment: - Для Ubuntu: значение
/usr/lib/jvm/java-11-openjdk-amd64. - Для Debian Bookworm: значение
/usr/lib/jvm/java-17-openjdk-amd64. - Установка переменной
SPARK_LOCAL_IPсо значением127.0.0.1в файл/etc/environment. - Скачивание архива Apache Spark версии 3.5.3 по адресу
https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3.tgzв директорию/root/. - Распаковка архива в текущей директории.
- Удаление скачанного архива для освобождения места.
- Перезагрузка сервера для применения изменений в файле
/etc/environment.
Контейнеры Docker и их запуск¶
Для обеспечения работы прокси-сервера используется Docker. Устанавливается Docker Engine, после чего развертывается конфигурация через Docker Compose.
Контейнер nginx запускается с использованием образа jonasal/nginx-certbot:latest. Конфигурация контейнера включает: - Политику перезапуска unless-stopped. - Переменную окружения CERTBOT_EMAIL со значением hkadm@hostkey.com. - Файл переменных окружения /data/nginx/nginx-certbot.env. - Режим сети host. - Монтирование внешнего тома nginx_secrets в директорию /etc/letsencrypt. - Монтирование локальной директории /data/nginx/user_conf.d в /etc/nginx/user_conf.d внутри контейнера.
Запуск контейнеров выполняется командой:
Команда выполняется из директории/root/nginx. Прокси серверы¶
В качестве прокси-сервера используется Nginx в контейнере, который обрабатывает входящий трафик и перенаправляет его на внутренние сервисы Apache Spark.
Конфигурация сервера Nginx включает: - Прослушивание портов для HTTPS с поддержкой SSL. - Обработку доменных имен в формате {prefix}{server_id}.{zone}. - Использование SSL-сертификатов, расположенных в /etc/letsencrypt/live/{prefix}{server_id}.{zone}/. - Поддержку протокола WebSocket через заголовки Upgrade и Connection. - Передачу заголовков X-Forwarded-Host, X-Forwarded-Server, X-Real-IP, X-Forwarded-For и X-Scheme на бэкенд.
Прокси перенаправляет запросы на следующие локации: - {{ external_path }} — основной путь, перенаправляется на порт {{ internal_port }}. - {{ master_location }} — путь для мастер-ноды, перенаправляется на порт {{ master_port }}. - {{ worker_location }} — путь для воркер-ноды, перенаправляется на порт {{ worker_port }}. - {{ history_location }} — путь для истории, перенаправляется на порт {{ history_port }}.
Все перенаправления осуществляются на хост {{ prefix }}{{ server_id }}.{{ zone }} с соответствующими портами и путями.
Настройки прав¶
Права доступа к файлам и директориям устанавливаются следующим образом: - Директория /root/nginx создается с правами 0644, владельцем root и группой root. - Файл /root/nginx/compose.yml создается с правами 0644, владельцем root и группой root. - Конфигурационные файлы Nginx в директории /data/nginx/user_conf.d/ создаются с правами 0644, владельцем root и группой root.
Запуск, остановка и обновление¶
Управление контейнерами прокси-сервера осуществляется через Docker Compose из директории /root/nginx.
Для запуска контейнеров используется команда:
Для остановки контейнеров используется команда:
Для обновления конфигурации необходимо изменить файлы в директории /root/nginx или /data/nginx/user_conf.d/, после чего выполнить перезапуск контейнеров командой:
Обновление самого приложения Apache Spark требует повторного скачивания архива, распаковки и перезагрузки сервера для применения новых переменных окружения.