Перейти к содержанию

Обзор развертывания 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 устанавливается путем загрузки конкретного бинарного дистрибутива и его распаковки на хост-сервере. Процесс включает:

  1. Обновление и обновление версий пакетов APT.

  2. Установка пакета default-jdk.

  3. Настройка переменных окружения в /etc/environment:

    • JAVA_HOME: Установлен соответствующий путь к OpenJDK.

    • SPARK_LOCAL_IP: Установлена в значение 127.0.0.1.

  4. Загрузка версии Apache Spark 3.5.3 (архив для Hadoop 3) из архива Apache.

  5. Распаковка архива в корневую директорию.

  6. Удаление исходного архивного файла.

  7. Перезагрузка системы для применения изменений переменных окружения.

Контейнеры 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:

docker compose up -d

Прокси-серверы

Приложение защищено прокси-контейнером 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. Используйте следующие команды для управления его жизненным циклом:

  • Запуск сервиса:

    cd /root/nginx && docker compose up -d
    

  • Остановка сервиса:

    cd /root/nginx && docker compose down
    

  • Перезапуск сервиса:

    cd /root/nginx && docker compose restart
    

  • Обновление образа контейнера:

    cd /root/nginx && docker compose pull && docker compose up -d
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×