Learning Platform
Глоссарий Troubleshooting
Урок 01.01 · 15 мин
Средний
FlinkStream ProcessingCourse IntroLearning Path

Что это за курс

Apache Flink — это движок stateful stream processing, который работает в production у Alibaba (десятки петабайт в день), Netflix (real-time recommendations), Uber (ETA prediction), Pinterest (real-time analytics) и сотен других компаний. Если Kafka — это нервная система данных, то Flink — это мозг, который превращает поток событий в решения: счётчики, агрегаты, JOIN-ы, материализованные представления, ML-features.

Этот курс учит писать production Flink-jobs: stateful, exactly-once, разворачиваемые на Kubernetes, выживающие падения. Он не про теорию stream processing и не про внутреннее устройство Flink — для этого есть отдельный курс flink-internals (senior-уровень). Здесь — про то, как использовать Flink как инструмент инженера, который завтра пишет JOIN двух Kafka-топиков с windowing и через неделю катит его в прод.


Для кого этот курс

Курс рассчитан на data engineers и backend-инженеров, у которых уже есть опыт работы с Kafka (producer/consumer, понимание partitions и consumer groups), и которые хотят добавить в свой стек stateful streaming. Если вы умеете писать продьюсера в Kafka на Java или Python, читали из топика, понимаете offset commit и rebalance — у вас уже есть фундамент, на который ляжет Flink.

Что нужно знать заранее:

  • Kafka на уровне пользователя — что такое топик, партиция, consumer group, offset, replication. Курс kafka-course покрывает этот фундамент.
Брокеры, топики, партиции Kafka Consumer API и управление offsets
  • Java или Python на уверенном уровне — DataStream API в курсе разбирается на Java (это родной язык Flink); PyFlink упоминается, но глубокое погружение в Python API оставлено на senior-продолжение.
  • Базовое понимание SQL — модуль 12 покрывает Table API и Flink SQL.
  • Знакомство с Docker и Kubernetes на уровне пользователя — модули 03 и 15 предполагают, что вы умеете запускать контейнеры и читать манифесты.

Чего знать НЕ обязательно:

  • Опыт работы со Spark Streaming, Kafka Streams или другими stream-фреймворками — все сравнения будут даны явно, без предполагаемого бэкграунда.
  • Понимание внутренностей Flink (state backends, network stack, scheduling) — это намеренно вне scope, чтобы не утопить вас в деталях, которые не нужны для написания jobs.
  • Опыт ML и feature engineering — модули посвящены классическому stream processing: ETL, агрегации, JOIN, CDC, materialized views.
NOTE

Если вы пришли с опытом Kafka Streams или Spark Structured Streaming — модуль 01 (урок про сравнение фреймворков) объясняет, в чём Flink отличается и когда какой инструмент выбирать. Никаких внезапных предположений о вашем бэкграунде.


Что получишь к концу курса

К моменту завершения курса вы будете уметь:

  1. Писать stateful streaming-jobs на DataStream API. Map/filter/keyBy/window — рабочий инструмент, а не магия. Понимание parallelism, partitioning, watermarks.
  2. Разбираться в state: keyed state (ValueState, ListState, MapState, ReducingState, AggregatingState), operator state, broadcast state. Когда какой использовать.
  3. Работать с временем: event time vs processing time, watermarks, late events, idle sources. Tumbling/sliding/session windows. Allowed lateness.
  4. Обеспечивать exactly-once: checkpoints, savepoints, two-phase commit в sinks. Kafka transactional producer + Flink. End-to-end exactly-once с Kafka и JDBC.
  5. Использовать Table API и SQL для аналитических задач. Когда SQL быстрее DataStream, когда нет. Continuous queries, dynamic tables, retract streams.
  6. Строить CDC-пайплайны через Flink CDC: Postgres logical replication, MySQL binlog, MongoDB change streams. Производить материализованные представления.
  7. Деплоить на Kubernetes через Flink Kubernetes Operator: FlinkDeployment CRD, HA через Kubernetes API server, savepoint-driven upgrades.
  8. Решать production-проблемы: backpressure, hot keys, slow checkpoints, OOM в state backend, JOIN cardinality explosion. Что смотреть в Web UI и метриках.

К концу курса у вас будет capstone-проект: production-ready streaming-приложение, которое читает CDC из Postgres, обогащает через JOIN с Kafka-топиком, агрегирует через windowing, и пишет результат в Kafka + Iceberg-таблицу с exactly-once гарантиями.


Чего в этом курсе НЕТ

Чтобы избежать ложных ожиданий, явно перечислю, что вне scope этого курса:

Internals Flink — как работает state backend на уровне RocksDB, как устроен network stack (credit-based flow control, buffer pools), как scheduler принимает решения о размещении задач, как работает Chandy-Lamport algorithm под капотом. Это огромная тема, и она вынесена в отдельный курс flink-internals.

Низкоуровневая оптимизация JVM — настройка G1GC vs ZGC, off-heap memory tuning, NUMA-awareness. Production-курс даёт sensible defaults и объясняет, что мониторить, но deep performance tuning — это сезон работы senior-инженеров.

Машинное обучение на Flink — Flink ML, online learning, model serving через AsyncFunction. Это специфическая ниша, заслуживающая отдельного материала.

Полноценный PyFlink — Python API упоминается, но все основные примеры на Java. PyFlink имеет ряд compromises (UDF performance, type system), и его внутренние детали (Beam Portability) — это отдельная тема.

Stream processing на других движках — нет глубокого погружения в Spark Structured Streaming, Kafka Streams, Beam runners, Materialize, RisingWave, Arroyo. Эти продукты упоминаются для сравнения, но не разбираются в деталях.


Структура курса

Курс — 17 модулей, разделённых на четыре логических блока:

Блок 1: Фундамент (модули 00-03). Что такое stream processing, как устроен Flink на уровне обзора, базовый DataStream API. К концу этого блока вы умеете запускать простой stateless job в локальном кластере и понимаете job graph в Web UI.

Блок 2: Stateful streaming (модули 04-08). Keyed state, windows, event time, watermarks, ProcessFunction с timers, broadcast pattern. Это core competence Flink. К концу блока вы умеете писать stateful jobs с windowing и event time.

Блок 3: Reliability и SQL (модули 09-12). Async I/O, checkpoints, savepoints, end-to-end exactly-once, Table API и SQL. К концу — production-ready streaming с гарантиями доставки и аналитическим SQL.

Блок 4: Production deployment (модули 13-16). Production connectors, Flink CDC, Kubernetes deployment, capstone-проект с reliability essentials. К концу — вы способны провести Flink-приложение от написания до прода.


Что после этого курса

Если после завершения вам захочется глубже понять Flink — есть несколько направлений:

flink-internals — senior-курс про то, как Flink устроен изнутри. State backend internals (RocksDB tuning, MemoryStateBackend vs RocksDB vs ForSt), network stack (credit-based backpressure), scheduling (Adaptive scheduler, slot sharing groups), Chandy-Lamport checkpointing на уровне исходного кода. Этот курс предполагает, что текущий вы прошли.

Почему важно знать internals Flink

Stream processing в SQL — глубокое погружение в Flink SQL: temporal joins, pattern matching (MATCH_RECOGNIZE), user-defined functions, custom catalogs. Если ваша работа — построение аналитических pipelines, это направление.

Data Lake архитектура — как Flink интегрируется с Apache Iceberg, Apache Hudi, Delta Lake. Streaming ingestion в lakehouse — горячая тема 2026 года.

Apache Iceberg — глубокое погружение

Kubernetes operators и платформы данных — построение data platform поверх Flink Operator, managed services, multi-tenancy.


Курс построен вокруг Flink 2.2 (релиз май 2026) как baseline. Это самая свежая стабильная версия на момент написания курса. Где уместно, упоминаются:

  • Flink 2.1 (декабрь 2025) — добавил production-ready AI/ML inference в SQL (ML_PREDICT функция).
  • Flink 2.0 (март 2025) — major release с disaggregated state (ForSt state backend), удалением legacy APIs.
  • Flink 1.20 LTS (август 2024) — последний LTS-релиз ветки 1.x, до сих пор используется в legacy кластерах.
  • Flink 1.x EOL’d — версии до 1.20 больше не получают патчи безопасности.

Если у вас в проде Flink 1.x — миграция 1.20 -> 2.x обсуждается в модулях 02 и 15. API-различия для основных операций минимальны, но deployment modes и state backends изменились существенно.

TIP

Все code-примеры написаны для Flink 2.2 API. Если вы запускаете на 1.20 LTS — большинство примеров заработают, но импорты и некоторые сигнатуры могут отличаться. Сообщения об устаревших API из 1.x помечены явно.


Как заниматься

Курс рассчитан примерно на 55 часов активного изучения. Это включает чтение материалов, выполнение hands-on заданий, и работу над capstone в финальном модуле. Темп зависит от вашего бэкграунда — если вы уже работали со stream processing, темп будет в 1.5-2 раза быстрее.

Рекомендуемый ритм: 1-2 модуля в неделю, с реальным запуском кода. Простое чтение без рук на клавиатуре в Flink не работает — слишком много “почему не запускается”, которые понятны только когда сам собрал job, увидел в Web UI, что parallelism не тот, и исправил.

Каждый урок завершается Knowledge Check — вопросом для самопроверки. После каждого модуля — мини-quiz и exam-вопросы. Это не для оценки, а чтобы вы поймали моменты, где материал не отложился.


Попробуй сам

Прежде чем переходить к следующему уроку, выпиши в одно предложение, зачем вам нужен Flink в проекте или карьере. Без этого якоря материал быстро становится абстрактным набором API. Возможные варианты:

  • “Хочу строить CDC-пайплайны из Postgres в OLAP-склады”.
  • “Нужно делать real-time агрегации по Kafka-топикам с миллионами событий в секунду”.
  • “В компании уже есть Flink-кластер, я хочу научиться писать jobs самостоятельно”.
  • “Готовлюсь к роли data platform engineer, Flink — обязательный навык”.

Этот ответ возвращайтесь к нему в конце каждого модуля и проверяйте: “А этот модуль приближает меня к моей цели?”. Если нет — это нормально, не все модули одинаково применимы для всех ролей.


Как создавался курс

Курс создан при участии Claude (Anthropic) как соавтора: ИИ помогал писать материалы, структурировать темы, генерировать примеры кода и диаграммы. Каждая глава проходила ручную сверку с первоисточниками — спецификациями, документацией, исходным кодом рассматриваемых систем — но гарантировать 100% точность невозможно.

Если вы заметили неточность, опечатку или хотите предложить улучшение — напишите в Telegram-группу курса. Это самый ценный вклад в курс, который вы можете сделать.


Углублённое изучение с Claude

Курс рассчитан на самостоятельное изучение, но любая теория быстрее ложится, если задавать вопросы. Рекомендую держать рядом браузерное расширение Claude (claude.com/download) — оно работает с контентом открытой страницы: выделяете кусок урока и спрашиваете напрямую.

Сценарии, которые особенно хорошо работают для углублённого погружения:

  • «Объясни проще» / «дай ещё один пример» — когда формулировка из урока не дошла с первого раза.
  • «Покажи, как это устроено на уровне кода / железа» — когда хочется спуститься на слой ниже того, что даёт урок.
  • «Как это связано с [другая тема курса]» — когда нужно увязать концепцию с тем, что было раньше.
  • «У меня в проекте стек X — как применить?» — когда хочется примерить материал на свой реальный кейс.

Это не замена курсу, а способ ускорить интеграцию материала в вашу картину мира. Если что-то из ответов Claude расходится с уроком — присылайте в Telegram-группу, курс будет уточнён.


Нашли ошибку?

Если заметили неточность, опечатку или хотите предложить улучшение:

Telegram-группа курса
Обсуждение, вопросы, предложения

Telegram-канал

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

@levoely_channel
Новости, обновления, новые курсы

Проверка знанийKnowledge check
В чём принципиальная разница между этим курсом и курсом flink-internals?
ОтветAnswer
Этот курс — про использование Flink как инструмента: API, deployment, production patterns. К концу вы можете писать stateful jobs и катить их в прод. flink-internals — про устройство Flink изнутри: state backend internals, network stack, scheduler, Chandy-Lamport algorithm на уровне исходного кода. Это senior-уровень, предполагающий, что текущий курс пройден. Аналогия: текущий курс — как водить машину; flink-internals — как устроен двигатель и трансмиссия.

Проверьте понимание

Результат: 0 из 0
Концептуальный
Вопрос 1 из 4. Какой главный фокус этого курса (flink-course) в отличие от продолжения flink-internals?

Закончили урок?

Отметьте его как пройденный, чтобы отслеживать свой прогресс

Войдите чтобы оценить урок

Прогресс модуля
0 из 3