Breaking the Microbatch Barrier: The Architecture of Apache Spark Real-Time Mode
В Spark наконец-то начали нормально решать старую проблему: либо у тебя высокопроизводительный ETL, либо стриминг с низкой задержкой. Real-Time Mode - это попытка убрать этот компромисс.
Раньше Structured Streaming строился вокруг microbatch-модели: данные собираются в маленькие батчи, обрабатываются, потом следующий батч. Это удобно, но даёт задержку. Даже если батчи маленькие это всё равно batch.
В Real-Time Mode модель меняется. Вместо дискретных микробатчей появляется более гибридный подход: данные идут непрерывно, а обработка не останавливается между итерациями.
При этом полностью от дискретности не отказываются. Появляется понятие epoch - это не батч, а скорее логический интервал выполнения, который нужен для координации обработки и согласованности. Ключевая идея в том, что эти epochs становятся длиннее, но внутри них данные текут непрерывно.
За счёт этого снижается overhead на планирование, уменьшается latency и исчезают постоянные stop-the-world паузы. Стадии могут выполняться параллельно, а операторы больше не блокируют пайплайн.
В итоге получается что-то между классическим streaming и batch, но с задержками уже ближе к миллисекундам. По сути, Spark уходит от batch disguised as streaming к более честной стриминговой модели.
@tldr_data
Post #27
133
- ❤ 2