Как работает Spark: объясняем на примере сортировки посылок

Как Spark делит обработку между исполнителями, зачем данным перемещаться и почему больше компьютеров не всегда означает быстрее.

Несколько сортировочных столов с частями общей работы и соединяющими дорожками.

Большую работу можно разделить

Представим условный склад. Нужно посчитать посылки по городам назначения. Один сотрудник может просмотреть весь поток, а несколько — разобрать отдельные партии. Каждый выполнит часть работы, после чего понадобится получить общий итог.

Эта аналогия помогает познакомиться с распределённой обработкой: данные и вычисления разделяют на части. Spark — система для такой обработки. Она может работать и локально, но здесь нас интересует совместная работа нескольких вычислительных ресурсов. Сортировщики в примере — объяснение идеи, а не точная схема программы.

Кто распределяет задания

В описании архитектуры Spark выделены управляющий процесс и исполнители. Управляющий процесс координирует приложение, а исполнители выполняют задачи и хранят необходимые данные. Кластером называют группу вычислительных узлов, работающих вместе.

На складе это можно представить как координатора и рабочие столы. Но компьютерный исполнитель не обязательно равен отдельному физическому компьютеру. Для первого знакомства достаточно разделять координацию и выполнение: кто-то организует работу, а её части выполняются на выделенных ресурсах.

Какие части можно обрабатывать независимо

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

В Spark данные могут быть разделены на части, называемые разделами. Возможность параллельной работы с ними описана в руководстве Spark. Однако смысл операции остаётся важен: одни действия обходятся локальной информацией, другим требуется сопоставить записи из разных частей.

Зачем перемещать данные

Вернёмся к условному складу. Для итогов по городам нужно соединить сведения из разных партий. Если на каждом столе встречаются посылки в Калугу, итог по этому городу не получится из результата только одного стола. Понадобится обмен промежуточными данными.

В Spark такое перераспределение называют shuffle. Документация описывает связанные с ним затраты на передачу и обработку данных. Аналогия со складом проста: перенос коробок между столами тоже занимает время. Поэтому параллельная работа не означает, что любая операция выполняется независимо от остальных.

Почему дополнительные исполнители не всегда помогают

Представим, что почти все посылки направляются в один город. При неудачном распределении один стол получит основную работу, а остальные закончат раньше. Общий результат всё равно придётся ждать. Это иллюстрация неравномерной нагрузки, а не измерение производительности Spark.

Есть и организационные затраты: раздать задания, передать данные, собрать нужные результаты. Если исходная работа небольшая, усложнение может не оправдаться. Поэтому решение о дополнительных ресурсах проверяют на реальной задаче, а не выводят только из числа доступных компьютеров.

Что важно понять до изучения инструментов

Попробуйте описать собственную задачу тремя вопросами. Что можно обработать отдельно? Где нужно сопоставить части? Как понять, что итог правильный? Например, после подсчёта по городам можно сверить общий объём с исходным набором, учитывая заранее оговорённые исключения.

PySpark позволяет работать со Spark через язык Python. Но знакомство с распределённой обработкой полезно ещё до деталей программирования: оно объясняет, почему устройство задачи влияет на скорость и сложность. Бытовая аналогия помогает начать, а точные решения требуют понимания конкретных данных и измерений.

Что почитать дальше

Следующий шаг

Если хотите развиваться в этом направлении, посмотрите программу «PySpark для инженеров и аналитиков данных». Сопоставьте темы с вашей подготовкой и задачами, которые хотите решать самостоятельно. Полезно заранее записать, что уже получается, где нужна практика и какие вопросы стоит обсудить перед началом обучения.

PySpark для инженеров и аналитиков данных
Курс
Доступ сразу
PySpark для инженеров и аналитиков данных

Разработчик PySpark — это инженер, который обрабатывает большие объемы данных с помощью распределённых вычислений и строит масштабируемые системы обработки данных.

С нуля до junior
Теория и практика
Диплом по окончании
12 990
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
46

Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.
Журнал изменений данных: как выяснить, кто и когда изменил набор
42

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.