Перейти к содержимому

Пакетная обработка против потоковой: объяснение на примерах

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:...