Как Spark продолжает обработку потока после перезапуска

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

Лента оранжевых и графитовых карточек проходит через прозрачную закладку рядом с сохранённой стопкой.

Сервер запустился, но откуда продолжать

Представим условный поток заказов магазина. Расчёт ведёт счётчик покупок по каждому пункту выдачи. Во время работы приложение останавливается. После запуска мало снова увидеть источник событий: нужно понять, что уже было принято обработкой и какие накопленные сведения понадобятся для следующей порции. Начало с произвольного места может дать пропуски или повторный учёт.

Structured Streaming — механизм потоковой обработки Apache Spark. Для восстановления ему нужен сохранённый контекст выполнения. Контрольная точка потока, или checkpoint, содержит сведения о продвижении обработки и её состоянии. Она не включает сервер автоматически: запуск приложения и наличие доступного сохранённого контекста — разные части восстановления.

Позиция чтения и накопленный результат

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

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

Условный сбой между подготовкой и завершением

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

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

Почему важно сохранить нужную контрольную точку

Документация Databricks перечисляет позиции источника, сведения о принятых порциях и сохранённое состояние. Для разных потоковых расчётов нужны разные места контрольных точек. Удаление такого содержимого или переход к новому месту означает начало с новым контекстом, а не обычное продолжение прежнего.

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

Изменённая обработка может оказаться несовместимой

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

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

Как подготовить проверяемый сценарий восстановления

Опишите ожидаемый результат до остановки и после неё на небольшом условном наборе. Не запускайте такой эксперимент в рабочей системе без согласованного плана. Устройство совместных вычислений объясняет статья о распределении работы Spark, а назначение файлового представления — материал о Parquet.

Изучать потоковую обработку и её ограничения можно на курсе PySpark для инженеров и аналитиков данных. Полезный первый результат — объяснить, какая сохранённая информация нужна для продолжения и почему перезапуск процесса сам по себе ещё не доказывает корректность отчёта.

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

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

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

Источники

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

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

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

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

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

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

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

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

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

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

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