Пакетная обработка против потоковой: объяснение на примерах
System Design Lab
0:00 / 0:00
Пакетная обработка против потоковой: объяснение на примерах
9 682 просмотра · 5 дней назад
System Design Lab
11,3 тыс. подписчиков
9 682 просмотра · 5 дней назад
Полный курс по пакетной и потоковой обработке данных: ограниченные и неограниченные объемы данных, Spark, Kafka, Flink, водяные знаки, алгоритм «точно один раз» и архитектура Lambda против Kappa.
В чем разница между пакетной и потоковой обработкой, и когда следует использовать каждый из них? Большинство объяснений ограничиваются скоростью. Этот курс начинается с более важного вопроса: заканчиваются ли ваши данные вообще, потому что именно эта идея объясняет, почему пакетная обработка может гарантировать полный ответ, в то время как потоковая обработка может гарантировать только новый. Один музыкальный приложение и одна песня охватывают весь курс.
Как работает пакетная обработка? Вы изучите одну ночную задачу Spark, файлы Parquet и обрезку разделов, этапы MapReduce (разделение, перемешивание, редукция), этапы Spark и отказоустойчивость. Затем перейдут к шаблонам, обеспечивающим корректную работу пакетных конвейеров: инкрементальная загрузка, окна ретроспективного анализа, атомарные перезаписи с помощью Delta Lake и Iceberg, обратная загрузка, широковещательные соединения, искажение данных и добавление соли, ETL против ELT и архитектура Medallion.
Как работает потоковая обработка? Разделы и смещения Kafka, граф заданий Flink, время события против времени обработки, скользящие окна, водяные знаки и задержка данных, состояние и контрольные точки. Далее рассматриваются шаблоны потоковой обработки: дедупликация, топ-K, обнаружение ботов с помощью CEP, очереди недоставленных сообщений и объединения потоков с захватом изменений данных (CDC), поиск, временные и интервальные объединения.
Что ломается в продакшене? Семантика «точно один раз» от источника к приемнику, обратное давление и задержка потребителя, а также исправление недельных неудачных результатов путем воспроизведения лога. Курс завершается сравнением архитектуры Lambda и Kappa, микропакетной обработки и потоковой обработки в реальном времени, а также четырьмя вопросами, которые направляют любую функцию в пакетную, потоковую или обе.
Курс разработан для начинающих, с учетом требований собеседований по проектированию данных и системному проектированию.
━━━━━━━━━━━━━━━━━━━━━━━
УГЛУБИТЕСЬ
━━━━━━━━━━━━━━━━━━━━━━━━
▶ Полный курс по архитектуре, управляемой событиями: • Event-Driven Architecture Full Course: Beg...
▶ Очереди сообщений для проектирования систем: • Message Queues For System Design: Queue vs...
▶ Внутреннее устройство баз данных для проектирования систем: • Database Internals For System Design
━━━━━━━━━━━━━━━━━━━━━━━━
СВЯЖИТЕСЬ СО МНОЙ
━━━━━━━━━━━━━━━━━━━━━━━━
🔗 LinkedIn: / joud-awad
🐦 X/Twitter: https://x.com/TheJoud97
📝 Medium: / joudwawad
📧 Substack: https://joudawad.substack.com/
🌐 Веб-сайт: https://joudawad.com/
━━━━━━━━━━━━━━━━━━━━━━━━
Главы:
━━━━━━━━━━━━━━━━━━━━━━━━
00:00 Пакетная обработка против потоковой обработки: в чем разница?
02:40 Пакетная обработка против потоковой обработки: краткий обзор
03:59 Ограниченные данные: почему пакетная обработка может завершиться
05:07 Неограниченные данные: почему потоковая обработка никогда не завершается
06:00 Свежие, полные, дешевые данные: треугольник компромиссов
07:28 Когда использовать потоковую обработку: снижение ценности
09:47 Как работает ночная пакетная обработка (Spark, Airflow)
10:56 Parquet и обрезка разделов
12:23 MapReduce: split и map
13:50 Объяснение перемешивания (shuffle)
15:19 Этапы Reduce и Spark
16:53 Отказоустойчивость пакетной обработки: повторный запуск потерянного фрагмента
18:20 Запоздалые данные в пакетной обработке
19:37 Инкрементальная загрузка и окна просмотра
21:07 Атомарная перезапись с Delta Lake и Iceberg
22:37 Заполнение пробелов (backfills)
24:01 Широковещательное соединение в Spark
25:26 Неравномерность данных и добавление соли
27:08 ETL против ELT и архитектура Medallion
29:45 Kafka как входной поток: разделы и смещения
31:08 Граф заданий Flink и keyBy
32:27 Время события против времени обработки
33:57 Окна потока: скользящие и сессионные окна
35:11 Объяснение водяных знаков
36:39 Компромисс между водяными знаками: задержка против полноты
38:04 Запоздалые данные и допустимая задержка
39:31 Обработка потока с сохранением состояния
40:57 Контрольные точки: как Flink переживает сбой
43:37 Шаблоны обработки потока: фильтр
44:47 Оконная агрегация
46:01 Дедупликация с использованием идентификаторов событий
47:29 Top-K: вычисление трендов в масштабе
48:46 Обнаружение ботов с помощью сопоставления шаблонов CEP
51:30 Очереди недоставленных записей
52:59 Почему объединение потоков сложно
54:13 Захват изменений данных (CDC) с Debezium
55:42 Соединение с поиском: обогащение потока
57:17 Временное соединение: временная ловушка
58:44 Интервальное соединение между двумя потоками
1:01:09 Двойная выплата: дубликаты после сбоя
1:02:23 Не более одного раза против не менее одного раза против ровно одного раза
1:03:42 Ровно один раз означает эффекты, а не обработку
1:04:54 Воспроизводимый источник и согласованные снимки
1:06:23 Транзакционный приемник: двухфазная фиксация
1:07:...