Apache Spark: руководство по началу работы¶
Apache Spark — это открытая распределённая вычислительная платформа для обработки больших данных, разработанная в 2009 году в Университете Калифорнии в Беркли и переданная впоследствии фонду Apache Software Foundation. Она предназначена для параллельной обработки данных в кластерах и поддерживает вычисления в памяти, что отличает её от классической модели MapReduce. Под «инструкцией по Spark» обычно понимают последовательность действий по установке, настройке и запуску первых задач, а также базовые принципы работы с API.
¶Общая архитектура
Spark строится на концепции распределённого набора данных и драйвер-программы, которая координирует работу исполнителей в кластере.
¶Основные компоненты
- Драйвер (Driver) — процесс, в котором выполняется функция
main, создающийSparkContextилиSparkSessionи распределяющий задачи. - Исполнители (Executors) — процессы на рабочих узлах, выполняющие задачи и хранящие данные.
- Cluster Manager — менеджер ресурсов: Standalone, YARN, Mesos или Kubernetes.
- RDD (Resilient Distributed Dataset) — базовая неизменяемая абстракция распределённого набора данных.
- DataFrame и Dataset — высокоуровневые API с оптимизатором Catalyst.
¶Режимы развёртывания
| Режим | Назначение |
|---|---|
| Local | Локальный запуск для отладки |
| Standalone | Собственный менеджер кластера |
| YARN | Интеграция с Hadoop |
| Kubernetes | Контейнерная оркестрация |
| Mesos | Устаревший менеджер ресурсов |
¶Установка и настройка
Для работы Spark требуется Java (версии 8 или 11 в зависимости от релиза) и, при необходимости, Python для PySpark.
¶Пошаговая инструкция
- Скачать дистрибутив с официального сайта Apache Spark, выбрав версию с нужной сборкой Hadoop.
- Распаковать архив и задать переменные окружения
SPARK_HOMEиPATH. - Проверить установку командой
spark-shellилиpyspark. - Для кластерного режима настроить файлы
spark-env.shиslaves(в новых версиях —workers). - Запустить мастер и рабочие узлы скриптами
start-master.shиstart-workers.sh.
¶Конфигурация
Основные параметры задаются в spark-defaults.conf:
spark.master— адрес менеджера кластера;spark.executor.memory— объём памяти на исполнителя;spark.executor.cores— число ядер на исполнителя;spark.sql.shuffle.partitions— число разделов при перемешивании данных.
¶Работа с данными
¶Создание сессии
В PySpark работа начинается с создания SparkSession:
``python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Example") \ .getOrCreate() ``
¶Чтение и обработка
Данные читаются из источников CSV, JSON, Parquet, JDBC, Kafka. Типовой конвейер включает чтение, трансформацию и запись результата. Ленивые вычисления означают, что трансформации выполняются только при вызове действий (show, count, collect, write).
¶Пример задачи
Подсчёт слов — классический пример: текст разбивается на строки, затем на слова, после чего выполняется группировка и агрегация. В DataFrame API это выражается через split, explode и groupBy.
¶Оптимизация
- Кэширование — метод
cache()илиpersist()сохраняет промежуточные данные в памяти. - Партиционирование — управление числом разделов влияет на параллелизм.
- Broadcast-соединения — для маленьких таблиц уменьшают объём передаваемых данных.
- Adaptive Query Execution — автоматическая оптимизация плана в Spark 3.x.
¶Экосистема
Spark тесно интегрирован с другими проектами: Spark SQL для структурированных запросов, Spark Streaming и Structured Streaming для потоковой обработки, MLlib для машинного обучения, GraphX для графовых вычислений. Платформа применяется в аналитике, ETL-конвейерах и системах рекомендаций.
¶Типичные ошибки при старте
- Недостаточный объём памяти исполнителей приводит к ошибкам
OutOfMemory. - Слишком большое число разделов замедляет задачи из-за накладных расходов.
- Использование
collect()на больших данных перегружает драйвер. - Игнорирование ленивых вычислений ведёт к неоптимальным планам.
¶Заключение по практике
Для быстрого старта достаточно локального режима и PySpark. По мере роста объёмов данных переходят к кластерному развёртыванию с менеджером ресурсов и настройкой параметров памяти и параллелизма.
IRONLIVE — база данных и аналитика по компаниям России.
На главную IRONLIVE →