Apache Spark¶
В этой статье
Информация
Apache Spark — это мощный и быстрый движок для обработки больших данных, который может быть использован для выполнения различных задач, таких как обработка потоков данных в реальном времени, обучение машинного обучения и анализ баз данных. Spark предоставляет гибкий набор API на разных языках программирования, включая Scala, Java, Python и R.
Основные возможности Apache Spark¶
- Высокая производительность: Spark использует распределенную обработку данных и оптимизированные алгоритмы, что позволяет обрабатывать большие объемы данных быстрее, чем традиционные решения.
- Распределённость: Spark может работать на кластерах из множества узлов, что позволяет масштабировать обработку данных по мере необходимости.
- Разнообразие API: Spark предоставляет API на разных языках программирования, что делает его подходящим для различных сценариев и команд разработчиков.
- Поддержка различных типов данных: Spark может обрабатывать разные типы данных, включая структурированные данные (таблицы), неструктурированные данные (текст, изображения) и полуструктурированные данные (JSON).
- Графический API Spark GraphX: Позволяет выполнять операции над графами больших размеров.
Особенности сборки¶
- Поддерживаемая операционная система: Ubuntu 22.04, Debian 11, Debian 12;
- Доступ к панели управления:
https://spark{Server_ID_from_Invapi}.hostkey.in
- Время установки панели вместе с ОС занимает порядка 15 минут.
Начало работы после развертывания Apache Spark¶
После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и API — Invapi.
Данные для авторизации, которые можно найти или во вкладке Info >> Tags панели управления сервером или в присланном e-mail:
- Ссылка для доступа к панели управления Apache Airflow с веб-интерфейсом: в теге webpanel;
- Логин и Пароль: приходит в письме на вашу электронную почту при готовности сервера к работе после развертывания ПО.
Настройка Apache Spark¶
Spark может быть запущен на локальном компьютере или в распределенном окружении. Перед переходом по ссылке из тега webpanel необходимо:
Подключиться к серверу по SSH:
Затем запустить нужное приложение с помощью команды из таблицы, приведенной в разделе Запуск компонентов.
В противном случае при переходе по ссылке будет выведена ошибка 502 (Bad Gateway).
Запуск компонентов¶
Вы можете запустить различные компоненты Spark с web-интерфейсом, такие как Application, Standalone Master, Standalone Worker и History Server, с помощью команд из таблицы ниже.
Название | Локальный адрес и порт | Внешний адрес | Команда для запуска |
---|---|---|---|
Application | localhost:4040 | https://spark{Server_ID_from_Invapi}.hostkey.in | /root/spark-3.5.3-bin-hadoop3/bin/./spark-shell |
Standalone Master | localhost:8080 | https://spark{Server_ID_from_Invapi}.hostkey.in/master | /root/spark-3.5.3-bin-hadoop3/sbin/./start-master.sh |
Standalone Worker | localhost:8081 | https://spark{Server_ID_from_Invapi}.hostkey.in/worker | /root/spark-3.5.3-bin-hadoop3/sbin/./start-master.sh spark://hostname:port |
History Server | localhost:18080 | https://spark{Server_ID_from_Invapi}.hostkey.in/history | mkdir /tmp/spark-events /root/spark-3.5.3-bin-hadoop3/sbin/./start-history-server.sh |
Обратите внимание, что команды для запуска компонентов Spark могут меняться в зависимости от используемой версии. В приведенных примерах используется Spark версии 3.5.3. При обновлении Spark необходимо будет соответственно изменить путь в командах. Рекомендуется всегда проверять актуальную документацию Spark для получения наиболее точной информации о командах запуска компонентов. Для проверки версии необходимо подключиться к серверу по SSH и ввести команду:
В результате ее выполнения на экран терминала будет выведено содержимое директорииroot
, включающей директорию spark
с указанием установленной версии: После запуска компонентов Spark можно получить доступ к их веб-интерфейсам через указанные внешние адреса. Рассмотрим пример интерфейса Spark Application:
Данный пример демонстрирует интерфейс Spark Application, доступный по адресу https://spark{Server_ID_from_Invapi}.hostkey.in
. В этом интерфейсе отображается информация о выполняемых задачах, стадиях обработки, использовании памяти и другие ключевые метрики. Следует обратить внимание, что ссылки на другие компоненты Spark (например, на Standalone Master или Worker) в данном интерфейсе не будут функционировать при подключении с другой машины. Это обусловлено настройками безопасности: компоненты настроены для работы локально, а наружу проброшен только веб-интерфейс, доступный по доменному имени.
Для изменения этой конфигурации и обеспечения внешнего доступа ко всем компонентам необходимо выполнить следующие шаги:
- Остановить и удалить текущий Docker-контейнер, выполнив команду
docker compose up down
в папке/root/nginx
. - Удалить строку
SPARK_LOCAL_IP="127.0.0.1"
из файла/etc/environment
.
После внесения этих изменений веб-интерфейс Spark станет доступен по белому IP-адресу без SSL-сертификата. Такая модификация может также решить проблемы связи между компонентами, если они возникнут в процессе работы.
Примечание
Важно отметить, что подобная конфигурация снижает уровень безопасности Spark-кластера. Рекомендуется применять ее только при необходимости и в защищенной сетевой среде. В случае использования такой конфигурации рекомендуется настроить SSL-подключение внутри самого Spark или применить другие меры безопасности для защиты кластера.
Кастомизация путей¶
- Остановить Docker-контейнер, выполнив команду
docker compose up down
в папке/root/nginx
. - Внести необходимые правки в файл конфигурации Nginx:
/data/nginx/user_conf.d/spark{Server_ID_from_Invapi}.hostkey.in.conf
. - Перезапустить Docker-контейнер из папки
/root/nginx
с помощью команды:docker compose up -d
.
Примечание
Подробная информация по основным настройкам Apache Spark содержится в документации разработчиков.
Заказ сервера с Apache Spark с помощью API¶
Для установки данного ПО с использованием API следуйте этой инструкции.