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

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

  1. Обновление кэш-памяти пакетов и установка всех доступных обновлений системы.
  2. Установка пакета default-jdk через менеджер пакетов apt.
  3. Добавление переменной JAVA_HOME в файл /etc/environment:
  4. Для Ubuntu: значение /usr/lib/jvm/java-11-openjdk-amd64.
  5. Для Debian Bookworm: значение /usr/lib/jvm/java-17-openjdk-amd64.
  6. Установка переменной SPARK_LOCAL_IP со значением 127.0.0.1 в файл /etc/environment.
  7. Скачивание архива Apache Spark версии 3.5.3 по адресу https://archive.apache.org/dist/spark/spark-3.5.3/spark-3.5.3-bin-hadoop3.tgz в директорию /root/.
  8. Распаковка архива в текущей директории.
  9. Удаление скачанного архива для освобождения места.
  10. Перезагрузка сервера для применения изменений в файле /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 внутри контейнера.

Запуск контейнеров выполняется командой:

docker compose up -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.

Для запуска контейнеров используется команда:

docker compose up -d

Для остановки контейнеров используется команда:

docker compose down

Для обновления конфигурации необходимо изменить файлы в директории /root/nginx или /data/nginx/user_conf.d/, после чего выполнить перезапуск контейнеров командой:

docker compose up -d

Обновление самого приложения Apache Spark требует повторного скачивания архива, распаковки и перезагрузки сервера для применения новых переменных окружения.

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