Открыть сервис

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.

Пошаговая инструкция

  1. Скачать дистрибутив с официального сайта Apache Spark, выбрав версию с нужной сборкой Hadoop.
  2. Распаковать архив и задать переменные окружения SPARK_HOME и PATH.
  3. Проверить установку командой spark-shell или pyspark.
  4. Для кластерного режима настроить файлы spark-env.sh и slaves (в новых версиях — workers).
  5. Запустить мастер и рабочие узлы скриптами 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 →