spark-cluster-demo
Как запустить воркшоп
Warning: Необходимо загрузить > 4Гб Warning: RAM 16Гб
- git clone https://gitverse.ru/sc/dtirskikh/spark-cluster-demo.git
- cd spark-cluster-demo
- docker compose build
- docker compose up
Описание сервисов
Spark
Apache Spark – это система распределенной обработки данных с открытым исходным кодом, которая применяется для обработки больших данных. Быстрое выполнение аналитических запросов к данным любого объема обеспечивается благодаря кэшированию в памяти и оптимизированному исполнению запросов.
Первый запуск длится дольше других, так как требуют загрузки библиотек
Структура
spark-standalone/
├── start-spark.sh # Точка входа при запуске контейнера (master|worker|history-server)
├── apps/ # Монтируется. Python-скрипты для запуска через spark-submit в кластере
├── conf/ # Конфигурация по умолчанию
├── data/ # Данные, которые могут быть использованы при spark-submit.
├── logs/ # Логи при выполнении master или worker
├── logs_event/ # События выполнения приложений для history-server
submit-скритпы можно запускать из любой ноды кластера (master или worker). Предварительно необходимо зайти в один из контейнеров, выполнив команду из директории проекта
# Master
docker compose exec -it spark-master /bin/bash
# Worker
docker compose exec -it spark-worker-a /bin/bash
Примеры запуска
из кластера
/opt/spark/bin/spark-submit /opt/spark-apps/test_data.py
/opt/spark/bin/spark-submit /opt/spark-apps/test_minio.py
Историческая информация о работе приложений доступна по адресу: http://localhost:18080/
Во время работы spark-приложения: http://localhost:4040
Если есть одновременные запуски, то необходимо указывать следующий порт: 4041, 4042, ...
Мастер доступен по адресу: http://localhost:9090
Воркеры: http://localhost:9091 и http://localhost:9092
Jupyter
Jupyter-ноутбук — это среда разработки, где сразу можно видеть результат выполнения кода и его отдельных фрагментов. Отличие от традиционной среды разработки в том, что код можно разбить на куски и выполнять их в произвольном порядке.
Структура
jupyter/
├── workshop/ # Монтируется. Сохраняет настройки и ноутбуки
Web: http://127.0.0.1:8888/ Необходимо в логах контейнера найти ссылку с токеном. Иначе приложение не позволяет зайти
docker compose logs jupyter 2>&1 | grep "?token"
Ссылка будет примерно такой, только с другим токеном
http://127.0.0.1:8888/lab?token=e4b7a12929435fbe981ffaf422eadef31f0cbf567ba62cd1
Все логи по умолчанию пишутся в консоль. Чтобы увидеть их в ноутбуке, необходимо выполнить следующие действия:
В терминале выполнить команду
или в ячейке
В файле
раскомментировать строку
;
Перезапустить kernel в ноутбуке.
C помощью тестовой тетрадки
есть возможность протестировать обработку данные их Minio
Minio
MinIO — это высокопроизводительное объектное хранилище с открытым исходным кодом, предназначенное для локального использования или в качестве альтернативы облачному хранилищу, такому как Amazon S3.
Структура
minio/
├── data/ # Монтируется. Сохраняет настройки и бакеты
Login: yandex.practicumPassword: yandex.practicum