Гид по технологиям

Установка Apache Spark на Debian 10

5 min read Big Data Обновлено 21 Nov 2025
Установка Apache Spark на Debian 10
Установка Apache Spark на Debian 10

Введение

Логотип Apache Spark

Apache Spark — свободный фреймворк для кластерных вычислений, применяемый для аналитики, машинного обучения и обработки графов на больших объёмах данных. Spark предоставляет более 80 высокоуровневых операторов для параллельной обработки и интерактивной работы из оболочек Scala, Python, R и SQL. Это быстрый in-memory движок для задач data science с поддержкой потоковой обработки, отказоустойчивости и расширенной аналитики.

Пререквизиты

  • Сервер с Debian 10 и минимум 2 ГБ оперативной памяти.
  • Настроен root-пароль или доступ через sudo от пользователя с правами администратора.

Важно: для рабочих кластеров в продакшн рекомендуется минимум 8–16 ГБ RAM на узел — для тестовой установки 2 ГБ достаточно начать.

Обновление системы

Перед установкой обновите пакеты:

apt-get update -y  
apt-get upgrade -y

После обновления рекомендуется перезагрузить сервер, чтобы применить обновления ядра и сервисов.

Установка Java

Spark реализован на Java/Scala, поэтому потребуется JDK. В репозитории Debian 10 доступен default-jdk:

apt-get install default-jdk -y

Проверьте версию Java:

java --version

Ожидаемый пример вывода (пример из источника):

openjdk 11.0.5 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.5+10-post-Debian-1deb10u1, mixed mode, sharing)

Скачивание и установка Apache Spark

В каталоге /opt загрузите бинарный архив Spark. В исходном руководстве использовалась версия 3.0.0-preview2 с Hadoop 2.7:

cd /opt  
wget http://apachemirror.wuchna.com/spark/spark-3.0.0-preview2/spark-3.0.0-preview2-bin-hadoop2.7.tgz

Распакуйте архив и переименуйте папку:

tar -xvzf spark-3.0.0-preview2-bin-hadoop2.7.tgz
mv spark-3.0.0-preview2-bin-hadoop2.7 spark

Настройка переменных окружения

Добавьте переменные в ~/.bashrc (или /etc/profile.d/spark.sh для глобальной настройки):

nano ~/.bashrc

В конец файла добавьте:

export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

Активируйте изменения:

source ~/.bashrc

Примечание: если вы разворачиваете кластер, лучше настроить эти переменные централизованно для всех пользователей, или использовать менеджер конфигурации (Ansible, Puppet).

Запуск Master

Запустите мастер-контроллер:

start-master.sh

Ожидаемый вывод (пример):

starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-debian10.out

По умолчанию Web UI мастера слушает порт 8080. Проверьте прослушиваемые порты:

netstat -ant | grep 8080

Пример вывода:

tcp6       0      0 :::8080                 :::*                    LISTEN

Откройте в браузере http://server-ip-address:8080 и найдите URL мастера (например, spark://debian10:7077):

Веб-интерфейс Master Apache Spark, показывающий URL spark://debian10:7077

Запомните URL вида spark://:7077 — он потребуется при запуске worker.

Запуск Spark Worker

Запустите воркер и укажите URL мастера:

start-slave.sh spark://debian10:7077

Ожидаемый вывод:

starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-debian10.out

Доступ к Spark Shell

Интерактивная оболочка Spark Shell позволяет изучать API и выполнять быстрые проверки:

spark-shell

Пример вывода (сокращённо):

WARNING: An illegal reflective access operation has occurred
... (предупреждения JVM)
Spark context Web UI available at http://debian10:4040
Spark context available as 'sc' (master = local[*], app id = local-1577634806690).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
...   version 3.0.0-preview2
Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 11.0.5)
scala>

Откройте http://debian10:4040 для просмотра UI приложения (локальный порт мониторинга).

Остановка Master и Worker

Чтобы остановить сервисы, выполните:

stop-slave.sh  
stop-master.sh

Отладка и распространённые ошибки

  • Если master не запускается, проверьте логи в /opt/spark/logs и права на файлы.
  • Предупреждения об “illegal reflective access” связаны с библиотеками, использующими небезопасный доступ к JVM; в большинстве случаев это предупреждения, но их стоит отслеживать при обновлении JVM.
  • Если worker не присоединяется к master, убедитесь, что указали корректный URL spark://host:7077 и что межсетевой экран (firewall) не блокирует порт 7077.

Важно: в продакшне не рекомендуется запускать Spark от root-пользователя. Создайте отдельного системного пользователя для Spark и запустите процессы под ним.

Альтернативные подходы

  • Установка из пакетов/репозиториев: некоторые дистрибутивы или сторонние репозитории предлагают готовые пакеты spark, но они могут отставать по версии.
  • Docker-контейнеры: удобны для изоляции и воспроизводимости; официальные и community-образы часто содержат готовую конфигурацию.
  • Менеджеры ресурсов: для production часто используют YARN, Mesos или Kubernetes в качестве менеджера ресурсов вместо самостоятельного мастера Spark.

Мини-методология развертывания (шаги)

  1. Подготовка ОС: обновить пакеты, настроить SSH и время.
  2. Установка JDK и зависимостей.
  3. Загрузка и верификация бинарников Spark.
  4. Настройка переменных окружения и прав доступа.
  5. Запуск master и подключение worker(ов).
  6. Тестирование с помощью spark-shell и просмотра UI.
  7. Настройка логирования и мониторинга (Prometheus/Grafana при надобности).

Чек-листы по ролям

Администратор:

  • Обновить пакеты и настроить пользователя spark.
  • Открыть нужные порты: 8080 (master UI), 7077 (master RPC), 4040 (app UI, динамический).

Data Engineer:

  • Проверить доступность Spark Shell и выполнение простых job.
  • Настроить конфигурации spark-defaults.conf и spark-env.sh.

Разработчик:

  • Подключиться к spark-shell, протестировать код локально.
  • Убедиться в совместимости версий библиотек (Scala, Hadoop).

Оператор (SRE):

  • Настроить ротацию логов и мониторинг.
  • Планировать ресурсные лимиты и SLI/SLO для задач.

Часто используемые команды (cheat sheet)

  • Обновление ОС: apt-get update && apt-get upgrade
  • Установка JDK: apt-get install default-jdk -y
  • Запуск master: start-master.sh
  • Запуск worker: start-slave.sh spark://:7077
  • Остановка: stop-slave.sh && stop-master.sh
  • Spark Shell: spark-shell

Совместимость и миграция

Файл, который вы скачиваете, содержит в имени информацию о целевой версии Hadoop (например, hadoop2.7). Подбирайте сборку Spark, совместимую с вашей версией Hadoop/экосистемы. Версия из исходного руководства — preview (предрелизная), поэтому для продакшна лучше использовать стабильный релиз Spark.

Безопасность и сетевые рекомендации

  • Запускайте Spark-процессы под непривилегированным пользователем.
  • Ограничьте доступ к UI и RPC портам через брандмауэр или VPN.
  • Используйте TLS и аутентификацию для межузлового взаимодействия в продуктивных кластерах.

Короткий глоссарий

  • Master — координатор кластера Spark.
  • Worker (slave) — узел, который выполняет задачи (executor).
  • spark-shell — интерактивная оболочка на базе Scala.
  • SPARK_HOME — корневая папка установки Spark.

Критерии приёмки

  • Master и хотя бы один worker успешно зарегистрированы и видны в Web UI.
  • spark-shell запускается и выполняет простую задачу (напр., подсчёт слов).
  • Логи не содержат критических ошибок и процессы запущены под непривилегированным пользователем.

Итог

Вы установили Apache Spark на Debian 10: обновили систему, поставили Java, загрузили и настроили Spark, запустили мастер и воркера, а также получили доступ к spark-shell и Web UI. Для продакшн-развёртывания дополнительно настройте безопасность, мониторинг и автоматизированное развертывание.

Короткие рекомендации для продолжения: протестируйте работу с небольшими джобами в spark-shell, настройте конфигурации в $SPARK_HOME/conf и рассмотрите использование Docker или систем управления кластерами для упрощения эксплуатации.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Стрелки не работают в Excel — быстрое решение
Excel

Стрелки не работают в Excel — быстрое решение

Шифрование USB‑накопителя с VeraCrypt
Безопасность

Шифрование USB‑накопителя с VeraCrypt

PowerShell: история команд — просмотр и сохранение
PowerShell

PowerShell: история команд — просмотр и сохранение

Nandroid — полная резервная копия Android
Android.

Nandroid — полная резервная копия Android

Ошибка 0x800f0806 в Windows 11 22H2
Windows 11

Ошибка 0x800f0806 в Windows 11 22H2

Извлечь ссылки с веб‑страницы PowerShell
Automation

Извлечь ссылки с веб‑страницы PowerShell